2015-04-08 64 views
0

我試圖在Windows 7上使用Windows6.1-KB2506143-x64.msu自動更新Powershell,並且有一段時間。以下代碼可以在獨立的ps1文件中正常工作。它在我的主要ps1文件中起作用。但是,從模塊運行時,它會失敗,退出代碼爲-2145124341。這是PS v2中的負面退出代碼被處理錯誤,所以這個數字可能是沒用的,FWIW我有很好的40個其他各種類型的安裝程序在這個模塊中工作。但是,這是我第一次嘗試自動化msu文件,所以也許這裏有一個我尚未發現的已知交互方式?根ps1文件中有成千上萬行代碼在這裏工作,而模塊在那裏不工作,所以追蹤觸發錯誤的東西將會是一個沒有任何跟蹤的野獸。那麼,任何人都有一個想法,我應該從哪裏開始?wusa無提示安裝錯誤

$filePath = 'wusa.exe' 
$argumentList = '"\\PX_SERVER\Rollouts\Microsoft\Windows6.1-KB2506143-x64.msu" /quiet /norestart' 
$exitCode = (Start-Process -filePath:$filePath -argumentList:$argumentList -wait -errorAction:stop -passThru).exitCode 

此外,運行wusa.exe會在腳本文件夾中留下一些碎片,但只有在從模塊運行時纔會發生碎片。這是msu文件的問題,還是僅僅是wusa中的錯誤?或者它是否指出了可能導致問題的原因? 我本來希望能夠通過這個更新來啓用一些新功能,但是在不能自動化和垃圾被遺忘之間,我已經非常接近放棄這個路徑並且繼續瞄準v2。但希望有人能指出我正確的方向,因爲這根本不是我首選的解決方案。

回答

0

一讀幾toughts:

  • 的啓動過程中的參數列表參數需要一個數組工作得很好:

    $argumentList = @("\\PX_SERVER\Rollouts\Microsoft\Windows6.1-KB2506143-x64.msu", "/quiet", "/norestart") 
    
  • wusa.exe需要一個日誌參數:/日誌:c:\ fso \ install.log你可以把它交給你的腳本來檢查這個特定的包嗎?

  • powershell腳本試圖更新powershell ...我不太確定這是否意味着工作......這是唯一的情況下,我將備份在另一個scrpting語言(人,請糾正我,如果我錯了......)

請讓我知道wusa.exe結果/ log命令,感謝

+0

所以,從底部...;)我曾擔心更新PS從PS,所以我嘗試了一個腳本,沒有別的,並且它似乎工作正常。當然,它需要重新啓動,但我的完整腳本已經管理,所以我覺得我很好。至於日誌,我忘了提及,我確實添加了日誌選項,並且我得到的日誌是某種二進制文件,對我來說完全沒用。我將以參數列表的形式查看參數列表,但同樣,它在獨立腳本中工作正常,並且在ps1根目錄下工作正常。它只在psm1文件中失敗,也就是當剩餘文件出現時。 – Gordon

+0

我現在正在查看這兩種情況的位置值,以查看推送和彈出位置是否可能有所幫助。編輯:不,Get-Location在兩種情況下返回相同的路徑。但是模塊的失敗是100%可重複的。精氨酸! – Gordon

+0

而我切換到一個參數數組,也無濟於事。當啓動過程代碼在ps1中時,非數組參數可以正常工作,所以我開始認爲它必須是模塊中的問題,也可能是v2中的錯誤。令人沮喪。 – Gordon