윈도우11 작업 스케줄러에서 스크립트 자동 실행하는 방법 (관리자 권한, 예약 실행, 백그라운드)

🏷️ 윈도우11

윈도우11 작업 스케줄러에 PowerShell, bat 스크립트를 등록해 자동 실행하려면, 인터프리터(powershell.exe·cmd.exe)를 실행 파일로 두고 스크립트 경로는 인수로 넘기는 3가지 옵션 규칙을 설정해야 합니다. 예약 시각, 주기, 이벤트 발생 같은 실행 시점 조건은 트리거 탭에서 별도 지정하며, 매일·매주·시스템 시작 시·특정 이벤트 로그 발생 시 등 5가지 트리거 유형이 제공됩니다.

윈도우11 빌드 22631 기준으로 작업 스케줄러의 작업 만들기 대화상자에서 동작 탭은 프로그램/스크립트, 인수 추가, 시작 위치 3개 입력 칸으로 구성됩니다.

옵션 입력값을 잘못 넣으면 결과 코드는 0x0으로 성공 표시되지만 스크립트가 실제로는 실행되지 않고, 여기에 UAC 바이패스(가장 높은 수준의 권한으로 실행)와 백그라운드 실행(사용자의 로그온 여부에 관계없이 실행) 옵션이 결합되면 로그오프 상태에서 관리자 스크립트가 오류 표시 없이 조용히 실패하는 상황이 발생합니다.

1. 윈도우11 작업 스케줄러에 스크립트 등록해 자동 실행하는 방법

작업 스케줄러 라이브러리에 새 폴더를 만들고 그 안에 작업 만들기

작업 스케줄러를 열려면, Win + R로 실행 창을 열고 taskschd.msc를 입력합니다. 왼쪽 트리에서 작업 스케줄러 라이브러리를 우클릭해 ‘새 폴더’를 선택하고 이름을 입력하면, 개인 작업이 시스템 기본 작업과 섞이지 않아 관리가 편해집니다.

새로 만든 폴더를 선택한 상태에서 우측 작업 만들기를 눌러야 세부 옵션이 모두 노출됩니다. 기본 작업 만들기 마법사는 가장 높은 수준의 권한으로 실행, 사용자의 로그온 여부에 관계없이 실행 옵션이 없기 때문에 스크립트 자동화 용도에는 부적합합니다.

작업 만들기 대화상자는 상단에 일반, 트리거, 동작, 조건, 설정 5개 탭이 있으며, 이 글에서는 스크립트 등록에 필수인 일반·트리거·동작 탭과 노트북 사용자에게 영향을 주는 조건 탭을 다룹니다. 일반 탭에서는 작업을 식별할 이름을 반드시 입력하고, 필요 시 설명을 덧붙입니다. 이름은 작업 스케줄러 목록에 그대로 표시되므로 스크립트의 용도를 알아볼 수 있게 지정합니다.

동작 탭의 새 동작 만들기 창 입력 규칙

동작 새로 만들기 화면에서 인터프리터와 스크립트 경로, 인수 설정하기

작업 만들기 대화상자가 열리면 상단 탭에서 동작을 선택하고 하단 새로 만들기 버튼을 누릅니다. 새 동작 만들기 창이 뜨면 상단 동작 드롭다운이 프로그램 시작으로 기본 설정되어 있고, 그 아래에 프로그램/스크립트, 인수 추가(선택 사항), 시작 위치(선택 사항) 입력 칸이 세로로 나타납니다.

.ps1 또는 .bat 파일 경로를 프로그램/스크립트에 바로 넣으면 스케줄러 실행이 실패합니다. 파일을 바로 등록하는 것이 아니라 인터프리터를 실행 파일로 지정하고, 스크립트 경로는 인수로 넘기는 구조로 등록해야 합니다.

인터프리터 실행 파일의 기본 경로는 다음과 같습니다.

인터프리터실행 파일 경로
PowerShell 5.1C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe
명령 프롬프트(cmd)C:\Windows\System32\cmd.exe
PowerShell 7(pwsh)C:\Program Files\PowerShell\7\pwsh.exe

