同时执行PowerShell脚本

时间:2015-06-09 05:12:15

标签: powershell-v2.0

我为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,因为此脚本现在只对一个服务器执行。 请帮助我。

1 个答案:

答案 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 *