我试图找到一项服务,停止它,然后使用 Powershell 远程禁用它。它可以找到并停止,但不能禁用。要禁用,我必须运行 Set-Service
分别指挥。可以在一行完成吗?
以下代码片段将停止 打印后台处理程序 服务,但不会禁用它:
$ip = "10.10.10.10"
$svc_name = "Spooler"
get-service -ComputerName $ip | Where-Object {$_.Name -eq $svc_name} | Stop-Service | Set-Service -StartupType Disabled
以下代码片段将停止并禁用 打印后台处理程序 服务:
$ip = "10.10.10.10"
$svc_name = "Spooler"
get-service -ComputerName $ip | Where-Object {$_.Name -eq $svc_name} | Stop-Service
Set-Service $svc_name -StartupType Disabled
Powershell 版本是
5.1.14393.2969
.编辑:
以下行也将查找和禁用。所以,看起来我可以用管道给出两条指令。
get-service -ComputerName $ip | Where-Object {$_.Name -eq $svc_name} | Set-Service -StartupType Disabled
最佳答案
您需要使用 Set-Service
设置启动类型,如您的问题所述:
Set-Service -StartupType Disabled $svc_name
如果你想在“一行”做,你可以使用
-PassThru
关于 Stop-Service
的争论返回可以通过管道发送的服务对象(您也不需要 Where-Object
子句,Get-Service
也可以过滤服务名称):Get-Service -ComputerName $ip $svc_name | Stop-Service -PassThru | Set-Service -StartupType Disabled
您在最初的问题中对此很接近,但它不起作用,因为您没有使用
-PassThru
Stop-Service
上的参数.需要注意的是,许多默认情况下不返回对象的 cmdlet 确实包含 -PassThru
参数返回一个对象,必要时可以进一步处理,这不仅限于 Stop-Service
以任何方式。
关于windows - 如何使用 Powershell 查找、停止和禁用 Windows 服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58508481/