PowerShell-Konsole nach Skriptausführung geöffnet lassen

PowerShell-Konsole nach Skriptausführung geöffnet lassen

Wird ein Skript per Doppelklick oder Rechtsklick und Auswahl von Run With PowerShell oder Open With Windows PowerShell ausgeführt, erscheint dem Benutzer kurz die PowerShell-Konsole, bevor sie wieder verschwindet. Dieses Szenario tritt auf, weil sich das Skript auf natürliche Weise selbst beendet, insbesondere wenn es einen Fehler auslöst.

Wir sehen uns einige Optionen an, um die PowerShell-Konsole geöffnet zu lassen, nachdem das Skript ausgeführt wurde, und gehen sie in diesem Artikel durch.

Stoppen Sie das Beenden von PowerShell

Praktischerweise verfügt Windows PowerShell über ein Schalterargument, das wir beim Ausführen unserer Skripts übergeben können. Dieses Argument wird als -NoExit-Parameter bezeichnet.

Wenn Sie dies beim Ausführen eines Skripts anhängen, wird verhindert, dass die PowerShell-Konsole beendet wird, wenn ein Fehler auftritt oder die Skriptausführung erfolgreich abgeschlossen wurde.

powershell.exe "C:\PS\sample_script.ps1" -NoExit

Dies ist jedoch nur möglich, wenn Sie Ihr Skript extern ausführen oder aufrufen. Was ist, wenn es eine Möglichkeit gibt, den Bildschirm zu halten und zu verhindern, dass er beendet wird, während Sie Ihr Skript in einem Code-Editor wie PowerShell ISE ausführen und bearbeiten?

Es gibt möglicherweise keinen PowerShell-Befehl, um dies nativ zu tun. Wir können jedoch kreativ werden und Methoden entwickeln, um unser Ziel zu erreichen. Bevor wir fortfahren, ist es erwähnenswert, dass Sie den alten Befehl pause verwenden können, um den Bildschirm beim Ausführen eines PowerShell-Skripts anzuhalten.

Ausgabe:

Press any key to continue...

Für den Legacy-Befehl pause gibt es vielleicht kein Gegenstück, aber wir können diesen mit dem PowerShell-Befehl Read-Host nachbauen.

Beispielcode:

Read-Host -Prompt "Press Enter to continue..."

Der einzige Nachteil dieser Methode ist, dass sie im Gegensatz zum Befehl pause keine Tastatureingaben akzeptiert, sondern nur die Enter-Taste, um das Skript zu beenden. Es ist vielleicht nicht ähnlich wie der Befehl pause, aber das obige Snippet hält den Bildschirm trotzdem an, bevor das Skript beendet wird.

Es gibt eine Möglichkeit, das Beenden des Skripts dauerhaft und dauerhaft zu verhindern, indem die Registrierung bearbeitet wird. Da die Registrierung einen Betriebssystembereich hat, wirken sich alle von uns vorgenommenen Änderungen nicht nur auf ein bestimmtes Skript aus, sondern auf alle Skripts, die Sie in Zukunft ausführen werden.

Denken Sie also daran, bevor Sie fortfahren.

Um fortzufahren, sollten wir jetzt zuerst die Registrierung sichern. Wir werden die Registrierungsdateien HKEY_CLASSES_ROOT für diesen Artikel manipulieren, also lassen Sie uns das sichern, indem Sie die Eingabeaufforderung öffnen und den folgenden Befehl ausführen.

reg export HKCR C:\Temp\HKCR.Reg /y

Nachdem wir unsere Registrierung erfolgreich gesichert haben, können wir weiter fortfahren. Kopieren Sie die folgenden Befehle und speichern Sie die Datei mit der Erweiterung .reg.

Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\Applications\powershell.exe\shell\open\command]
@="\"C:\\Windows\\System32\\WindowsPowerShell\\v1.0\\powershell.exe\" -NoExit \"& \\\"%1\\\"\""

[HKEY_CLASSES_ROOT\Microsoft.PowerShellScript.1\Shell\0\Command]
@="\"C:\\Windows\\System32\\WindowsPowerShell\\v1.0\\powershell.exe\" -NoExit \"-Command\" \"if((Get-ExecutionPolicy ) -ne 'AllSigned') { Set-ExecutionPolicy -Scope Process Bypass }; & \\\"%1\\\"\""

Doppelklicken Sie nach dem Speichern auf die neu erstellte reg-Datei, damit die Änderungen wirksam werden. Die obigen Befehle ändern die Ausführungsrichtlinie von PowerShell und schließen standardmäßig den Schalterparameter -NoExit ein, wenn ein PowerShell-Skript ausgeführt wird.

Wenn wir unsere erstellten Skripte ausführen, müssen wir kein -NoExit-Argument hinzufügen.

Marion Paul Kenneth Mendoza avatar Marion Paul Kenneth Mendoza avatar

Marion specializes in anything Microsoft-related and always tries to work and apply code in an IT infrastructure.

LinkedIn