Start-Prozess -wait funktioniert nicht, wenn das Skript gestartet wird von der Eingabeaufforderung aus geöffnet mit "runas" oder als geplanter task
Ich habe ein script, das ich ausführen will, als ein geplanter task, aber es tut nicht das was es soll. Ich bin versucht, rufen Sie eine ausführbare Datei mit dem Start-Prozess und die -Warten Sie wechseln, bevor Sie fortfahren. Line ist
Start-Process -FilePath "C:\Pfx Engagement\Admin\Utilities\Backups Restore\BackupRestoreUtil.exe" -ArgumentList "/f
"$backup_directory
"" -Warten
Wenn ich es aufrufen einer Eingabeaufforderung, sprich:
powershell .\script.ps1
es funktioniert. Es führt den Befehl aus und wartet, bis es fertig ist, bevor Sie fortfahren. Es gibt mehr zu dem Skript, das ausgeführt werden, nachdem dieser Befehl abgeschlossen ist. Das problem ist, dass wenn es eine geplante Aufgabe, es wartet nicht. Tun einige grundlegende Fehlerbehebung, versuchte ich zunächst öffnen Sie ein cmd-Fenster mit "runas" mit der geplanten Aufgabe Konto, namens "Scripts." So ich
runas /env /user:cmd-Skripte
öffnen Sie ein Fenster der Eingabeaufforderung mit dem task-account. Aus dieser Eingabeaufforderung, versuche ich wieder die "powershell .\script.ps1" und dieses mal, es wartet nicht. Es führt den Befehl aus und bewegt sich sofort weiter, bevor der Befehl abgeschlossen ist. Also ich dachte, es könnte ein Problem mit dem "Scripts" - Konto, bis ich öffnete eine neue Eingabeaufforderung mit runas Administrator
runas /env /user:Administrator cmd
Wenn ich rufen Sie das Skript von dieser Administrator-Eingabeaufforderung, die -Warten-Schalter wird ignoriert, und das Skript bewegt sich sofort, nachdem Sie es ohne zu warten, für Sie auf fertig stellen.
Den ungeraden Teil über dieses ist, dass wenn ich den Aufruf über die Eingabeaufforderung vom Administrator-Konto ohne "runas" funktioniert es. Gleiche Konto, zwei verschiedene Ergebnisse. Alle Ideen, was zum Teufel ist hier Los, und was ebenso wichtig ist, wie man es beheben?
OS ist Server 2008 R2 ausführen von powershell 3.0
- Nach dem Upgrade von PS 2 zu 3 stieß ich auf das gleiche problem. -Warten Sie arbeitet völlig in Ordnung, in der PS-version 2! Abhilfe warten Sie, bis der Prozess abgeschlossen ist, hat ein riesiges Problem - es nicht zurückgeben .Exit-Code des Prozesses
Du musst angemeldet sein, um einen Kommentar abzugeben.
Kann nicht sagen, warum er es tut, aber ich denke, das könnte es umgehen:
Den -Passthru-Schalter wird die Rückkehr eines Prozess-Objekts für den Prozess, und Sie können testen, um zu sehen, wenn der Prozess beendet wurde.