みなさま、こんにちは。WSUS サポート チームです。
今回は Windows 10 / Windows Server 2016 で Get-WindowsUpdateLog による WindowsUpdate.log の出力に失敗する場合に、確認していただきたい点について紹介をいたします。
Windows 10 / Windows Server 2016 ではリアルタイムに WindowsUpdate.log が出力されなくなっており、通常はこちらのブログで紹介している ReportingEvents.log を見ていただいておりますが、より詳しい情報の確認をする必要が出てくることが稀にあります。このような場合には Powershell にて Get-WindowsUpdateLog を実行し、デスクトップに出力される WindowsUpdate.log よりログを確認するのですが、本ログの出力に失敗することがあるため、本記事ではよくお問い合わせいただくパターンについて紹介をしていきます。
「SymSrv.dll が存在しないため検出できません」エラーが表示される
Get-WindowsUpdateLog の実行後に、以下のようなエラー メッセージが出力されてしまうことがあります。
< エラー メッセージ >
Copy-Item : パス 'C:\Program Files\Windows Defender\SymSrv.dll' が存在しないため検出できません。
発生場所 C:\Windows\system32\WindowsPowerShell\v1.0\Modules\WindowsUpdate\WindowsUpdateLog.psm1:56 文字:5
+ Copy-Item -Path $SYMSRV_DLL_PATH -Destination $WORKDIR -Force -Er ...
このエラーが出力されるケースとして、事例上は以下の 2 つパターンがあります。
- x64 の環境で Powershell (x86) から Get-WindowsUpdateLog を実行した場合
- Windows Defender の機能をアンインストールしている場合
1 つ目のパターンに該当する場合には、x64 版の Powershell から Get-WindowsUpdateLog を実行すれば問題ありません。
2つ目のパターンに該当する場合には、もちろん Windows Defender の機能を再度インストールしても良いのですが、「WindowsUpdate.log のためだけにインストールを行うのはちょっと…」という場合には、以下の手順にて Debugging Tools for Windows 10 (WinDbg) より、SymSrv.dll を入手することで対処が可能です。なお、この不具合については Winodws 10 Version 1607 / 1703 および Windows Server 2016 で発生します。
Windows Defender の機能をアンインストールしている場合の対処方法
- Debugging Tools for Windows 10 (WinDbg) をこちらのサイトから入手し、ウィザードに従ってインストールを行います。
※ ウィザードの中では [Debugging Tools for Windows 10] だけを選択すれば問題ありません。
※ インストールを行う環境は、エラーが発生している環境と別の環境でも大丈夫です。 - インストール フォルダ (既定では C:\Program Files (x86)\Windows Kits\10\Debuggers) 配下より、対象のアーキテクチャのフォルダ配下の SymSrv.dll をコピーし入手します。
- 事象発生環境にフォルダ「C:\ProgramFiles\Windows Defender」が存在しない場合は作成、入手した SymSrv.dll をコピーします。
ログの内容が「No Format Information found」になってしまう
Get-WindowsUpdateLog の実行自体は成功するものの、ログの内容が以下のようになってしまうことがあります。
1601/01/01 09:00:00.0000000 788 1160 Unknown( 10): GUID=638e22b1-a858-3f40-8a43-af2c2ff651a4 (No Format Information found).
1601/01/01 09:00:00.0000000 788 1160 Unknown( 11): GUID=bce7cceb-de62-3b09-7f4f-c69b1344a134 (No Format Information found).
1601/01/01 09:00:00.0000000 788 1160 Unknown( 11): GUID=638e22b1-a858-3f40-8a43-af2c2ff651a4 (No Format Information found).
この問題が発生するケースについては、事例上以下の 3 つのパターンがありますが、いずれもログのデコードを行うためのシンボル ファイルの入手に失敗していることが原因となります。なお、このいずれのケースも Windows 10 Version 1709 以降の環境では発生しません。
- インターネット接続が行えない場合
- キャッシュに古いシンボルの情報が残っている場合
- シンボル サーバーの更新が完了していない場合
1 つ目と 2 つ目のパターンに該当する場合の対処方法について、以下に紹介をしていきます。大変残念ながら 3 つ目のパターンに該当する場合には、対処方法はなく弊社側のシンボル サーバーの更新反映を待っていただくしかありません。
インターネット接続が行えない場合の対処方法
Get-WindowsUpdateLog の初回実行時には、デコードを行うためのシンボル ファイルをダウンロードするために、インターネット接続が必要となります。インターネット接続を行った状態で、Get-WindowsUpdateLog を実行することも対処となり得ますが、オフライン環境の場合でも以下の手順を実施することで、少し手間が掛かりますが、デコードを行うことが可能です。
<手順>
- インターネットに接続できる同じ WUA のバージョンの OS 環境をご用意いただきます
※ WUA のバージョンは「C:\Windows\System32\wuaueng.dll」のファイル バージョンより判別出来ます。また、この公開情報で紹介している、同じ累積的な更新プログラムが適用されていれば、同じ WUA のバージョンとなります。 - 1 の環境で Powershell より、オプションの指定なしで Get-WindowsUpdatelog を実行します。
- ダウンロードされたシンボル ファイルが存在する「%temp%\windowsupdatelog」フォルダをコピーします。
- インターネットに接続できない環境に 3 でコピーしたフォルダをコピーします。
- 4 の環境で Powershell より、 「Get-WindowsUpdatelog -symbolserver <4 のコピー先フォルダ\symcache>」と入力します。
- デスクトップに「WindowsUpdate.log」が生成されます。
キャッシュに古いシンボルの情報が残っている場合の対処方法
シンボルのファイルは「%temp%\windowsupdatelog」にキャッシュされるため、この中のファイルが古いままの場合には問題が発生することがあります。このフォルダは手動で削除出来るため、削除後に再度 Get-WindowsUpdateLog を実行することで問題を改善出来ます。