윈도우를 표시하지 않고 PowerShell 스크립트를 실행하는 방법
-
PowerShell 스크립트를 창을 표시하지 않고 실행하기 위해
-WindowStyle Hidden
매개변수 사용하기 - PowerShell 스크립트를 창을 표시하지 않고 실행하기 위해 작업 스케줄러 사용하기
- 서드파티 도구를 사용하여 PowerShell 스크립트를 창을 표시하지 않고 실행하기
- 결론

Microsoft의 PowerShell은 기본적으로 Windows 운영 체제에 포함된 도구로, Windows 사용자가 명령줄 인터페이스와 명령을 기반으로 한 자동화 기능을 사용할 수 있게 해줍니다.
PowerShell은 스크립팅 도구이자 자동화 도구이며, 따라서 때때로 어플리케이션이 배경에서 조용히 실행되도록 요구합니다. 이 글에서는 PowerShell 어플리케이션을 배경에서 조용히 실행하고, 배경에서 명령을 실행하는 방법을 살펴보겠습니다.
PowerShell 도구와 통합하여 PowerShell의 숨겨진 기능을 구현할 수 있는 서드파티 도구가 있습니다. 하지만 PowerShell만으로도 이를 쉽게 수행할 수 있는 방법이 있습니다.
PowerShell 스크립트를 창을 표시하지 않고 실행하기 위해 -WindowStyle Hidden
매개변수 사용하기
스크립트 창 숨기기의 간단한 방법은 hidden
유형을 창 스타일로 사용하는 것입니다. 창 스타일 PowerShell 창이 시작 시 잠깐 나타난 후 스크립트 실행 중 숨겨집니다.
PowerShell의 -WindowStyle
매개변수는 PowerShell 창의 모양을 제어할 수 있도록 해줍니다. 스크립트 실행 중 PowerShell 창이 표시되지 않도록 하려면 -WindowStyle Hidden
매개변수를 적용하면 됩니다.
이는 사용자와의 상호작용 없이 자동화가 필요한 작업이나 사용자의 작업 흐름을 방해하고 싶지 않을 때 유용합니다.
-WindowStyle Hidden
매개변수로 PowerShell 스크립트를 실행하는 것은 간단합니다. PowerShell 창을 열고 다음 명령어를 사용하세요:
PowerShell.exe -WindowStyle Hidden { Script you want to execute.. }
명령의 각 부분이 수행하는 작업은 다음과 같습니다:
PowerShell.exe
: 새로운 PowerShell 프로세스를 시작합니다.-WindowStyle Hidden
: 창 스타일을 숨김으로 설정하여 PowerShell 창이 표시되지 않게 합니다.- 실행하려는 스크립트는 중괄호
{}
로 묶여 있습니다.
위 명령의 PowerShell 실행 모습은 아래 이미지에 나타나 있습니다.
입력되면 창이 사라지지만, 어플리케이션은 배경에서 실행됩니다. 아래 배경 프로세스의 이미지에서 PowerShell이 배경 프로세스로 실행되는 모습을 볼 수 있습니다.
이 방법에서는 사용자가 처음에 PowerShell을 보게 됩니다. 따라서 최종 사용자에게 완전히 숨겨지는 것은 아닙니다. 이전에 작업이 예약되었다 하더라도 창이 잠깐 나타난 후 빠르게 숨겨집니다.
배치 파일 사용하기
더 복잡한 스크립트를 처리하거나 여러 번 실행할 계획이라면, 이 방법(PowerShell 명령이 포함된 배치 파일)이 더 조직적이고 효율적일 수 있습니다.
다음 내용을 가진 배치 파일(예: run_script.bat
)을 생성합니다:
@echo off
powershell -WindowStyle Hidden -File "C:\path\to\script.ps1"
@echo off
: 이 명령은 배치 파일이 콘솔 창에 명령을 표시하지 않도록 합니다.powershell -WindowStyle Hidden -File "C:\path\to\script.ps1"
: 이 줄은 PowerShell을 필요한 매개변수와 스크립트 경로와 함께 호출합니다.
위 두 코드 모두 창을 표시하지 않고 PowerShell 스크립트를 실행하는 동일한 목표를 달성하지만, 약간씩 다른 접근 방식을 사용합니다. 그러나 PowerShell의 진정한 숨겨진 기능을 달성하기 위한 다른 간단한 방법도 있습니다.
PowerShell 스크립트를 창을 표시하지 않고 실행하기 위해 작업 스케줄러 사용하기
작업 스케줄러는 특정 시간이나 이벤트에 자동화 작업을 수행할 수 있도록 해주는 Windows 유틸리티입니다. 다양한 작업을 관리하기 위한 폭넓은 사용자 정의 옵션을 제공합니다.
새 작업 생성하기
- 작업 스케줄러 열기: Windows 시작 메뉴에서
"작업 스케줄러"
를 검색하여 열 수 있습니다. "작업 만들기"
로 이동하기: 오른쪽 창에서"작업 만들기"
를 클릭합니다.
작업 설정하기
- 작업 이름 지정: 작업에 대한 이름과 설명을 제공합니다. 이는 작업이 무엇을 하는지를 반영하는 설명적인 것이어야 합니다.
- 작업 트리거 선택하기: 작업을 트리거하는 방법을 선택합니다. 일정 간격(매일, 매주, 매월 등), 로그온 시 등 여러 옵션이 있습니다. 필요에 가장 적합한 트리거를 선택하세요.
트리거 설정하기
- 트리거 세부 사항 선택: 선택한 트리거에 따라 추가 세부 정보를 제공해야 할 수 있습니다. 예를 들어
"일일"
을 선택하면 시간과 빈도를 지정하게 됩니다. - 고급 설정:
"고급 설정"
을 클릭하면 더 정교한 옵션을 설정할 수 있습니다. 이는 작업이 언제, 얼마나 자주 실행될지를 더욱 세부적으로 사용자 정의할 수 있게 합니다.
작업 지정하기
- 작업 선택:
"작업"
단계에서"새로 만들기"
>"프로그램 시작"
을 선택합니다. PowerShell 스크립트를 실행할 예정이기 때문입니다. - 프로그램/스크립트: 시스템에서
powershell.exe
를 찾아 선택합니다. - 인수 추가(선택 사항): 다음을 입력합니다:
-WindowStyle Hidden -File "C:\path\to\script.ps1"
"C:\path\to\your\script.ps1"
를 실제 PowerShell 스크립트 경로로 바꾸세요.
보안 옵션 활성화하기
"가장 높은 권한으로 실행"
이라는 체크박스를 선택합니다. 이렇게 하면 필요할 경우 스크립트가 관리자 권한으로 실행됩니다.
또한 사용자가 로그인 여부에 관계없이 실행
을 클릭하면 작업이 실행될 때 PowerShell 창이 전혀 표시되지 않습니다.
작업 완료 및 테스트하기
작업 요약을 검토하고 "확인"
을 클릭하여 작업을 만듭니다.
작업 스케줄러에서 작업을 우클릭하여 "실행"
을 선택하면 즉시 작업이 실행됩니다. 이를 통해 설정한 트리거에 따라 작업이 실행됩니다.
작업 스케줄러는 지정된 간격이나 이벤트에서 작업을 자동화할 수 있게 해줍니다. 적절한 인수를 사용하여 PowerShell을 트리거하면 스크립트를 조용히 실행할 수 있습니다.
하지만 이 방법은 사용하려는 일부 스크립트의 기능에 영향을 줄 수 있습니다. 따라서 서드파티 도구나 PowerShell에 대한 커뮤니티 확장을 사용하기도 합니다.
서드파티 도구를 사용하여 PowerShell 스크립트를 창을 표시하지 않고 실행하기
서드파티 도구는 추가 기능과 특징을 제공하여 PowerShell의 기능을 확장합니다. PowerShell 스크립트를 창 없이 실행하는 것과 관련하여 이러한 도구는 작업을 원활하게 자동화하는 데 중요한 역할을 합니다.
PSExec
사용하기
PSExec
는 Sysinternals
(현재는 Microsoft의 일부)의 다목적 도구로, 원격으로 프로세스를 실행할 수 있게 해줍니다. 이를 사용하여 PowerShell 스크립트를 조용히 실행할 수 있습니다.
psexec -d -s powershell -WindowStyle Hidden -File "C:\path\to\script.ps1"
psexec
:PSExec
을 시작합니다.-d
:PSExec
이 명령의 완료를 기다리지 않도록 지시합니다.-s
: 시스템 권한으로 명령을 실행합니다.powershell -WindowStyle Hidden -File "C:\path\to\script.ps1"
: PowerShell 스크립트를 조용히 실행합니다.
NSSM (Non-Sucking Service Manager)
사용하기
NSSM
은 Windows용 서비스 관리자이며, 모든 어플리케이션을 서비스로 실행할 수 있게 해줍니다. 이는 배경에서 스크립트를 조용히 실행하는 데 특히 유용할 수 있습니다.
- 공식 웹사이트에서 NSSM을 다운로드하고 설치합니다.
- 관리자 권한으로 명령 프롬프트를 엽니다.
- 다음 명령어를 실행하여 새 서비스를 생성합니다:
nssm install <ServiceName> "C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe" "-NoLogo -NonInteractive -ExecutionPolicy Bypass -File C:\path\to\script.ps1"
nssm install <ServiceName>
: 지정된 이름으로 새 서비스를 설치합니다."C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe"
: PowerShell 실행 파일의 경로를 지정합니다."-NoLogo -NonInteractive -ExecutionPolicy Bypass -File C:\path\to\script.ps1"
: PowerShell에 매개변수를 전달하여 스크립트를 조용히 실행하도록 지시합니다.
결론
PowerShell은 Windows 사용자에게 강력한 자동화 도구로, 광범위한 명령 줄 기능을 제공합니다. 조용한 배경 실행이 필요한 시나리오에서 여러 가지 방법이 존재합니다.
-WindowStyle Hidden
매개변수 사용하기: 이것은 스크립트 실행 중 PowerShell 창이 숨겨지기 전에 잠깐 보이게 합니다. 이는 사용자와의 상호작용 없이 자동화가 필요한 작업에 적합합니다.- 배치 파일: 복잡하거나 반복되는 스크립트를 실행하기 위한 조직적 방법입니다. 배치 파일은 필요한 매개변수와 함께 PowerShell을 호출합니다.
- 작업 스케줄러: 특정 시간이나 이벤트에서 자동화를 제공합니다. 적절한 매개변수로 PowerShell을 실행하도록 구성하면 스크립트를 조용히 실행할 수 있습니다.
- 서드파티 도구(
PSExec
,NSSM
등): PowerShell의 기능을 확장하여 창 없이 스크립트를 실행할 수 있게 해줍니다.
필요와 작업 흐름에 가장 적합한 방법을 선택하세요.
Nimesha is a Full-stack Software Engineer for more than five years, he loves technology, as technology has the power to solve our many problems within just a minute. He have been contributing to various projects over the last 5+ years and working with almost all the so-called 03 tiers(DB, M-Tier, and Client). Recently, he has started working with DevOps technologies such as Azure administration, Kubernetes, Terraform automation, and Bash scripting as well.