【Management】GPLogView でグループポリシーのトラブル追跡

昨日、札幌に勤務するMS社員に連れられて すすきの のジンギスカン屋さんに行ってきました。ここのジンギスカンは、サフォーク種という顔が黒い羊を使っているとのこと。いやーこれがまた、うまいのうまくないのって、うまいんです。ロース...うまかったなぁ...。

そんな波乱を乗り越えつつ、やっと Windows グループポリシー リソースキットの監訳が終わりました。発売は11月になると思いますので、他のリソキ同様、よろしくお願いいたします。

また、リソキについて情報交換する 「Windows Server 2008 リソースキット研究会」にも是非ご参加を。

さて、今回はグループポリシーがらみで TIPS を1件お送りします。

GPLogView ユーティリティ ってご存知ですか?

Live Search で検索したところ、英語サイトしか出てこないので、ここでご紹介することにします。
※「俺が紹介してるじゃん!」ってことがございましたら教えてくださいませ。当BLOGからリンクさせていただきます。

GPLogView はグループポリシーのトラブルシューティングをするためのツールで、標準では組み込まれていません。ダウンロードセンターからダウンロードできます。

ダウンロードセンター - Group Policy Log View 
https://www.microsoft.com/downloads/details.aspx?FamilyID=bcfb1955-ca1d-4f00-9cff-6f541bad4563&DisplayLang=en

※ダウンロードセンターには Windows Vista 用と書かれていますが、Windows Server 2008 でも使用することが可能です。

グループポリシー関連のトラブルシューティングで大変なこと...それはどこでエラーが起きているかを特定することです。GPLogViewは、その問題発生個所を特定する際に大変有効なのです。もちろん、特定の先には「原因調査」があるわけですが、GPLogView はそこまではできません。

このツールを使用すると、グループポリシー関連のイベントログだけをテキストファイルに吐き出すことができます。...って聞くと、「えぇ、それだけぇ?」って思いますよね。でも、その吐き出し方にミソがあります。

まずは、GPLogViewユーティリティの Syntax をご覧ください。

C:\Program Files\GroupPolicy Logview>gplogview

Usage: gplogview [options] where supported options are -?: shows this usage message -o [output file name]: Output file name required for text, xml or html; not valid if -m if specified -n: do not output the activity id -p: dump the process id and thread id associated with each event -a [activity id guid]: shows only events matching the given activity id -aa: show start events and activity IDs for the whole log (cannot use with -m) -m: runs the tool in monitor mode displaying events in real time -x: Dumps the event in XML, the only other options allowed with this option is -m and -a but not both together -h: Dumps the events in HTML format, -m or -x option is not allowed, -a and -n are allowed but not both together. Also must specify -o option -i [EVTX file]: Use specified input file instead of the live logs.

Example: gplogview -n -o GPEvents.txt Example: gplogview -a ea276341-d646-43e0-866c-e7cc35aecc0a -o GPEvents.txt Example: gplogview -i savedlog.evtx -o GPEvents.txt Example: gplogview -x -o GPEvents.xml Example: gplogview -x -m Example: gplogview -x -a ea276341-d646-43e0-866c-e7cc35aecc0a -o GPEvents.xml Example: gplogview -h -o GPEvents.html Example: gplogview -h -a ea276341-d646-43e0-866c-e7cc35aecc0a -o GPEvents.html

GPLogView を使用すると、コンピュータに保存されているグループポリシー関連イベントログをかき集め、それを時系列に並べた状態で保存することができます。保存の形式は、「テキスト」「XML」「HTML」から選択することができます。

おもしろいのは、-m オプションを使用してイベントログを監視することで、リアルタイムの動作状況を見ることができるところです。例えば、コマンドプロンプトを2つ開いておき、1つは GPLogView -m で監視を行いつつ、もう一つのコマンドプロンプトで GPUpdate をすれば、ポリシー適用に関するトラッキングを行うことができます。

またトラブル追跡をする上で最も有用な機能は -a オプションです。グループポリシーには適用サイクルがあることはご存じの通りですが、そのサイクル(セッション)ごとに 固有のID が生成されます。これを「Activity ID」とよび、イベントログにエラーが報告された場合には、この Activity ID を参照することで、どの時点のサイクルで発生した問題かを特定することができます。Activity ID は、イベントログの「詳細タブ」で参照することができます。-a を使用すると、特定のActivity ID に関連した一切のログを抽出することができるため、他の多くのイベントの中から有効なものだけを拾ってくるといった手間を省くことができます。