세 경로 모두 시스템 PATH 환경 변수에 등록되어 있어 프로그램/스크립트 칸에 파일명만 입력해도 인식되지만, SYSTEM 계정으로 실행하는 작업은 사용자 PATH가 아닌 시스템 PATH만 참조하므로 절대 경로를 명시하는 편이 안전합니다.

특히 PowerShell 7(pwsh.exe)은 별도 설치 항목이라 설치 경로가 다를 수 있으니 파일 탐색기에서 실제 위치를 확인 후 입력합니다.

대상프로그램/스크립트인수 추가시작 위치
PowerShell(.ps1)powershell.exe-NoProfile -ExecutionPolicy Bypass -File "backup.ps1"C:\Scripts
배치(.bat, .cmd)cmd.exe/c "cleanup.bat"C:\Scripts
PowerShell 7(.ps1)pwsh.exe-NoProfile -ExecutionPolicy Bypass -File "report.ps1"C:\Scripts

인수의 -NoProfile은 프로필 로드 시간을 없애고, -ExecutionPolicy Bypass는 서명되지 않은 스크립트의 정책 차단을 우회합니다. 인수 지정 방식은 시스템 전체 실행 정책을 바꾸지 않고 해당 작업에서만 예외를 두기 때문에, 보안 측면에서 시스템 정책 변경보다 낫습니다.

시작 위치는 선택 사항으로 보이지만 스크립트가 상대 경로로 파일을 읽거나 쓰는 경우 반드시 스크립트가 있는 폴더 경로를 지정해야 합니다.

시작 위치를 비워두면 스크립트 내부에서 참조하는 .\config.json 같은 상대 경로가 C:\Windows\System32를 기준으로 해석되어 실행이 실패하므로 스크립트 파일이 위치한 폴더를 직접 지정합니다.

트리거 설정과 조건 옵션

작업 스케쥴러의 트리거 설정에서 스크립트를 자동 실행할 날짜, 시간 규칙 지정하기

트리거 탭의 작업 시작 드롭다운은 예약 상태, 로그온 시, 시작 시, 유휴 상태, 이벤트 시 등을 제공합니다.

매일 정해진 시간에 실행하려면 예약 상태, PC 부팅과 동시에 실행하려면 시작 시, 특정 이벤트 로그 발생 시 실행하려면 이벤트 시를 선택합니다. 예약 상태를 선택하면 하단에 한 번, 매일, 매주, 매월 4가지 주기 옵션이 나타나고, 시작 날짜·시간·반복 간격을 지정합니다.

노트북 사용자는 조건 탭의 기본값을 확인해야 합니다. 컴퓨터의 AC 전원이 켜져 있는 경우에만 작업 시작 옵션이 기본 활성화되어 있어, 배터리 상태에서는 예약 시간이 되어도 실행되지 않습니다. 노트북에서 사용한다면 이 옵션 체크를 해제합니다.

2. UAC 창 없이 관리자 권한으로 스크립트 실행하는 방법

작업 스케줄러 일반 탭의 보안 옵션에서 가장 높은 수준의 권한으로 실행 체크하기

관리자 권한 스크립트를 UAC 권한 확인 창 없이 자동 실행하려면, 작업 속성 일반 탭 하단 보안 옵션 그룹에서 가장 높은 수준의 권한으로 실행을 체크합니다.

UAC 프롬프트는 사용자 세션에서 관리자 토큰을 요청할 때 발생하는 것이므로, 작업 스케줄러 서비스가 직접 상승된 토큰을 발급하는 이 방식에서는 알림 창 자체가 발생하지 않습니다.

마이크로소프트 공식 문서 Task Security Context에 따르면, 가장 높은 수준의 권한으로 실행 옵션을 체크하면 작업 스케줄러가 최소 권한(UAC) 토큰이 아닌 상승된 권한 토큰으로 작업을 실행합니다. UAC 자체를 우회하는 것이 아니라 토큰 발급 주체가 사용자 세션에서 작업 스케줄러 서비스로 바뀌는 구조입니다.

계정 조건

가장 높은 수준의 권한으로 실행 옵션은 등록에 사용된 사용자 계정이 관리자 그룹에 속해 있을 때만 유효합니다. 표준 사용자 계정에서 작업을 만들면 가장 높은 수준의 권한으로 실행 체크박스는 활성화되지만, 실제 실행 시 권한이 상승되지 않고 관리자 권한이 필요한 명령은 그대로 실패합니다.

