webentwicklung-frage-antwort-db.com.de

Beenden Sie Powershell

Ich weiß, dass es für PowerShell diesen kleinen -noexit - Schalter gibt.

Gibt es eine Möglichkeit, in der Shell zu bleiben, ohne diesen Schalter zu verwenden?

Mit anderen Worten, ich möchte einen oder mehrere Skriptbefehle, die ausgeführt werden und dann die Shell geöffnet lassen.

17
rhavin

Dieses Skript wird nicht beendet, wenn Sie es ohne Argumente ausführen, z. per Doppelklick darauf:

param($Work)

# restart PowerShell with -noexit, the same script, and 1
if (!$Work) {
    powershell -noexit -file $MyInvocation.MyCommand.Path 1
    return
}

# now the script does something
# this script just outputs this:
'I am not exiting'
14
Roman Kuzmin

Grundsätzlich haben Sie drei Möglichkeiten, um das Schließen des PowerShell-Konsolenfensters zu verhindern, die ich beschreibe ausführlicher in meinem Blog-Beitrag .

  1. Einmalige Korrektur: Führen Sie Ihr Skript in der PowerShell-Konsole aus oder starten Sie den PowerShell-Prozess mit der Option -NoExit. z.B. PowerShell -NoExit "C:\SomeFolder\SomeScript.ps1"
  2. Behebung pro Skript: Fügen Sie am Ende Ihrer Skriptdatei eine Eingabeaufforderung hinzu. z.B. Read-Host -Prompt "Press Enter to exit"
  3. Globale Korrektur: Ändern Sie Ihren Registrierungsschlüssel so, dass das PowerShell Console-Fenster nach Abschluss des Skripts immer geöffnet bleibt.

Weitere Informationen zu den zu ändernden Registrierungsschlüsseln finden Sie in meinem Blog.

Klingt so, als ob Sie nach Option 1 oder 3 suchen.

18
deadlydog

Hast du es versucht

$Host.enternestedprompt()

Dadurch wird die Ausführung gestoppt und auf eine verschachtelte Eingabeaufforderung verwiesen. Wenn sie diese Eingabeaufforderung beenden, wird das Skript beendet und das Fenster geschlossen.

10
mjolinor
"do stuff"
Pause

Ja, genau wie bei der Kommandozeile - Ausgabe:

do stuff
Press Enter to continue...:
3
Kris Morness

Die while-Schleife am Ende dieses einfachen Skripts fordert mich zur Eingabe eines Befehls auf und führt diesen aus. Es läuft mit der Umgebung des Skripts, so dass es möglich ist, die Werte von Variablen zu überprüfen. Die Eingabe von "exit" beendet die Schleife, wenn sie ausgeführt wird.

# Do something.

cd D:\temp
$current_directory = $(pwd)
dir

write-Host  # Just add a little space after the dir

# Stay in the Shell and execute commands.

while ($TRUE) {
  $cmd = Read-Host "PS $(pwd)"
  if ($cmd[0] -eq '"') { iex "& $cmd" } 
    else { iex $cmd }
}

Ich bin sicher, dass andere in der Lage sein werden, einige Verbesserungen zu teilen, aber dies ist ein Anfang. Grüße.

3
Jim Marek

Mir ist kein Befehl bekannt, den Sie im Skript ausführen könnten, der verhindern würde, dass die Shell beendet wird, wenn sie nicht mit dem Befehl -noexit Aufgerufen worden wäre.

Normalerweise verwende ich Read-Host "Press ENTER to continue" Am Ende, wenn die Shell nicht geschlossen werden soll. Dies verhindert jedoch nicht, dass die Shell nach dem Drücken der Eingabetaste geschlossen wird, wenn sie nicht mit -noexit Gestartet wurde.

2
Andy Arismendi

So was?

PowerShell -File  c:\myscript.ps1 -NoExit
1
CB.