Powershell Get-Service:如何过滤掉已禁用的服务?

Powershell Get-Service:如何过滤掉已禁用的服务?

我正在尝试使用以下方法启动多个服务:

Get-Service SERVICE* | Start-Service

当 Get-Service 返回已禁用的服务时,我遇到以下错误:

    + CategoryInfo          : OpenError: (System.ServiceProcess.ServiceController:ServiceController) [Start-Service],
   ServiceCommandException
    + FullyQualifiedErrorId : CouldNotStartService,Microsoft.PowerShell.Commands.StartServiceCommand

如何过滤掉已禁用的服务?

答案1

您可以使用以下代码。这将停止所有已启动的服务,然后启动所有服务,即使它们之前没有启动过,但也没有被禁用:

get-service SERVICE* | where-object {$_.Status -eq "Running"} `
                     | stop-service

get-service SERVICE* | where-object {$_.StartType -ne "Disabled" `
                            -and     $_.Status -eq "Stopped"} `
                     | start-service

如果所有服务都应该启动(如果没有禁用),则可以使用此代码来简化此过程:

get-service SERVICE* | restart-service

相关内容