스크립트 실행 후 PowerShell 콘솔을 열린 상태로 유지

Marion Paul Kenneth Mendoza 2022년6월13일
스크립트 실행 후 PowerShell 콘솔을 열린 상태로 유지

스크립트를 두 번 클릭하거나 마우스 오른쪽 버튼으로 클릭하고 PowerShell로 실행 또는 Windows PowerShell로 열기를 선택하여 스크립트를 실행하면 사용자는 사라지기 전에 PowerShell 콘솔이 잠시 나타나는 것을 볼 수 있습니다. 이 시나리오는 특히 오류가 발생하는 경우 스크립트가 자동으로 자체 종료되기 때문에 발생합니다.

스크립트가 실행된 후 PowerShell 콘솔을 열어 두는 몇 가지 옵션을 살펴보고 이 문서에서 이에 대해 살펴보겠습니다.

PowerShell 종료 중지

편리하게도 Windows PowerShell에는 스크립트를 실행할 때 전달할 수 있는 스위치 인수가 있습니다. 이 인수를 -NoExit 매개변수라고 합니다.

스크립트를 실행할 때 이를 추가하면 오류가 발생하거나 스크립트 실행이 성공적으로 완료되었을 때 PowerShell 콘솔이 종료되지 않습니다.

powershell.exe "C:\PS\sample_script.ps1" -NoExit

그러나 이것은 외부에서 스크립트를 실행하거나 호출하는 경우에만 가능합니다. PowerShell ISE와 같은 코드 편집기에서 스크립트를 실행하고 편집하는 동안 화면을 잡고 종료하는 것을 방지할 수 있는 방법이 있다면 어떻게 될까요?

기본적으로 이 작업을 수행하는 PowerShell 명령이 없을 수 있습니다. 그러나 우리는 창의적이고 목표를 달성하기 위한 방법을 만들 수 있습니다. 계속 진행하기 전에 PowerShell 스크립트를 실행할 때 레거시 명령 pause를 사용하여 화면을 유지할 수 있다는 점에 유의해야 합니다.

출력:

Press any key to continue...

pause 레거시 명령에 대응하는 항목이 없을 수도 있지만 Read-Host PowerShell 명령을 사용하여 이를 다시 만들 수 있습니다.

예제 코드:

Read-Host -Prompt "Press Enter to continue..."

이 방법의 유일한 주의 사항은 pause 명령과 달리 키보드 입력을 허용하지 않고 스크립트를 종료하기 위해 Enter 키만 허용한다는 것입니다. pause 명령과 유사하지 않을 수 있지만 위의 스니펫은 스크립트를 종료하기 전에 화면을 계속 유지합니다.

레지스트리 편집을 통해 스크립트가 종료되지 않도록 영구적이고 지속적으로 방지하는 방법이 있습니다. 레지스트리에는 운영 체제 범위가 있으므로 우리가 수행할 모든 변경 사항은 하나의 특정 스크립트뿐만 아니라 앞으로 실행할 모든 스크립트에 영향을 미칩니다.

따라서 계속하기 전에 이것을 염두에 두십시오.

이제 계속 진행하려면 먼저 레지스트리를 백업해야 합니다. 이 기사에서 HKEY_CLASSES_ROOT 레지스트리 파일을 조작할 것이므로 명령 프롬프트를 열고 다음 명령을 실행하여 백업해 보겠습니다.

reg export HKCR C:\Temp\HKCR.Reg /y

이제 레지스트리를 성공적으로 백업했으므로 계속 진행할 수 있습니다. 아래 명령을 복사하고 .reg 확장자로 파일을 저장합니다.

Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\Applications\powershell.exe\shell\open\command]
@="\"C:\\Windows\\System32\\WindowsPowerShell\\v1.0\\powershell.exe\" -NoExit \"& \\\"%1\\\"\""

[HKEY_CLASSES_ROOT\Microsoft.PowerShellScript.1\Shell\0\Command]
@="\"C:\\Windows\\System32\\WindowsPowerShell\\v1.0\\powershell.exe\" -NoExit \"-Command\" \"if((Get-ExecutionPolicy ) -ne 'AllSigned') { Set-ExecutionPolicy -Scope Process Bypass }; & \\\"%1\\\"\""

저장한 후 변경 사항을 적용하려면 새로 생성된 reg 파일을 두 번 클릭하십시오. 위의 명령은 PowerShell의 실행 정책을 변경하고 PowerShell 스크립트를 실행할 때 기본적으로 -NoExit 스위치 매개변수를 포함합니다.

생성된 스크립트를 실행할 때 -NoExit 인수를 추가할 필요가 없습니다.

Marion Paul Kenneth Mendoza avatar Marion Paul Kenneth Mendoza avatar

Marion specializes in anything Microsoft-related and always tries to work and apply code in an IT infrastructure.

LinkedIn