我为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
}
我的疑问是在文本文件中提到的所有服务器上并行执行此脚本。这意味着,一旦我开始执行脚本,这应该同时启动服务器上的修补活动,并跟踪所有服务器上的progess,因为此脚本现在只对一个服务器执行。 请帮助我。
答案 0 :(得分:0)
感谢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 *