是否有 PowerShell 命令告诉 PS 在继续之前不要等待服务启动?

Is there a PowerShell command to tell PS not to wait for a service to start before continuing?

Powershell 在移动到脚本的下一行之前正在等待服务启动或停止,但我需要它在不等待的情况下继续运行。

这背后的想法是,我们需要在多个服务器上启动和停止多个服务,如果我们等待每个服务连续启动,则完整脚本可能需要数小时才能完成 运行。

我在网上看到的都是PowerShell需要一个命令让它等待,但我的经验是PS会在没有收到任何明确命令的情况下等待服务。

Write-host "Starting services..."

## Remote Start XXX services
   Write-Host "Starting XXX services..."
   Get-Service -Name ServiceXXX -ComputerName computerXXX | Start-service
   Get-Service -Name ServiceXXX -ComputerName computerYYY | Start-service
   Get-Service -Name ServiceXXX -ComputerName computerZZZ | Start-service

## Remote Start YYY services
   Write-Host "Starting YYY services..."
   Get-Service -Name ServiceYYY -ComputerName computerAAA | Start-service
   Get-Service -Name ServiceYYY -ComputerName computerBBB | Start-service
   Get-Service -Name ServiceYYY -ComputerName computerCCC | Start-service

理想情况下,我希望代码为 运行,这样 computerYYY 上的 ServiceXXX 就不会等待 computerXXX 上的 ServiceXXX,每个服务依此类推。

在脚本中,我可以选择启动、停止和检查。我们不担心系统在继续之前进行检查。

现在,PS 将 运行 "Waiting for ServiceXXX to start..." 并将重复该消息大约 30 或 40 秒。然后它移动到下一行。一旦我们开始谈论数十个远程服务器和每个服务器上的数十个服务,您就会明白为什么这会花费很长时间。

在后台使用 powershell jobs 到 运行 任务。将它们全部踢掉后,您就可以等待它们完成。像这样:

$jobs = @()
Write-host "Starting services..."

## Remote Start XXX services
   Write-Host "Starting XXX services..."
   $jobs += Start-Job {Get-Service -Name ServiceXXX -ComputerName computerXXX | Start-service}
   $jobs += Start-Job {Get-Service -Name ServiceXXX -ComputerName computerYYY | Start-service}
   $jobs += Start-Job {Get-Service -Name ServiceXXX -ComputerName computerZZZ | Start-service}

## Remote Start YYY services
   Write-Host "Starting YYY services..."
   $jobs += Start-Job {Get-Service -Name ServiceYYY -ComputerName computerAAA | Start-service}
   $jobs += Start-Job {Get-Service -Name ServiceYYY -ComputerName computerBBB | Start-service}
   $jobs += Start-Job {Get-Service -Name ServiceYYY -ComputerName computerCCC | Start-service}

#Now wait for all of them to complete
Wait-Job $jobs