표준 사용자 환경에서 관리자 스크립트를 자동 실행하려면 관리자 그룹에 속한 별도 계정으로 작업을 등록해야 합니다.

등록 자체를 표준 사용자 세션에서 진행하려면 runas /user:AdminAccount taskschd.msc로 작업 스케줄러를 관리자 계정으로 실행한 뒤 작업을 등록합니다.

UAC 알림 수준과의 관계

가장 높은 수준의 권한으로 실행UAC 알림 수준(제어판 > 사용자 계정 > 사용자 계정 컨트롤 설정 변경)과 독립적으로 동작합니다.

UAC를 기본값(항상 알림)으로 유지해도 스크립트 작업만 알림 창 없이 실행됩니다. UAC 자체를 꺼서 우회하는 방식과 달리 다른 응용 프로그램의 권한 상승 요청은 여전히 알림 창이 열리므로 시스템 전체 보안 수준이 유지됩니다.

3. 사용자 로그인 없이 백그라운드로 스크립트 실행하는 방법

작업 스케줄러의 보안 옵션에서 사용자의 로그온 여부에 관계없이 실행 활성화

사용자가 로그오프하거나 잠금 상태여도 스크립트가 실행되게 하려면, 일반 탭 보안 옵션 그룹의 라디오 버튼에서 사용자의 로그온 여부에 관계없이 실행을 선택합니다.

이 옵션을 고르면 하단의 암호를 저장하지 않음 체크박스가 활성화되며, 세션 0(비대화형 서비스 세션)에서 작업이 실행되기 때문에 실행 계정 선택에 따라 동작 방식과 제약이 크게 달라집니다.

세션 0은 윈도우가 서비스·시스템 프로세스 전용으로 분리해 둔 세션으로, 사용자 화면·키보드 입력과 완전히 격리되어 있어 창을 띄우거나 사용자와 상호작용할 수 없습니다. 사용자가 로그인해 사용하는 세션 1 이상과 분리되어 있기 때문에, 로그오프 상태에서도 세션 0의 작업은 계속 실행됩니다.

실행 계정별 로그온 옵션 비교

실행 계정저장 자격증명특징주의점
사용자 계정 + 암호 저장필요해당 사용자의 프로필·매핑된 네트워크 드라이브 접근 가능사용자 암호 변경 시 작업이 즉시 실패, 재입력 필요
사용자 계정 + S4U(암호 저장 안 함)불필요암호 관리 불필요, 암호 변경에 영향 없음로컬 리소스만 접근 가능, 네트워크 리소스 접근 불가
NT AUTHORITY\SYSTEM불필요최고 권한, 자격증명 관리 필요 없음사용자 프로필·GUI 요소 접근 불가, HKCU 대신 HKU.DEFAULT 참조

S4U(Service for User) 방식은 작업 등록 시 자격증명 입력 창의 암호를 저장하지 않음 체크박스로 활성화됩니다.

마이크로소프트 기술 블로그 Help! My Scheduled Task does not run… 문서는 S4U가 컴퓨터에 암호를 저장할 필요를 없애준다고 설명합니다. 다만 S4U 방식은 로그온 세션이 네트워크 자격증명을 갖지 않기 때문에, SMB 공유나 도메인 리소스에 접근하는 스크립트는 실패합니다.

SYSTEM 계정 선택 시의 주의점

작업 스케줄러 실행 계정을 system으로 변경하기

SYSTEM 계정으로 지정하려면 일반 탭의 사용자 또는 그룹 변경 버튼을 누르고, 계정 선택 창의 이름 입력란에 SYSTEM을 입력한 뒤 이름 확인을 클릭합니다. 자동으로 NT AUTHORITY\SYSTEM으로 변환되며 확인을 누르면 실행 계정이 SYSTEM으로 지정됩니다.

NT AUTHORITY\SYSTEM으로 실행하는 작업은 가장 높은 수준의 권한으로 실행 체크와 무관하게 최고 권한으로 실행됩니다. 자격증명 저장이 필요 없어 관리가 쉬운 대신, 세션 0에서만 실행되므로 GUI 요소가 있는 스크립트는 응답 없이 멈춥니다.

