Windows Update 로그 형식의 변화: ETW 도입 배경
과거에는 일반 텍스트 파일인 WindowsUpdate.log를 통해 Windows Update 에이전트와 서비스의 동작을 분석할 수 있었습니다. 그러나 Windows 10(Windows Server 2016/2019)부터는 Windows Update 로그가 기존 텍스트 파일 대신 ETW(Event Tracing for Windows) 형식으로 저장됩니다. Microsoft는 이러한 변경을 통해 로깅 하위 시스템의 성능을 개선하고 텍스트 파일이 차지하는 디스크 공간을 절약하고자 했습니다.
그 결과 Windows Update 이벤트는 더 이상 실시간으로 %windir%\WindowsUpdate.log 파일에 기록되지 않습니다. 해당 파일은 여전히 Windows 폴더 루트에 존재하지만, 파일을 열어보면 다음과 같이 ETW 형식으로 로그가 수집된다는 안내 문구만 표시됩니다.
Windows Update 로그는 이제 ETW(Event Tracing for Windows)를 사용하여 생성됩니다.
PowerShell에서 Get-WindowsUpdateLog 명령을 실행하여 ETW 추적 파일을 읽을 수 있는 WindowsUpdate.log로 변환하십시오.
자세한 내용은 https://go.microsoft.com/fwlink/?LinkId=518345 를 참조하십시오.
새로운 로깅 방식의 단점
관리자 입장에서 새로운 로깅 방식의 가장 큰 단점은 WindowsUpdate.log 텍스트 파일에서 오류 코드를 빠르게 찾거나, WSUS 에이전트 설정을 확인하거나, 업데이트 설치 기록을 분석하는 등 Windows Update 에이전트 서비스를 신속하게 점검할 수 없게 되었다는 점입니다.
Get-WindowsUpdateLog로 ETW 이벤트를 텍스트 로그로 변환
ETW 이벤트를 일반 텍스트 형식의 WindowsUpdate.log 파일로 변환하면 업데이트 서비스 이벤트를 훨씬 편리하게 분석할 수 있습니다. 이를 위해 PowerShell cmdlet인 Get-WindowsUpdateLog를 사용합니다. 이 cmdlet은 모든 .etl 파일(C:\WINDOWS\Logs\WindowsUpdate에 저장됨)에서 정보를 수집하여 하나의 WindowsUpdate.log 텍스트 파일로 만들어 줍니다.
WindowsUpdate.log 파일을 생성하여 C:\PS\Logs에 저장하려면 PowerShell 콘솔에서 다음 명령을 실행합니다.
Get-WindowsUpdateLog -LogPath C:\PS\Logs\WindowsUpdate.log
Windows Server 2016에서 "SymSrv.dll is missing" 오류 해결
Windows Server 2016에서 Get-WindowsUpdateLog cmdlet을 실행하면 다음과 같은 오류가 발생할 수 있습니다.
Copy-Item : Cannot find path 'C:\Program Files\Windows Defender\SymSrv.dll' because it does not exist. At C:\Windows\system32\WindowsPowerShell\v1.0\Modules\WindowsUpdate\WindowsUpdateLog.psm1:56 char:5
"C:\Program Files\Windows Defender\SymSrv.dll" 파일은 일반적으로 서버에 Windows Defender가 설치되어 있지 않은 경우 누락됩니다.
이 오류를 해결하려면 다음 방법 중 하나를 사용할 수 있습니다.
- 서버에 Windows Defender 설치
- 다른 Windows Server 2016/Windows 10에서 SymSrv.dll 파일 복사
- 로컬 WinSxS 폴더(예: C:\Windows\WinSxS\amd64_windows-defender-service-cloudclean_...)에서 SymSrv.dll을 찾아 "C:\Program Files\Windows Defender" 폴더로 복사
Get-WindowsUpdateLog의 작동 방식
구버전 Windows 10 빌드에서는 Get-WindowsUpdateLog cmdlet을 처음 실행할 때 Microsoft 인터넷 심볼 스토어를 다운로드하여 설치합니다. 최신 Windows 10 버전은 온라인으로 Azure의 Microsoft 심볼 서버에 접근합니다. 이후 cmdlet은 다음 순서로 작동합니다.
- 모든 .etl 파일에서 데이터를 읽습니다.
- 데이터를 CSV(기본값) 또는 XML 형식으로 변환합니다.
- 중간 형식 파일의 데이터를 변환하여 LogPath 매개변수에 지정된 로그 텍스트 파일에 추가합니다(LogPath 매개변수를 지정하지 않으면 명령을 실행한 사용자의 바탕 화면에 WindowsUpdate.log가 생성됩니다).
팁. ETL 파일을 분석하는 또 다른 방법으로는 Tracefmt.exe 유틸리티를 사용하여 .etl 파일에서 데이터를 추출하는 것이 있지만, 다소 더 복잡합니다.
생성된 로그 파일은 다음 PowerShell 명령으로 열 수 있습니다.
Invoke-Item -Path C:\PS\Logs\WindowsUpdate.log
"Unknown(140): GUID=... (No Format Information found)" 오류의 의미
경우에 따라 WindowsUpdate.log 파일에서 다음과 같은 문자열을 볼 수 있습니다.
Unknown(140): GUID=53212e4cc-4321-f43a-2123-9ada0090bc12b (No Format Information found).
이는 Windows 심볼 서버가 설치되어 있지 않음을 의미합니다(현재는 별도의 Windows 심볼 설치 프로그램을 다운로드할 수 없으며, Azure의 심볼 스토어에서 자동으로 다운로드됩니다). 격리된 환경에서는 "Offline Symbols for Windows Update" 문서에 따라 오프라인 버전의 심볼 서버를 사용할 수 있습니다.
팁. 생성된 WindowsUpdate.log 파일은 정적이며 이전 Windows 버전처럼 실시간으로 업데이트되지 않습니다. 파일을 갱신하려면 Get-WindowsUpdateLog cmdlet을 다시 실행하거나 일정한 주기로 파일을 자동 갱신하는 스크립트를 만들어야 합니다(파일은 덮어써집니다).
WindowsUpdate.log의 이벤트 소스 이해
생성된 WindowsUpdate.log 파일은 여러 이벤트 소스의 데이터를 수집하기 때문에 분석이 다소 까다롭습니다. 주요 이벤트 소스는 다음과 같습니다.
- AGENT – Windows Update 에이전트 이벤트
- AU – 자동 업데이트
- AUCLNT – 사용자 상호 작용
- HANDLER – 업데이트 설치 관리자 제어
- MISC – 일반 WU 정보
- PT – 로컬 데이터스토어와의 업데이트 동기화
- REPORT – 보고서 수집
- SERVICE – wuauserv 서비스 시작/중지 이벤트
- SETUP – Windows Update 클라이언트 신규 버전 설치
- DownloadManager – BITS를 사용한 로컬 캐시 업데이트 다운로드
- Handler, Setup – 설치 관리자 헤더(CBS 등)
- 그 외 다수
PowerShell로 로그 필터링하기
간단한 정규식을 사용하여 Windows Update 에이전트(agent)의 최근 30개 이벤트를 선택할 수 있습니다.
Select-String -Pattern '\sagent\s' -Path C:\PS\Logs\WindowsUpdate.log | Select-Object -Last 30
여러 소스를 기준으로 이벤트를 필터링할 수도 있습니다.
Select-String -Pattern '\sagent\s|\smisc\s' -Path c:\PS\Logs\WindowsUpdate.log | Select-Object -Last 50
마찬가지로 KB 번호나 오류 유형(FAILED, Exit Code, FATAL)을 기준으로 텍스트 파일에서 이벤트를 검색할 수 있습니다.
원격 컴퓨터의 WindowsUpdate.log 생성
원격 컴퓨터나 서버에 대한 WindowsUpdate.log 파일도 생성할 수 있습니다.
Get-WindowsUpdateLog -ETLPath \\ny-srf-1\C$\windows\Logs\WindowsUpdate -LogPath C:\PS\Logs\windowsupdate-ny-srf-1.log
이벤트 뷰어로 Windows Update 서비스 분석
Windows Update 서비스의 동작을 분석할 때는 이벤트 뷰어 로그를 활용할 수도 있습니다. 이벤트 뷰어에서 다음 섹션을 확장합니다. Applications and Services Logs → Microsoft → Windows → WindowsUpdateClient → Operational
또한 PowerShell CLI에서 Windows 업데이트를 관리하려면 PSWindowsUpdate 모듈을 사용하는 것도 좋은 방법입니다.