PowerShell 中删除 Windows 服务的正确方法

731 阅读1分钟

作者主页:sysin.org,原创作品,转载请保留出处。

在 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 并无法识别这个命令。有 Start-ServiceStop-Service 而没有 Remove-Service 显然是巨硬的失误。

总结:

功能启动服务停止服务删除服务
CMDsc start "Service Name"sc stop "Service Name"sc delete "Service Name"
PowerShell 调用 CMDsc.exe start "Service Name"sc.exe stop "Service Name"sc.exe delete "Service Name"
PowerShellStart-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]<framework_version> 中。

参看:如何安装和卸载 Windows 服务