Обычно:
Если вы передаете команду (-Command
) или файл сценария (-File
) для выполнения вИнтерфейс командной строки PowerShell (powershell.exe
в Windows PowerShell , pwsh.exe
в PowerShell Core ), PowerShell по умолчанию выполняет команду / сценарий, а затем выходит .
С помощью команды или сценария, указанных для выполнения, вам нужно добавить переключатель -NoExit
, если вы хотите, чтобы новый сеанс оставался открытым.
Предупреждение: (Если вы не вызываете непосредственно изнутри PowerShell с блоком сценария ), позиционным аргументом - т. Е. Ни один из которых не предшествует -Command
или -File
- неявно связан с:
-Command
в Windows PowerShell -File
в PowerShell Core.
Поэтому рекомендуется использовать имя целевого параметра в явном виде.
С Start-Process
(псевдоним start
) :
start powershell { ECHO "hi" }
работает в Windows PowerShell (но не работает)PowerShell Core), но важно отметить, что на самом деле вы не можете передавать блоки скриптов в Start-Process
, только строк .
Start-Process
принимает исполняемое имя (подразумевается -FilePath
параметр) и массив из строка параметров (подразумевается -ArgumentList
/ -Args
параметр).
Если вы передаете блок сценария ({ ... }
), он автоматически строковый , что означает использование его буквального содержимого .
Таким образом, ваша команда - с -NoExit
применяется по желанию - должно быть (с явно названными параметрами):
Start-Process -FilePath powershell -ArgumentList '-NoExit', '-Command', 'ECHO "hi"'