Ich frage mich, ob Sie bitte helfen können? Ich muss ein Powershell-Skript schreiben, um ein MSI-Skript auszuführen.Powershell-Skript - Start-Job & MSIEXEC
Ich muss auch eine Auszeit für den Prozess festlegen (wie die MSIs wir manchmal hängen hängen).
Ich habe gesehen, dass Sie dies mit dem Start-Job acheive können/Wait-Job Prozess
Offensichtlich Sie den Code unten in in einem schweren Zustand der Metzgerei derzeit
Vielen Dank im Voraus
$timeoutSeconds = 20
$uninstall32 = gci "HKLM:\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall" | foreach { gp $_.PSPath } | ? { $_ -match "My File" } | select UninstallString$uninstall64 = gci "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall" | foreach { gp $_.PSPath } | ? { $_ -match "Vix.Cbe.SalesTransaction" } | select UninstallString
Echo "uninstall32 :" $uninstall32
if ($uninstall32) {
$uninstall32 = $uninstall32.UninstallString -Replace "msiexec.exe","" -Replace "/I","" -Replace "/X",""
$uninstall32 = $uninstall32.Trim()
$32p = @("/X", "$uninstall32", "/b")
}
Echo "uninstall32 :" $uninstall32
Echo "u32 :" $32p
$32j = Start-Job msiexec -ArgumentList $32p
if (Wait-Job $32j -Timeout $timeoutSeconds) { Receive-Process $32j }
Remove-Process -force $32j
Also, was ist das Problem? Der von Ihnen bereitgestellte Code sollte in der Regel funktionieren. – majkinetor
Das Problem ist es nicht :) Syntax Fehler, Fehler über Start-Job wollte einen Code-Block nicht eine Zeichenfolge usw. – Nique
Geben Sie Fehler, lesen wir nicht Köpfe oder RAM auf die Entfernung :) Und BTW, trat Sie zwei Zeilen im Skript (Ich weiß nicht, ob aus Versehen beim Kopieren hier oder seine tatsächlich im Skript): 'wählen Sie UninstallString $ uninstall64' – majkinetor