Windows 예약 작업 실패 점검: LastTaskResult·실행 계정·작업 경로 확인하기
수동 실행은 성공하는데 예약 작업에서는 실패한다면 실행 파일만 확인해서는 원인을 찾기 어렵다. 마지막 실행 정보와 계정·인수·작업 디렉터리를 대조한다.
작업 상태와 실행 결과를 함께 보기
Microsoft의 Get-ScheduledTaskInfo는 예약 작업의 최근 실행 정보를 조회한다. 실행 여부, 마지막 실행 시각, 다음 실행 시각과 결과 코드를 함께 확인한다. 작업이 Ready라는 사실이 지난 업무 실행의 성공을 뜻하지는 않는다. 공식 명령 문서
1. 대상 작업 한 개를 조회
# 이름과 경로를 실제 예약 작업으로 변경
$task = Get-ScheduledTask -TaskName 'DailyJob' -TaskPath '\'
$info = $task | Get-ScheduledTaskInfo
$task | Select-Object TaskName, TaskPath, State
$info | Select-Object LastRunTime, NextRunTime, LastTaskResult, NumberOfMissedRuns
'0x{0:X8}' -f $info.LastTaskResult
결과를 10진수와 16진수로 기록하면 오류 문서와 대조하기 쉽다. 0x00041301은 작업 실행 중, 0x00041303은 아직 실행되지 않음이라는 스케줄러 상태 코드다. 모든 0이 아닌 값을 동일한 실패로 취급하지 않는다. Microsoft 상태·오류 상수
0x1만으로 권한이나 경로 문제를 확정하지 않는다. 실행 프로그램 또는 스크립트의 종료 코드가 반영될 수 있으므로 해당 프로그램의 오류 로그와 종료 코드 정의를 확인한다.
2. 수동 실행과 다른 조건 찾기
$task.Actions | Format-List Execute, Arguments, WorkingDirectory
$task.Principal | Format-List UserId, LogonType, RunLevel
$task.Settings | Format-List *
| 항목 | 대조할 내용 |
| Execute | 실행 파일의 절대 경로 |
| Arguments | 파일명·공백·따옴표 및 인수 |
| WorkingDirectory | 상대 경로 기준과 설정 파일 위치 |
| UserId·LogonType | 작업 실행 계정과 로그온 방식 |
로그인한 사용자의 환경변수, 매핑 드라이브, 현재 디렉터리가 예약 작업에도 같다고 가정하지 않는다. Java나 PowerShell 작업은 설정·로그·토큰 파일의 경로와 접근권한을 해당 실행 계정 기준으로 확인한다.
3. 최근 스케줄러 이벤트와 업무 로그 대조
Get-WinEvent -FilterHashtable @{
LogName = 'Microsoft-Windows-TaskScheduler/Operational'
StartTime = (Get-Date).AddHours(-24)
} -MaxEvents 100 | Select-Object TimeCreated, Id, LevelDisplayName, Message
조회한 이벤트에서 작업 이름과 발생 시각을 대조한다. 이 채널이 비활성화돼 있거나 보존된 이벤트가 없으면 기존 이력을 얻지 못할 수 있다. 향후 기록이 필요하면 작업 스케줄러의 모든 작업 기록 사용 설정을 검토한다.
완료 확인 기준
- 예정된 시각에 시작했는가?
- 프로그램이 의도한 종료 코드를 반환했는가?
- 백업 파일·동기화 건수 등 실제 업무 결과가 생성됐는가?
- 설정 변경 전 기존 작업 정의를 보관했는가?
스케줄러의 성공 코드와 실제 업무 완료는 각각 확인한다. 외부 API 호출을 사용하는 작업은 HTTP 응답과 처리 건수도 로그에 남기면 원인 분석이 쉬워진다.
참고자료
'운영체제 > 윈도우' 카테고리의 다른 글
| Get-WinEvent FilterHashtable 사용법: 시간·로그·심각도로 이벤트 조회 범위 줄이기 (0) | 2026.10.18 |
|---|---|
| PowerShell Get-Counter 사용법: 한국어 Windows 성능 카운터 이름 확인하기 (0) | 2026.10.17 |
| Windows Server NTP 점검: w32tm으로 시간 출처·동기화 상태·오차 확인하기 (0) | 2026.10.12 |
| Windows Server 인증서 만료 확인: PowerShell Cert 드라이브로 30일 이내 인증서 조회하기 (0) | 2026.10.11 |
| Windows Server 포트 점검: Get-NetTCPConnection으로 PID와 프로세스 확인하기 (0) | 2026.10.10 |