Написание сценария powershell для перезапуска - PullRequest
0 голосов
/ 25 октября 2018

Я пытаюсь перезапустить скрипт powershell в случае сбоя.Исходя из пары ссылок, которые я нашел здесь и здесь Я добавил эту строку ...

Invoke-Expression -Command 'cmd /c start powershell.exe -NoExit -file "$PSCommandPath"'

($ PSCommandPath - это путьи имя файла сценария) Что происходит, когда мой сценарий достигает этой точки, так это то, что окно мигает в течение доли секунды, а затем закрывается.

Я думаю (но не уверен), что окноЭто выглядит как консоль PowerShell - она ​​исчезает слишком быстро, чтобы прочитать.

Первый вопрос - почему не работает параметр -noexit - он должен оставить окно нового процесса открытым, даже если есть ошибка.

Второй вопрос - как получитьчтобы это работало, я пробовал различные комбинации команды, включая ....

Invoke-Expression -Command 'cmd /c start powershell.exe -NoExit -file c:\my_dir\my_script.ps1 '
Invoke-Expression -Command 'cmd /c start powershell.exe -NoExit -file $PSCommandPath'
Invoke-Expression -Command 'cmd /c start powershell.exe -NoExit -file "$PSCommandPath"'

Единственная версия, которая работает (почти), это ....

Invoke-Expression -Command ($PSCommandPath)

который перезапускает скрипт, но не делает это в новом окне, он перезапускается в существующем окне (не то, что я ищу).Скрипт имеет права на чтение и выполнение (все пользователи).Это особенно неприятная проблема, так как я уверен, что это работало в прошлом, поэтому может быть системной проблемой, а не скриптом.


Обновление - Iиспользовали выражения Invoke-Express, потому что это то, что я использовал в найденных примерах (и в то время, я уверен, я заставил его работать!)

Это решение работает ....

  Start-Process -FilePath "$PSHOME\powershell.exe" -ArgumentList '-NoExit', '-File', """$PSCommandPath"""

Спасибо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...