Как остановить закрытие PowerShell после выполнения скрипта

Краткое описание PowerShell — одновременно оболочка и язык сценариев. При запуске .ps1-файла двойным щелчком Windows открывает процесс PowerShell, выполняет скрипт и сразу закрывает окно. Ниже — несколько простых и безопасных способов этого избежать, включая примеры кода и советы по выбору метода.
Важные термины
- PowerShell: командная оболочка и язык сценариев.
- -NoExit: параметр запуска, который не закрывает консоль после выполнения команд.
- Enter-PSSession: команда для интерактивной удалённой сессии.
Способы остановить закрытие PowerShell
1. Запустите удалённую сессию интерактивно
Создайте файл с именем execute.ps1 на рабочем столе и вставьте в него этот код:
clear-Host
$br = "`n"; $br
Write-Output 'Step1: Press 1 for Powershell to reload'
Write-Output 'Step2: Press 2 to start remote session'
$br
Write-Host 'This script will' -NoNewline -ForegroundColor Green
Write-Host ' not ' -ForegroundColor Red -BackgroundColor Black -NoNewline
Write-Host 'indicate which step you are on,' -ForegroundColor Green
Write-Host 'if you are not sure, rather press 1 again and then 2.' -ForegroundColor Green
$br
$input = Read-Host 'Enter your choice'
switch($input) {
1 { powershell.exe -NoExit "C:\\Users\\$env:username\\Desktop\\execute.ps1" -NoProfile }
2 {
Clear-Host
Write-Warning 'You are about to connect to the remote server'
# Замените RemoteServerName и domainname на ваши значения
Enter-PSSession -ComputerName RemoteServerName -Credential "domainname\\$env:username"
}
default { Write-Warning 'An error has occurred' }
}Инструкция:
- Запустите execute.ps1.
- При первом запуске нажмите 1 — скрипт перезапустится с ключом -NoExit, окно останется открытым.
- Затем нажмите 2, чтобы начать удалённую сессию с нужным сервером.
Важно: при использовании Enter-PSSession убедитесь, что на целевом хосте включён PowerShell-Remoting и у вас есть соответствующие права.
2. Используйте команду Pause через cmd
Можно вызвать консольную паузу с помощью cmd:
cmd /c pauseЭто отобразит сообщение “Press any key to continue”. Подойдёт при запуске из ярлыка или пакета .bat.
3. Добавьте Read-Host в конец скрипта
Простой и переносимый способ — запрос ввода у пользователя:
Read-Host -Prompt "Нажмите Enter для выхода"Это работает и в PowerShell ISE, и в обычной консоли. Учтите, что команда ждёт нажатия Enter.

4. Запускайте скрипт через -NoExit из локальной оболочки
Создайте файл open.ps1 или ярлык, который вызывает:
powershell.exe -NoExit C:\\remote.ps1remote.ps1 может содержать интерактивную команду, например:
Enter-PSSession -ComputerName YourExchangeServer -Credential (Get-Credential)5. Используйте Start-Sleep для временной паузы
Если нужно просто задержать закрытие на определённое время:
Start-Sleep -s 15Или укажите секунды явно: Start-Sleep -Seconds 60. Для прерывания нажмите Ctrl+C.
Как выбрать метод
- Нужно ввести данные вручную или проверить вывод — используйте Read-Host.
- Нужно отладить и оставить консоль открытой — запускайте с -NoExit.
- Требуется краткая задержка — Start-Sleep.
- Если сценарий запускается из .bat —
cmd /c pauseудобен. - Для удалённого администрирования используйте Enter-PSSession или Invoke-Command.
Шпаргалка команд
powershell.exe -NoExit path\\to\\script.ps1Read-Host -Prompt "..."Start-Sleep -Seconds 30cmd /c pauseEnter-PSSession -ComputerName HOST -Credential (Get-Credential)
Рольные чек-листы
- Системный администратор: использовать -NoExit при отладке; настроить PowerShell-Remoting; проверять права и политики исполнения.
- Разработчик: добавлять Read-Host в dev-скрипты; избегать постоянных пауз в CI.
- Скрипт-автор: документировать требование к интерактивности в начале скрипта.
Мини-методология быстрого теста
- Запустите скрипт двойным щелчком.
- Если окно закрывается — добавьте в конец Read-Host и протестируйте снова.
- Если нужен интерактивный режим — создайте ярлык с -NoExit.
- Для удалённой сессии — проверьте remoting и вход с Enter-PSSession.
Краткий глоссарий
- NoExit: опция запуска PowerShell, не закрывающая окно.
- Read-Host: cmdlet для запроса ввода у пользователя.
- Start-Sleep: cmdlet для временной приостановки выполнения.
Критерии приёмки
- Окно осталось открытым до явного ввода пользователя или завершения таймаута.
- При запуске на сервере удалённая сессия установлена без ошибок.
- Скрипт не блокирует CI/CD пайплайн бессрочно.
Заметки безопасности
- Никогда не храните учётные данные в явном виде в скриптах.
- Для автоматизации предпочтительнее использовать защищённые механизмы — Managed Service Accounts или ключи.
Спасибо за внимание. Оставьте комментарий, какой способ вам помог.
Похожие материалы
RDP: полный гид по настройке и безопасности
Android как клавиатура и трекпад для Windows
Советы и приёмы для работы с PDF
Calibration в Lightroom Classic: как и когда использовать
Отключить Siri Suggestions на iPhone