image

例えば、上記画面からは Activity ID = D7BA83DF-BA7D-4701-BB98-509120272073 のセッションでエラーが発生していることがわかりますが、トラブルシューティングを行う際は、このイベントが発生するまでの過程を確認したくなるはずです。

そこで、-m オプションを使用して Activity ID = D7BA83DF-BA7D-4701-BB98-509120272073 のイベントを抽出してみます。コマンドラインは以下のとおりです。

gplogview -a DAF3AB10-CEE8-4C72-91AE-1CAD9F630D87 -o DAF3AB10-CEE8-4C72-91AE-1CAD9F630D87.html -h

このコマンドによって保存されたHTMLファイル(DAF3AB10-CEE8-4C72-91AE-1CAD9F630D87.html)の中身は以下です。以下のテーブルには、ポリシー処理が開始されてからエラーが出るまでのプロセスが段階的に表示されており、どの部分でエラーが出たかを確認することができます。以下の場合は、4017 イベントでドメインコントローラとの接続が失敗していますが、それ以前のユーザー情報の取得には成功していることから、クライアント側の問題ではなく特定のドメインコントローラの問題か一時的なネットワークの問題であると予測することができます。

以下の「Event Details」列にある「Event XML」は、詳細なイベント情報にリンクされています。

Group Policy Events

Event Time Event Id Event Description Event Details
2008-10-22 23:07:13.833 4004 コンピュータDomainName\ComputerName$ のポリシーの手動処理を開始しています。アクティビティID: {DAF3AB10-CEE8-4C72-91AE-1CAD9F630D87} Event XML
2008-10-22 23:07:13.833 5320 アカウント情報を取得しようとしています。 Event XML
2008-10-22 23:07:13.833 4017 アカウント情報を取得するためにシステムコールを実行しています。 Event XML
2008-10-22 23:07:13.833 5017 アカウント情報を取得するためのシステムコールが完了しました。 CN=ComputerName,OU=Workstations,OU=Machines,DC=DomainName,DC=com 呼び出しが0 ミリ秒で完了しました。 Event XML
2008-10-22 23:07:13.833 5320 アカウント情報を取得しました。 Event XML
2008-10-22 23:07:13.833 4326 グループポリシーはドメインコントローラ情報を検出しようとしています。 Event XML
2008-10-22 23:07:13.833 5320 ドメインコントローラの詳細を取得しています。 Event XML
2008-10-22 23:07:16.953 4017 Active Directory に接続およびバインドするためにLDAP 呼び出しを実行しています。 DCName-01.DomainName.com Event XML
2008-10-22 23:07:17.109 7017 Active Directory に接続およびバインドするためのLDAP 呼び出しが完了しました。 DCName-01.DomainName.com 156 ミリ秒後に呼び出しが失敗しました。 Event XML
2008-10-22 23:07:17.468 5320 ドメインコントローラの詳細の再検出を強制的に行います。 Event XML
2008-10-22 23:07:17.514 7326 グループポリシーはドメインコントローラの詳細を3682 ミリ秒で検出できませんでした。 Event XML
2008-10-22 23:07:17.514 7004 コンピュータDomainName\ComputerName$ のポリシーの手動処理が3 秒で失敗しました Event XML
2008-10-22 23:07:17.514 1129 ドメインコントローラへのネットワーク接続が存在しないため、グループポリシーの処理に失敗しました。これは一時的な状態である可能性があります。コンピュータがドメインコントローラに接続され、グループポリシーが正しく処理されると成功のメッセージが生成されます。数時間経ってもメッセージが表示されない場合は、管理者に連絡してください。 Event XML
2008-10-22 23:07:18.216 5315 DomainName\ComputerName$ の次のポリシー処理は99 分で試行されます。 Event XML

イベントログのトラブルシューティングについては、新しくリリースされる グループポリシー リソースキット をご覧いただくか、以下のサイトをご参照ください。

Troubleshooting Group Policy Using Event Logs
https://technet2.microsoft.com/windowsvista/ja/library/7e940882-33b7-43db-b097-f3752c84f67f1041.mspx?mfr=true