예를 들어 스크립트 안에 Read-Host, Write-Host 뒤의 일시 정지, 메시지 박스, 사용자 확인 팝업이 있으면 작업 스케줄러 상태는 실행 중으로 남고 스크립트 프로세스는 종료되지 않습니다. 스크립트가 실행 중에 연 GUI 프로세스도 마찬가지로 세션 0에 갇혀 사용자에게 보이지 않고 리소스만 점유합니다.

SYSTEM 계정으로 실행할 스크립트는 다음 조건을 만족해야 합니다.

  • 사용자 입력·GUI 요소 완전 제거
  • 로그는 화면 출력이 아닌 파일로 기록 (Start-Transcript, >> log.txt)
  • 사용자 프로필 경로($env:USERPROFILE) 대신 절대 경로 사용
  • 레지스트리 접근 시 HKCU가 아닌 HKLM 또는 명시적 SID 경로 사용

파일 시스템 권한도 확인이 필요합니다. 스크립트가 특정 사용자 폴더에 파일을 쓰는 경우 SYSTEM 계정에 해당 폴더의 쓰기 권한이 없으면 실패하므로, 대상 폴더의 보안 탭에서 SYSTEM 계정 권한을 확인합니다.

4. 등록한 스크립트가 실행되지 않을 때 진단하는 방법

작업 스케줄러 화면상 마지막 실행 결과가 0x0이면 성공이지만, 실제 스크립트는 아무 결과도 남기지 않는 경우가 발생합니다. 이때는 결과 코드를 먼저 확인하고, 시작 위치·실행 정책·계정 권한 3가지 원인을 순서대로 대조합니다.

결과 코드 조회와 이력 활성화

윈도우 작업 스케줄러 실행 결과 코드 확인 및 모든 작업 기록 사용 활성화

작업 스케줄러 상단 작업 목록에는 마지막 실행 시간, 마지막 실행 결과 열이 있어, 등록된 작업을 선택하지 않아도 목록에서 바로 최근 실행 여부와 결과 코드를 확인할 수 있습니다. 열이 보이지 않는다면 목록 상단 헤더를 우클릭해 마지막 실행 시간, 마지막 실행 결과 항목을 활성화합니다.

상세 실행 이력을 보려면 우측 작업 창의 모든 작업 기록 사용을 클릭해 이력 기능을 켭니다. 기본값이 비활성화되어 있어 처음 진단할 때 기록 탭이 비어 있는 것으로 오해하기 쉽습니다. 기록 기능을 켠 뒤에는 작업 목록에서 해당 작업을 선택하고 하단 창의 기록 탭을 열면 실행 시각·결과 코드·이벤트 ID가 시간순으로 표시됩니다.

주요 결과 코드는 다음과 같이 해석합니다.

기본값이 비활성화되어 있어 처음 진단할 때 이력 탭이 비어 있는 것으로 오해하기 쉽습니다. 기록 기능을 켠 뒤에는 작업 목록에서 해당 작업을 선택하고 하단 창의 기록 탭을 열면 실행 시각·결과 코드·이벤트 ID가 시간순으로 표시됩니다.

주요 결과 코드는 다음과 같이 해석합니다.

결과 코드의미대응
0x0정상 종료스크립트 내부 로직 확인
0x1일반 오류스크립트 반환값 확인, 로그 파일 검토
0x41301현재 실행 중이전 실행이 종료되지 않음, 프로세스 강제 종료 필요
0x41303작업이 아직 실행되지 않음트리거 조건 미충족, 조건 탭 재확인
0x8007010B지정된 경로를 찾을 수 없음시작 위치 또는 스크립트 경로 오류
0x800710E0조건이 충족되지 않음AC 전원, 유휴 상태 등 조건 탭 옵션 재검토

실패 원인 3가지 대조

작업 이력 탭에서 오류를 확인한 다음 아래 3가지를 순서대로 점검하면 실패 원인 대부분을 찾을 수 있습니다.

