Остановить Powershell от выхода
Я знаю, что для PowerShell есть этот маленький переключатель -noexit
.
В любом случае, оставайтесь в оболочке без использования этого переключателя?
Другими словами, я хочу, чтобы команда script, которая выполняется, затем оставляет оболочку открытой.
Ответы
Ответ 1
Этот script не будет завершен, если вы запустите его без аргументов, например. дважды щелкнув по нему:
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'
Ответ 2
В основном у вас есть 3 варианта предотвращения закрытия окна консоли PowerShell, что я более подробно описываю
Пер- script Исправление: Добавьте приглашение для ввода в конец вашего файла script. например Read-Host -Prompt "Press Enter to exit"
Глобальное исправление: Измените свой раздел реестра, чтобы он всегда закрывал окно консоли PowerShell после завершения script.
См. мой блог для получения дополнительной информации о том, какие ключи реестра необходимо изменить.
Похоже, вы ищете вариант # 1 или # 3.
Ответ 3
Вы пробовали
$host.enternestedprompt()
Это остановит выполнение и отбросит их во вложенное приглашение. Когда они выйдут из этого приглашения, закончится script, и окно закроется.
Ответ 4
"do stuff"
Pause
Да, точно так же, как commandline - output:
do stuff
Press Enter to continue...:
Ответ 5
Цикл while в конце этого тривиального script предлагает мне команду и выполняет ее. Он работает со средой script, поэтому можно проверить значения переменных. Ввод "exit" завершает цикл, когда он выполняется.
# 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 }
}
Я уверен, что другие смогут поделиться некоторыми уточнениями, но это начало. С наилучшими пожеланиями.
Ответ 6
Мне не известно о команде, которую вы могли бы запустить в script, которая предотвратила бы выход из оболочки, если бы она не была вызвана с помощью команды -noexit
.
Обычно я использую Read-Host "Press ENTER to continue"
в конце, если я не хочу, чтобы оболочка закрывалась. Однако это не помешает закрытию оболочки после нажатия кнопки ввода, если она не была запущена с помощью -noexit
.
Ответ 7
Как это?
PowerShell -File c:\myscript.ps1 -NoExit
Ответ 8
Не возрождать 6-летнюю нить или что-то еще, но следует заметить, что кто-то читает, что вы можете закончить свой скрипт
Stop-Process -processname regedit
если вы включили настройку реестра (глобальное исправление) и действительно хотите запустить автоматически закрывающий скрипт.