在 CMD 删除一个 Windows 服务,命令是这样的:
sc delete "Service Name"
在 PowerShell 中执行上述命令并没有报错(没有任何提示),但是实际上服务并没有被删除。
这是因为在 PowerShell 中,sc 是 cmdlet Set-Content 的别名,应该这样使用(加上 .exe):
sc.exe delete "Service Name"
PowerShell v6 开始增加了一个新的 cmdlet Remove-Service,可惜 Windows 10 包括 Server 2016、2019 内置的 PowerShell 5.1 并无法识别这个命令 (sysin)。有 Start-Service、Stop-Service 而没有 Remove-Service 显然是“巨硬”的失误。
|
功能
|
启动服务
|
停止服务
|
删除服务
|
|
CDM
|
sc start “Service Name”
|
sc stop “Service Name”
|
sc delete “Service Name”
|
|
PowerShell 调用 CMD
|
sc.exe start “Service Name”
|
sc.exe stop “Service Name”
|
sc.exe delete “Service Name”
|
|
PowerShell
|
Start-Service -name “Service Name”
|
Stop-Service-name “Service Name”
|
Remove-Service-name “Service Name” (慎用!仅在 PS v6 及以上有效)
|
补充:安装服务
PowerShell:New-Service
CMD:没有相关命令,使用 InstallUtil.exe 实用工具,此工具随 .NET Framework 安装在 %WINDIR%\Microsoft.NET\Framework[64] 中。
参看:如何安装和卸载 Windows 服务
原文链接:PowerShell 中删除 Windows 服务的正确方法
恢复删除的服务
如果使用 sc delete “Service Name” 删除掉了某个服务,可以使用相同版本的系统的导出注册表HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\“Service Name”再导入需要恢复服务的系统