2016-07-11 20 views
0

Team, schrieb ich auf Programm, das einige Software installieren und danach Exit-Code von unten angezeigt.ExitCode Test in Powershell

$SoftwareInstall.ExitCode 

Es gibt 0 zurück und andere Werte hängen von der Installation ab. Ich habe danach einen anderen Ausdruck, der nur ausgeführt wird, wenn der Exite-Code Erfolg ist, also 0 ist. Wie man einen Check dafür mit der Bedingung if einrichtet. Können Sie bitte vorschlagen, wenn unten ist der richtige Weg zu tun

Bitte vorschlagen.

+1

Ja, das wäre der richtige Weg –

+0

Danke! werde es tun. – RishuA

Antwort

1

Ihre Methode ist eine Möglichkeit, aber ich schlage vor, dass Sie eine Switch-Anweisung für die Verarbeitung von Rückgabewerten verwenden. Wenn Sie eine MSI-Datei installiert haben verwenden, dann gibt es mehr Rückgabecodes Sie auf diese Weise leicht handhaben können -

#Check MSIEXEC return value    
    switch ($SoftwareInstall.ExitCode){ 
     #If the uninstallation succeeded 
     0 { } 
     #If the Installation succeeded but requires a reboot 
     3010 { } 
     #If the uninstallation failed 
     default { } 
    } 

Umgang mit Rückgabecodes kann auf diese Weise Code viel einfacher zu lesen und ändern in der Zukunft machen. Es erlaubt Ihnen auch, mehrere verschiedene Fehlercodes ohne zu viele verschachtelte ifs oder if-else-Blöcke zu behandeln.

+0

Code nur Installation der neuesten msi und wenn es Erfolg ist, wird es die Dienste starten. Aus diesem Grund habe ich nicht über den Wechsel nachgedacht, da ich nach der Installation meine Dienste starten muss. Jedes Mal, wenn ich überprüft habe und 0 als Rückgabecode für den Erfolg erhalten habe Bitte, – RishuA

+0

Wenn Sie sicher sind, dass Sie immer nur zwei Blöcke Code benötigen dann ist dein 'if ($ SoftwareInstall.ExitCode -eq 0)' definitiv ausreichend. Wenn Sie jedoch mehr brauchen, dann würde ich definitiv eine switch-Anweisung empfehlen. Zum Beispiel habe ich Powershell-Code, der die Installation und Deinstallation von etwa 10 Paketen automatisiert. Wenn eine Operation erfolgreich ist, aber einen Neustart erfordert, kann die switch-Anweisung diese vor dem nächsten Paket automatisieren. Dies könnte jedoch für Ihre Bedürfnisse übertrieben sein. –

+0

Danke, ab sofort nur 1 msi muss ich arbeiten. – RishuA