如何同时执行多个命令

时间:2020-05-13 20:00:22

标签: powershell windows-services

我有停止和启动Windows服务的脚本。目前,它可以通过foreach循环正常运行;但是,这很耗时。我正在寻找一种同时触发所有事件的方法,而不是通过$ computer对象foreach循环并按1执行1。非常感谢

    Foreach ($v in $computers) 
{
    if ($v.value -eq "true") 
    {
        $computers = $v.Name.Split("_")
        Write-Host "Processing " $computers[1]
        StartOrStopService $computers[1] $StartOrStopService.ToLower()          
    }
}

最好的问候

1 个答案:

答案 0 :(得分:0)

我建议使用作业使执行并行进行

Foreach ($v in $computers) 
{
    Invoke-Command -ComputerName . -ScriptBlock {
        Param($v, $StartOrStopService)
        if ($v.value -eq "true") 
        {
            $computers = $v.Name.Split("_")
            Write-Host "Processing " $v.Name
            StartOrStopService $v.Name $StartOrStopService.ToLower()          
        }
    } -AsJob -ArgumentList $v, $startorStopService
}

您可以使用Get-Job |如果想查看命令的输出,请执行Receive-Job。