Question

Je sais qu'il ya ce petit interrupteur -noexit pour PowerShell.

Y at-il de toute façon de rester dans la coquille sans utiliser ce commutateur?

En d'autres termes, je veux une commande de script (s) qui exécute laisse alors la coquille ouverte.

Était-ce utile?

La solution

Ce script ne sortira pas si vous l'exécutez sans arguments, par exemple en double-cliquant dessus:

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'

Autres conseils

Vous avez essentiellement 3 options pour empêcher la fenêtre de la console PowerShell de se fermer, que je décris plus en détail sur mon blog .

  1. Un temps Fix: Exécuter votre script à partir de la console PowerShell, ou lancer le processus PowerShell à l'aide du commutateur de -NoExit. par exemple. PowerShell -NoExit "C:\SomeFolder\SomeScript.ps1"
  2. Par script Fix: Ajouter une invite pour l'entrée à la fin de votre fichier script. par exemple. Read-Host -Prompt "Press Enter to exit"
  3. Fix global:. Modifier la clé de Registre pour toujours laisser la fenêtre de la console PowerShell ouverte après la fin de l'exécution du script

Voir mon blog pour plus d'informations sur les clés de registre à modifier.

On dirait que vous êtes à la recherche pour l'option n ° 1 ou n ° 3.

Avez-vous essayé

$host.enternestedprompt()

qui arrêtera l'exécution et de les déposer à une invite imbriquée. Quand ils sortent de cette invite, le script se terminera et la fenêtre se fermera.

"do stuff"
Pause

Oui, tout comme commandline - Sortie:

do stuff
Press Enter to continue...:

La boucle while à la fin de ce script trivial me invites pour une commande et l'exécute. Il fonctionne avec l'environnement du script, il est donc possible de vérifier les valeurs des variables. Entrer « exit » met fin à la boucle lorsqu'elle est exécutée.

# 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 }
}

Je suis sûr que d'autres seront en mesure de partager quelques améliorations, mais cela est un début. Cordialement.

Je ne suis pas au courant d'une commande que vous pouvez exécuter dans le script qui empêcherait la coquille de sortir si elle n'a pas été invoqué en utilisant la commande -noexit.

J'utilise généralement Read-Host "Press ENTER to continue" à la fin si je ne veux pas la coquille de fermeture. Toutefois, cela ne sera pas empêcher le shell de fermer après que vous appuyez sur Entrée si elle n'a pas été commencé avec -noexit.

Comme cela?

PowerShell -File  c:\myscript.ps1 -NoExit

Pour ne pas revivre un fil de 6 ans ou quoi que ce soit, mais il convient de noter à la lecture de tous ceux que vous pouvez terminer votre script avec

Stop-Process -processname regedit

si vous avez le coup sec d'enregistrement (correctif global) activé et que vous voulez réellement exécuter un script à fermeture automatique.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top