HOWTO · PowerShell
윈도우를 표시하지 않고 PowerShell 스크립트를 실행하는 방법
숨겨진 창이나 작업 스케줄러로 PowerShell 스크립트를 실행하고, 실행 컨텍스트의 제한, 배치 파일, 서비스 대안을 이해하세요.
이 페이지의 내용
Windows에서는 powershell.exe -NoProfile -WindowStyle Hidden -File "C:\Scripts\Task.ps1"로 스크립트를 시작하되, 따옴표로 묶인 경로를 스크립트의 절대 경로로 바꾸세요. -WindowStyle Hidden 매개변수는 PowerShell 창의 모양을 제어합니다. 모든 실행기나 자식 애플리케이션이 보이지 않는 상태를 유지한다고 보장하지는 않습니다.
-WindowStyle Hidden으로 PowerShell 실행하기
실행 대화 상자와 같은 Windows 실행기에서 위 명령을 사용하세요. -File은 스크립트를 지정합니다. 따옴표는 공백이 포함된 경로를 보호합니다. -NoProfile은 프로필 시작 스크립트를 건너뛰므로, 작업은 자체 종속성을 로드해야 합니다.
창의 표시 여부는 호스트와 실행 컨텍스트에 따라 다릅니다. 시작 중에 콘솔이 잠깐 나타날 수 있습니다. 이미 열려 있는 터미널을 숨기는 데 이 명령에 의존하지 마세요. 스크립트가 시작한 애플리케이션은 자체 창을 표시할 수 있습니다. 숨겨진 창은 작업 관리자에서 프로세스를 숨기지도 않습니다.
이 문서의 Windows 실행 지침은 실행되지 않은 예시이며, 관찰된 창 동작이나 명령 출력은 제공되지 않습니다.
배치 파일에서 스크립트 시작하기
run_script.bat에 두 줄을 저장합니다. 첫째는 @echo off, 둘째는 powershell.exe -NoProfile -WindowStyle Hidden -File "C:\Scripts\Task.ps1"입니다. 실행하기 전에 경로를 바꾸세요.
@echo off는 배치 콘솔에서 명령 에코를 억제합니다. 해당 콘솔을 숨기거나, 스크립트의 출력을 억제하거나, 시작 시 깜박임을 막지는 않습니다. 배치 파일은 반복 실행에 편리하지만, 대화형 콘솔이 없는 무인 작업에는 작업 스케줄러가 더 적합합니다.
작업 스케줄러로 스크립트 실행하기
- 작업 스케줄러를 열고 작업 만들기를 선택한 뒤, 작업에 설명이 되는 이름을 지정합니다.
- 일반에서 스크립트와 그 리소스에 접근할 수 있는 계정을 선택합니다. 무인 작업의 경우 사용자 로그온 여부에 관계없이 실행을 선택하고, 메시지가 표시되면 자격 증명을 입력합니다. 이는 비대화형 컨텍스트를 사용합니다. 데스크톱 상호 작용이 필요한 스크립트는 실패할 수 있습니다. 가장 높은 권한으로 실행은 작업에 권한 상승이 필요하고 계정에 그 권한이 있을 때만 활성화하세요. 권한 상승은 표시 여부를 제어하지 않습니다.
- 트리거에서 필요한 일정이나 이벤트를 추가합니다.
- 동작에서 새로 만들기와 프로그램 시작을 선택합니다. 설치된
powershell.exe실행 파일을 선택합니다. 인수 추가에-NoProfile -NonInteractive -WindowStyle Hidden -File "C:\Scripts\Task.ps1"를 입력합니다. 시작 위치를 따옴표 없이C:\Scripts로 설정하고 두 경로를 모두 조정합니다.-NonInteractive는 입력 프롬프트가 사용자를 기다리는 것을 방지합니다. 창을 숨기지는 않습니다. - 작업을 저장하고 마우스 오른쪽 버튼으로 클릭한 뒤 실행을 선택해 수동으로 테스트합니다. 이는 트리거를 기다리지 않고 즉시 시작합니다. 작업의 기록, 마지막 실행 결과, 스크립트의 로그를 검사하세요.
PSExec나 NSSM은 적합한 작업에만 사용하기
Microsoft Sysinternals의 PSExec는 원격 관리나 다른 계정으로의 실행에 적합합니다. -d 옵션은 기다리지 않음을 의미하고, -s는 SYSTEM 계정을 선택합니다. 둘 다 창을 숨기는 스위치가 아닙니다. SYSTEM은 사용자 계정과 다른 리소스 접근 권한을 가집니다. 이러한 옵션은 일반적인 숨김 실행에는 필요하지 않습니다.
**NSSM(Non-Sucking Service Manager)**은 애플리케이션을 Windows 서비스로 감쌉니다. 공식 다운로드 사이트 https://nssm.cc/download에서 구하세요. 서비스 설치에는 관리자 권한이 필요합니다. PowerShell 실행 파일, 스크립트 인수, 작업 디렉터리, 서비스 계정, 로깅, 다시 시작 동작을 신중하게 구성하세요. 대화형 데스크톱이 필요 없는 서비스형 워크로드에 사용하세요. 짧은 예약 스크립트는 대개 작업 스케줄러만으로 충분합니다. 실행 정책 우회는 스크립트 정책 처리를 변경할 뿐 창의 표시 여부를 변경하지 않으며, 창을 숨기는 데 필요하지 않습니다.
스크립트를 테스트하고 올바른 방법 선택하기
먼저 의도한 계정으로 스크립트를 보이게 실행하세요. 파일 권한, 종속성, 절대 경로, 실행 정책 메시지를 확인하세요. 예약된 계정에는 매핑된 드라이브나 프로필 설정이 없을 수 있습니다. 출력과 오류는 해당 계정이 쓸 수 있는 위치에 저장하세요. 창이 사라지는 것은 성공의 증거가 아닙니다.
이 자체 포함된 PowerShell 로깅 예제는 실행되지 않습니다. 완료 메시지를 임시 파일에 쓰고, 읽은 뒤, 나중에 파일을 제거합니다.
$logPath = [System.IO.Path]::GetTempFileName()
try {
'Task completed' | Set-Content -LiteralPath $logPath
Get-Content -LiteralPath $logPath
}
finally {
Remove-Item -LiteralPath $logPath
}
실제 스크립트에서는 안정적인 로그 파일을 유지하고 완료뿐 아니라 실패도 기록하세요. 가끔 사용할 때는 직접 실행, 편의성에는 배치 파일, 무인 트리거에는 작업 스케줄러, 서비스 워크로드에는 NSSM을 선택하세요. 숨김 실행에 의존하기 전에 대상 Windows 컴퓨터에서 데스크톱 종속 동작을 확인하세요.