同时执行 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 *
我为 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 *