如果你要安裝的MSI包不止一個,可不能使用Invoke-Item,否則PowerShell不會等待前一個安裝包安裝完畢,就已經運行下一個安裝包了。
如果在批處理中,我們可能會使用msiexec file.msi /wait。在PowerShell中也可以借助于msiexec。
先就這些安裝包路徑存儲到數組中吧:
復制代碼 代碼如下:
$msi = @("c:\file1.msi", "c:\file2.msi", "c:\file2.msi")
然后使用Start-Process的-wait參數,等到前一個安裝程序運行完畢后,再啟動下一個:
復制代碼 代碼如下:
foreach($_ in $msi)
{
Start-Process -FilePath msiexec -ArgumentList /i, $_, /qn -Wait
}
另外一個辦法是把輸出結果重定向一些Null,也能保證程序等待安裝完成:
復制代碼 代碼如下:
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í)行程序的方法