Остановить 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

если вы включили настройку реестра (глобальное исправление) и действительно хотите запустить автоматически закрывающий скрипт.