🦆

WindowsPCのイベントログ調査の基礎データを準備する

に公開

なぜ作成したのか

  • 古くなってきたPCに対する交換希望の線引きのためイベントログの情報を基準にすべく基礎情報をまとめる

やりたいこと

  • 対象PCで発生しうるイベントログのリストを取得する

Powershellによるイベントプロバイダー情報の取得


$outputPath = "出力ファイルの絶対パス"
$results = @()

$providers = Get-WinEvent -ListProvider *

foreach ($provider in $providers) {
    $providerName = $provider.Name
    $logNames = ($provider.LogLinks | ForEach-Object { $_.LogName }) -join ";"

    foreach ($event in $provider.Events) {
        $results += [PSCustomObject]@{
            ProviderName = $providerName
            LogName      = $logNames
            EventID      = $event.Id
            Level        = $event.Level.DisplayName
            Opcode       = $event.Opcode.DisplayName
            Task         = $event.Task.DisplayName
            Description  = ($event.Description -replace "`r?`n", " ") -replace ",", " "
        }
    }
}

# CSV出力
$results | Export-Csv -Path $outputPath -Encoding UTF8 -NoTypeInformation
Write-Host "定義済みイベント(Description付き)をCSVで出力しました:$outputPath"

結構エラーは検出されるのでエラーハンドルはちゃんとやったほうがよさげ

出力結果イメージ

ProviderName LogName EventID Level Opcode Task Description
Application Error Application 1000 エラー アプリケーション クラッシュ イベント 障害が発生しているアプリケーション名: %1、バージョン: %2、タイム スタンプ: 0x%3 障害が発生したモジュール名: %4、 バージョン: %5、タイム スタンプ: 0x%6 例外コード: 0x%7 フォールト オフセット: 0x%8 フォールト プロセス ID: %9 アプリケーションのフォールトの開始時刻: %10 Faulting アプリケーション パス: %11 Faulting モジュール パス: %12 Report Id: %13 Faulting パッケージの完全名: %14 Faulting パッケージ相対アプリケーション ID: %15
Application Error Application 1005 エラー アプリケーション クラッシュ イベント "次のいずれかの理由によりファイル %1 にアクセスできません: ネットワーク接続、このファイルの保存先ディスク、またはこのコンピューターにインストールされている記憶域 ドライバーに問題があります。または、ディスクが見つかりません。 このエラーによりプログラム %2 は終了しました。 プログラム: %2 ファイル: %1 エラー値は [追加データ] セクションに一覧表示されます。 ユーザー操作 1. このファイルをもう一度開きます。 この状況は、プログラムを再実行するときに修復される一時的な問題である可能性があります。 2. このファイルにまだアクセスできず、 ファイルがネットワーク上にある場合は、 ネットワーク管理者がネットワークに問題がないこと、およびサーバーにアクセスできることを検証する必要があります。 - ファイルが、フロッピー ディスクや CD-ROM などのリムーバブル ディスクにある場合は、ディスクがコンピューターに完全に挿入されていることを確認します。 3. CHKDSK を実行してファイル システムをチェックおよび修復します。CHKDSK を実行するには、[スタート] ボタンをクリックし、[ファイル名を指定して実行] をクリックし、「CMD」と入力して、[OK] をクリックします。コマンド プロンプトで「CHKDSK /F」と入力してから、Enter キーを押します。 4. 問題が解決しない場合は、バックアップ コピーからファイルを復元します。 5. 同じディスク上の他のファイルが開くかどうかを確認します。開かない場合は、そのディスクが壊れている可能性があります。ハード ディスクの場合は、管理者またはコンピューター ハードウェア ベンダーに連絡して サポートを受けます。 追加データ エラー値: %3 ディスクの種類: %4"
Application Hang Application 1002 エラー ハング イベント プログラム %1 バージョン %2 は Windows との対話を停止し、閉じられました。問題に関する詳細情報が利用可能かどうかを参照するには、セキュリティとメンテナンスのコントロール パネルで問題の履歴を確認してください。
LsaSrv System;Microsoft-Windows-LSA/Performance;Microsoft-Windows-LSA/Operational;Microsoft-Windows-LSA/Diagnostic 100 エラー "サーバーの認証に必要な資格情報がセキュリティ パッケージでキャッシュされていません。 パッケージ名: %1 ユーザー名: %2 ドメイン名: %3 サーバー名: %4 保護されているユーザー: %5 エラー コード: %6 "
LsaSrv System;Microsoft-Windows-LSA/Performance;Microsoft-Windows-LSA/Operational;Microsoft-Windows-LSA/Diagnostic 200 警告 "セキュリティ パッケージが、ログオフの完了後にネットワーク ログオン要求を受信しました。 ユーザー名: %1 ドメイン名: %2 ログオン ID: %3 ログオフ時間: %4 PID: %5 プログラム: %6 プリンシパル名: %7 サーバー名: %8 パッケージ名: %9 呼び出しの種類: %10 エラー コード: %11 "

所感

  • Get-WinEvent は発生したイベントしか取得できないと思ってたので -ListProvider * でイベントプロバイダー総ざらいできるのは盲点だった
  • まずは基礎データテーブルとして使用する
  • これから警告以上のイベントを抽出、一般的な原因、対処方法の情報を仕入れておく
  • 実際に問題の危機で検出されたイベントを照合、判断記録を残していく感じにしたい
GitHubで編集を提案

Discussion