如果你要安裝的MSI包不止一個,可不能使用Invoke-Item,否則PowerShell不會等待前一個安裝包安裝完畢,就已經(jīng)運行下一個安裝包了。
如果在批處理中,我們可能會使用msiexec file.msi /wait。在PowerShell中也可以借助于msiexec。
先就這些安裝包路徑存儲到數(shù)組中吧:
復(fù)制代碼 代碼如下:
$msi = @("c:\file1.msi", "c:\file2.msi", "c:\file2.msi")
然后使用Start-Process的-wait參數(shù),等到前一個安裝程序運行完畢后,再啟動下一個:
復(fù)制代碼 代碼如下:
foreach($_ in $msi)
{
Start-Process -FilePath msiexec -ArgumentList /i, $_, /qn -Wait
}
另外一個辦法是把輸出結(jié)果重定向一些Null,也能保證程序等待安裝完成:
復(fù)制代碼 代碼如下:
foreach($_ in $msi)
{
msiexec /i $_ /qn | out-null
}
文章出處:http://www.pstips.net/install-multiple-msi-using-powershell.html
您可能感興趣的文章:- 類似rpm包管理器的Windows Installer PowerShell Module簡介
- PowerShell遠程安裝MSI安裝包、EXE可執(zhí)行程序的方法