如果已停止,则启动多个Windows服务

时间:2016-12-13 09:54:50

标签: windows powershell

我已经尝试了以下几个位,我正在尝试创建一个函数来插入另一个PowerShell脚本

function start-OService{
Get-Service service1|?{$_.Status -eq 'Stopped'}|Start-Service
Get-Service service2|?{$_.Status -eq 'Stopped'}|Start-Service
}

这一个......

function start-OService {
$services = 'service1', 'service1'

Get-Service | ? {
$services -contains $_.Name -and $_.Status -eq 'Stopped'
} | Start-Service

}

第一个代码段似乎无法正常运行但我没有收到错误。我可以单独运行每一行但不是我设置的方式。 第二个是我最初的尝试,是从另一个SO问题中获取的。 Get-Service似乎不喜欢包含多个服务的$services变量。

4 个答案:

答案 0 :(得分:1)

试试这个:

function start-OService {
$services = 'service1', 'service1'

    foreach ($service in $services)
    {
        if ((Get-Service $service).Status -eq "Stopped")
        {
        Start-Service $service
        }
    }

}

答案 1 :(得分:1)

一个班轮:

"service1", "service2" | Get-Service | ?{ $_.Status -eq "Stopped" } | Start-Service 

答案 2 :(得分:0)

为了启动在给定时间停止的所有服务,下面的脚本将是有用的

$StoppedServices=Get-Service | where {$_.Status -eq "Stopped"}
foreach ($item in $StoppedServices)
{
$Name=$item.Name
    Start-Service -Name $Name
}

答案 3 :(得分:0)

function start-OService {
$services = 'service1', 'service1'

    $services | % {
        $service =  get-service -name $_;
        if($service.Status -eq [System.ServiceProcess.ServiceControllerStatus]::Stopped)
        {
            Write-Output "Starting $_"
            $service.Start()
        }
    }
}