첫 번째, 시작 위치 미지정입니다. 스크립트 내부에서 .\config.json, .\log\ 같은 상대 경로를 사용하는데 시작 위치를 비워두면, 작업 스케줄러는 기본 작업 디렉터리를 기준으로 상대 경로를 해석해 파일을 찾지 못합니다. 스크립트 파일이 저장된 폴더의 절대 경로를 시작 위치 칸에 입력합니다.

두 번째, 실행 정책 차단입니다. -ExecutionPolicy Bypass 인수를 빠뜨린 상태로 서명되지 않은 .ps1을 실행하면 AllSigned 또는 RemoteSigned 정책에서 차단됩니다. 동작 탭의 인수 추가 칸에 -ExecutionPolicy Bypass가 포함되었는지 확인합니다.

세 번째, 계정 권한 부족입니다. 표준 사용자 계정으로 등록된 작업에 가장 높은 수준의 권한으로 실행을 체크해도 관리자 권한은 부여되지 않습니다. 스크립트가 관리자 권한이 필요한 명령(Get-Service 상태 변경, 레지스트리 HKLM 쓰기 등)을 실행한다면 관리자 그룹 계정으로 작업을 재등록합니다.

수동 실행 테스트

트리거를 기다리지 않고 즉시 실행해 결과를 확인하려면, 작업 목록에서 해당 작업을 우클릭하고 실행을 선택합니다. 결과 코드와 이력이 즉시 갱신되어 진단 속도를 높일 수 있습니다.

마치며

작업 스케줄러의 스크립트 자동 실행은 동작 탭의 새 동작 만들기 입력 규칙, 최고 권한 옵션, 로그온 옵션 3가지의 조합으로 결정됩니다.

UAC 팝업 창은 가장 높은 수준의 권한으로 실행으로 우회되지만 등록 계정이 관리자 그룹에 속해야 하고, 로그아웃 상태에서도 실행하려면 계정별로 네트워크 접근·GUI 제약이 달라진다는 점을 고려해 자격증명 저장·S4U·SYSTEM 중에서 선택합니다.

실행 실패 시에는 작업 스케줄러 목록에 성공으로 표시되어도 실제 결과가 없을 수 있으니 이력 기능을 먼저 켜고 결과 코드를 확인합니다. 실패 원인은 시작 위치 누락, 실행 정책 차단, 계정 권한 부족 3가지에서 주로 발생합니다.

FAQ

bat 파일을 등록하면 검은 창이 잠깐 뜨는데 숨기는 방법이 있나요?

사용자의 로그온 여부에 관계없이 실행을 선택하면 cmd 콘솔 창이 세션 0에서 실행되어 사용자 화면에 나타나지 않습니다. 로그온된 상태에서 실행해야 한다면 cmd.exe /c 대신 powershell.exe -WindowStyle Hidden -Command "Start-Process cmd -ArgumentList '/c cleanup.bat' -WindowStyle Hidden" 형태로 감싸거나, VBScript 래퍼로 배치 파일을 호출하는 방법을 사용합니다.

노트북이 절전 상태였을 때 놓친 예약 작업을 다음 부팅 시 실행시키는 방법이 있나요?

설정 탭의 예약된 시작을 놓친 경우 가능한 대로 빨리 작업 실행 옵션을 체크합니다. 절전·최대 절전으로 예약 시간을 놓친 작업이 시스템 복귀 후 자동 실행됩니다. 조건 탭에서 작업을 실행하기 위해 절전 모드 종료를 함께 활성화하면 예약 시간에 시스템이 절전에서 깨어나 예정대로 실행됩니다.

등록한 작업을 다른 PC로 옮기는 방법이 있나요?

작업 목록에서 우클릭 후 내보내기를 선택하면 .xml 파일로 저장됩니다. 대상 PC에서 작업 스케줄러를 열고 작업 가져오기로 XML을 불러오면 트리거·동작·조건 설정이 그대로 복원됩니다. 명령줄로 자동화하려면 schtasks /create /xml "task.xml" /tn "TaskName" 명령을 사용하며, PowerShell의 Register-ScheduledTask cmdlet으로 스크립트에서 대량 등록도 가능합니다.

UAC윈도우 작업 스케줄러

저자

댓글

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다

Fill out this field
Fill out this field
올바른 이메일 주소를 입력해주세요.

같은 카테고리 글