windows - 如何使用 Powershell 查找、停止和禁用 Windows 服务

标签 windows powershell service

我试图找到一项服务,停止它,然后使用 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/

相关文章:

c# - 如何编写我也可以作为 winforms 程序运行的 c# 服务?

python - 在具有 BST 时区的 Windows 上使用 python datetime.datetime.strptime

c# - 如何从设备管理器获取信息?

Windows 和 Unix 系统的 C++ 套接字

powershell - 在Powershell中将嵌套的哈希表导出到CSV

Android:如何判断服务何时完成

android - 如何从不同的 .apk 连接到远程服务

windows - GUI 元素随 MS Outlook 11.0 对象库 + Outlook 2016 Ver 1702 移动

powershell - 使用通用参数在本地或远程执行Powershell脚本

tfs - 如何使用 PowerShell 批量重命名文件?