Я пытаюсь написать скрипт для установки программного обеспечения на многих компьютерах. Проблема в том, что они должны быть установлены в определенном порядке, и мне нужно знать, что первая установка удалась, прежде чем запускать вторую.Почему Powershell не возвращает ExitCode в Windows 7
вот важный код:
[...]
# source_one
$Argumente = @("/i", $path_to_source, "/qb", "ADDLOCAL=ALL")
if (!$visWeb_upToDate) {
Write("VIS Web-Client Installation...")
$procWeb = Start-Process msiexec.exe -ArgumentList $Argumente -Verb runAs -PassThru
$procWeb.WaitForExit()
Write-Debug($procWeb.ExitCode)
if ($procWeb.ExitCode -eq 0){
Write("... erfolgreich.")
$visWeb_upToDate = $true;
}
else {
Write-Error("... nicht erfolgreich.")
Write-Error("Bitte Clients manuell installieren.")
}
}
# source_two
if ($visWeb_upToDate -and !$vis64_upToDate){
Write("VIS 64-Bit Client Installation...")
$Argumente[1] = $path_to_another_source
$procWeb64 = Start-Process msiexec.exe -ArgumentList $Argumente -Verb runAs -PassThru
$procWeb64.WaitForExit()
Write-Debug($procWeb64.ExitCode)
if ($procWeb64.ExitCode -eq 0){
Write("... erfolgreich.")
$vis64_upToDate = $true
}
else {
Write-Error("... nicht erfolgreich.")
Write-Error("Bitte 64-Bit Client manuell installieren.")
}
}
[...]
Я не получаю $procWeb.ExitCode
на Windows7 Powershell. На Win8 он отлично работает и устанавливает source_one
и source_two
только на успех первого.
Кто-нибудь знает, как это исправить, или есть ли другой способ установить $visWeb_upToDate = $true
для обеих систем?
Большое спасибо заранее.
прямо сейчас, я пытаюсь ваше предложение. Сейчас это работает. через несколько минут я увижу, работает ли это для каждого отдельного случая. – chrosey