同时执行 PowerShell 脚本

Simultaneous PowerShell script execution

我为 SQL 补丁编写了以下脚本:

    cls
$computers =  Get-Content D:\Abhi\Server.txt
foreach ($line in $computers)
{
    psexec \$line -s -u Adminuser -p AdminPassword msiexec /i D:\SQL_PATCH\rsSharePoint.msi SKIPCA=1 /qb
}

我的疑问是在文本文件中提到的所有服务器上并行执行此脚本。意思是,一旦我开始执行脚本,这应该会同时在服务器上启动补丁 activity 并跟踪所有服务器上的进程,因为这个脚本现在只对一台服务器执行。 请帮助我。

谢谢 Ansgar Wiechers。 这段代码做到了。它有助于在所有服务器上同时执行 .exe 并跟踪它们的状态:

cls
$servers = Get-Content 'D:\Abhi\Server.txt'

$servers | ForEach-Object {$comp = $_

           Start-Job -ScriptBlock {psexec \$input -s -u Adminuser -p AdminPassword C:\SQL_PATCH\SQLServer2008R2SP3-KB2979597-x64-ENU.exe /quiet /action=patch /allinstances /IAcceptSQLServerLicenseTerms} -InputObject $comp}


While (Get-Job -State Running) 
{
    Get-Job | Receive-Job
    #Start-Sleep 2 
    #Write-Host "Waiting for update removal to finish ..."
}  

Remove-Job *