PowerShell Cmdlet - Get-WinEvent
 記事記号:[mf1997] 初版:2011/Sep/30

この文書は、Windows PowerShellのヘルプ機能で表示される内容を再構成したものです。

名前
    Get-WinEvent
    
概要
    ローカル コンピューターおよびリモート コンピューター上のイベント ログおよび
    イベント トレース ログ ファイルからイベントを取得します。
    
構文
    Get-WinEvent [-LogName] <string[]> [-ComputerName <string>] [-Credential <PS
    Credential>] [-FilterXPath <string>] [-Force <switch>] [-MaxEvents <int64>] 
    [-Oldest] [<CommonParameters>]
    
    Get-WinEvent [-Path] <string[]> [-ComputerName <string>] [-Credential <PSCre
    dential>] [-FilterXPath <string>] [-Force <switch>] [-MaxEvents <int64>] [-O
    ldest] [<CommonParameters>]
    
    Get-WinEvent [-ProviderName] <string[]> [-ComputerName <string>] [-Credential 
    <PSCredential>] [-FilterXPath <string>] [-Force <switch>] [-MaxEvents <int64>
    ] [-Oldest] [<CommonParameters>]
    
    Get-WinEvent -FilterHashTable <Hashtable[]> [-ComputerName <string>] [-Creden
    tial <PSCredential>] [-Force <switch>] [-MaxEvents <int64>] [-Oldest] [<Commo
    nParameters>]
    
    Get-WinEvent [-ListLog] <string[]> [-ComputerName <string>] [-Credential <PS
    Credential>] [<CommonParameters>]
    
    Get-WinEvent [-ListProvider] <string[]> [-ComputerName <string>] [-Credentia
    l <PSCredential>] [<CommonParameters>]
    
    Get-WinEvent -FilterXml <XmlDocument> [-ComputerName <string>] [-Credential 
    <PSCredential>] [-Force <switch>] [-MaxEvents <int64>] [-Oldest] [<CommonPar
    ameters>]
    
説明
    Get-WinEvent コマンドレットは、イベント ログからイベントを取得します。これら
    のイベント ログには、システム ログ、アプリケーション ログなどの従来のログに
    加えて、Windows Vista で新しく導入された Windows イベント ログ技術により生成
    されるイベント ログが含まれます。また、Event Tracing for Windows (ETW) によ
    り生成されるログ ファイルのイベントも取得します。
    
    パラメーターが指定されていない場合、Get-WinEvent コマンドは、コンピューター
    上のすべてのイベント ログからすべてのイベントを取得します。コマンドを停止す
    るには、Ctrl キーを押しながら C キーを押します。
    
    Get-WinEvent は、イベント ログおよびイベント ログ プロバイダーも一覧表示しま
    す。選択したログまたは選択したイベント プロバイダーにより生成されたログから
    イベントを取得できます。さらに、複数のソースからのイベントを単一のコマンドで
    結合できます。Get-WinEvent では、XPath クエリ、構造化 XML クエリ、および簡単
    なハッシュ テーブル クエリを使用することで、イベントをフィルター処理できます。
    
    注: Get-WinEvent には、Windows Vista、Windows Server 2008 R2、またはそれ以降
    のバージョンの Windows が必要です。また、Microsoft .NET Framework 3.5 以降も
    必要となります。
    
パラメーター
    -ComputerName <string>
        指定されたコンピューター上のイベント ログからイベントを取得します。コン
        ピューターの NetBIOS 名、インターネット プロトコル (IP) アドレス、または
        完全修飾ドメイン名を入力します。既定値はローカル コンピューターです。
        
        このパラメーターは、一度に 1 つのコンピューター名のみを受け入れます。複
        数のコンピューターでイベント ログやイベントを検索するには、ForEach ステ
        ートメントを使用します。このパラメーターの詳細については、例を参照してく
        ださい。
        
        リモート コンピューターからイベントおよびイベント ログを取得するには、リ
        モート アクセスを許可するようにイベント ログ サービスのファイアウォール 
        ポートを構成する必要があります。
        
        このパラメーターは、Windows PowerShell リモート処理に依存しません。コン
        ピューターがリモート コマンドを実行するように構成されていない場合でも、C
        omputerName パラメーターを使用できます。
        
        必須                         false
        位置                         named
        既定値                       
        パイプライン入力を許可する   false
        ワイルドカード文字を許可する false
        
    -Credential <PSCredential>
        この処理を実行するアクセス許可を持つユーザー アカウントを指定します。既
        定値は現在のユーザーです。
        
        "User01" や "Domain01\User01" などユーザー名を入力します。または、Get-Cr
        edential コマンドレットで生成されるような PSCredential オブジェクトを入
        力します。ユーザー名を入力すると、パスワードの入力を促すメッセージが表示
        されます。パラメーター名のみを入力した場合、ユーザー名とパスワードの両方
        の入力を求められます。
        
        必須                         false
        位置                         named
        既定値                       現在のユーザー
        パイプライン入力を許可する   false
        ワイルドカード文字を許可する false
        
    -FilterHashTable <Hashtable[]>
        ハッシュ テーブル形式のクエリを使用して、1 つ以上のイベント ログからイベ
        ントを選択します。クエリには、キーと値のペアを 1 つ以上格納しているハッ
        シュ テーブルが含まれます。
        
        ハッシュ テーブル クエリには、次のルールがあります。
        -- キーおよび値の大文字と小文字は区別されません。
        -- ワイルドカード文字は、LogName キーと ProviderName キーに関連付けられた
           値でのみ使用できます。
        -- 各キーはハッシュ テーブルごとに 1 つのみ列挙できます。
        -- Path 値には .etl、.evt、および .evtx ログ ファイルのパスを指定します。
        -- LogName、Path、および ProviderName キーを同じクエリ内で使用できます。
        -- UserID キーには、有効な System.Security.Principal.NTAccount オブジェク
           トの構築に使用できる有効なセキュリティ識別子 (SID) またはドメイン アカ
           ウント名を指定できます。
        -- Data 値には、名前のないフィールドのイベント データを指定します。このル
           ールは、従来のイベント ログに適用されます。
        -- * キーは名前のあるイベント データ フィールドを表します。
        Get-WinEvent でキーと値のペアを解釈できない場合、キーはイベントのイベント 
        データ名として解釈され、大文字と小文字が区別されます。
        
        有効なキーと値のペアは、次のとおりです。
        -- LogName=<String[]>
        -- ProviderName=<String[]>
        -- Path=<String[]>
        -- Keywords=<Long[]>
        -- ID=<Int32[]>
        -- Level=<Int32[]>
        -- StartTime=<DateTime>
        -- EndTime=<DataTime>
        -- UserID=<SID>
        -- Data=<String[]>
        -- *=<String[]>
        
        必須                         true
        位置                         named
        既定値                       
        パイプライン入力を許可する   true (ByValue)
        ワイルドカード文字を許可する false
        
    -FilterXml <XmlDocument>
        構造化 XML クエリを使用して、1 つ以上のイベント ログからイベントを選択し
        ます。
        
        有効な XML クエリを生成するには、イベント ビューアーの [カスタム ビュー
        の作成] 機能と [現在のログをフィルター] 機能を使用します。ダイアログ ボ
        ックスの項目を使用してクエリを作成し、[XML] タブをクリックして XML 形式
        のクエリを表示します。[XML] タブの XML を FilterXml パラメーターの値にコ
        ピーできます。イベント ビューアー機能の詳細については、イベント ビューア
        ーのヘルプを参照してください。
        
        通常、XML クエリは複数の XPath ステートメントが含まれる複雑なクエリを作
        成する場合に使用します。XML 形式では、クエリからイベントを除外する "Supp
        ress" XML 要素を使用することもできます。イベント ログ クエリの XML スキ
        ーマの詳細については、次に示す MSDN (Microsoft Developer Network) ライブ
        ラリのトピックを参照してください。
        
        -- 「クエリ スキーマ (英語ページの可能性があります)」: http://go.microso
            ft.com/fwlink/?LinkId=143685
        
        -- 「イベント選択 (英語ページの可能性があります)」の「XML イベント クエ
            リ (英語ページの可能性があります)」: http://go.microsoft.com/fwlink/
            ?LinkID=143608
        
        必須                         true
        位置                         named
        既定値                       なし
        パイプライン入力を許可する   true (ByValue)
        ワイルドカード文字を許可する false
        
    -FilterXPath <string>
        XPath クエリを使用して、1 つ以上のログからイベントを選択します。
        
        XPath 言語の詳細については、MSDN ライブラリの「Event Selection (イベント
        選択)」にある「Selection Filters (選択フィルター)」、および「XPath リフ
        ァレンス」を参照してください。
        
        必須                         false
        位置                         named
        既定値                       なし
        パイプライン入力を許可する   false
        ワイルドカード文字を許可する false
        
    -Force <switch>
        その他のイベント ログに加え、デバッグ ログおよび分析ログを取得します。Na
        me パラメーターの値にワイルドカード文字が含まれている場合にデバッグ ログ
        または分析ログを取得するには、Force パラメーターを指定する必要があります。
        
        既定では、デバッグ ログまたは分析ログの完全な名前を指定しない限り、Get-W
        inEvent によってこれらのログが除外されます。
        
        必須                         false
        位置                         named
        既定値                       デバッグ ログおよび分析ログは、ワイルドカー
                                     ド文字を使用したクエリへの応答としては返さ
                                     れません。
        パイプライン入力を許可する   false
        ワイルドカード文字を許可する false
        
    -ListLog <string[]>
        指定されたイベント ログを取得します。イベント ログ名をコンマ区切り一覧に
        入力します。ワイルドカードを使用できます。すべてのログを取得するには、値
        として * を入力します。
        
        必須                         true
        位置                         1
        既定値                       なし
        パイプライン入力を許可する   false
        ワイルドカード文字を許可する true
        
    -ListProvider <string[]>
        指定されたイベント ログ プロバイダーを取得します。イベント ログ プロバイ
        ダーは、イベントをイベント ログに書き込むプログラムまたはサービスです。
        
        プロバイダー名をコンマ区切り一覧に入力します。ワイルドカードを使用できま
        す。コンピューター上にあるすべてのイベント ログのプロバイダーを取得する
        には、値として * を入力します。
        
        必須                         true
        位置                         1
        既定値                       なし
        パイプライン入力を許可する   false
        ワイルドカード文字を許可する true
        
    -LogName <string[]>
        指定されたイベント ログからイベントを取得します。イベント ログ名をコンマ
        区切り一覧に入力します。ワイルドカードを使用できます。パイプを使用してロ
        グ名を Get-WinEvent に渡すこともできます。
        
        必須                         true
        位置                         1
        既定値                       なし
        パイプライン入力を許可する   true (ByValue)
        ワイルドカード文字を許可する true
        
    -MaxEvents <int64>
        Get-WinEvent が返すイベントの最大数を指定します。整数を入力します。既定
        では、ログまたはファイルのすべてのイベントが返されます。
        
        必須                         false
        位置                         named
        既定値                       すべてのイベント
        パイプライン入力を許可する   false
        ワイルドカード文字を許可する false
        
    -Oldest [<SwitchParameter>]
        イベントを日時の古い順に返します。既定では、最新のものから順にイベントが
        返されます。
        
        .etl ファイル、.evt ファイル、デバッグ ログ、および分析ログからイベント
        を取得するには、このパラメーターが必要です。これらのファイルでは、イベン
        トが古いものから順に記録されており、古いイベント順でのみ返されます。
        
        必須                         false
        位置                         named
        既定値                       
        パイプライン入力を許可する   false
        ワイルドカード文字を許可する false
        
    -Path <string[]>
        指定されたイベント ログ ファイルからイベントを取得します。ログ ファイル
        へのパスの一覧をコンマ区切りで入力するか、ワイルドカード文字を使用してフ
        ァイル パス パターンを作成します。
        
        Get-WinEvent は、.evt、.evtx、および .etl ファイル名拡張子が付いているフ
        ァイルをサポートしています。同じコマンドに異なるファイルおよびファイルの
        種類からのイベントを含めることができます。
        
        必須                         true
        位置                         1
        既定値                       なし
        パイプライン入力を許可する   false
        ワイルドカード文字を許可する true
        
    -ProviderName <string[]>
        指定されたイベント ログ プロバイダーによって書き込まれたイベントを取得し
        ます。プロバイダー名の一覧をコンマ区切りで入力するか、ワイルドカード文字
        を使用してプロバイダー名パターンを作成します。
        
        イベント ログ プロバイダーは、イベントをイベント ログに書き込むプログラ
        ムまたはサービスです。Windows PowerShell プロバイダーではありません。
        
        必須                         true
        位置                         1
        既定値                       なし
        パイプライン入力を許可する   false
        ワイルドカード文字を許可する true
        
    <CommonParameters>
        このコマンドレットは、次の共通パラメーターをサポートします: Verbose、
        Debug、ErrorAction、ErrorVariable、WarningAction、WarningVariable、
        OutBuffer、および OutVariable。詳細については、
        「get-help about_commonparameters」と入力してヘルプを参照してください。
    
入力
    System.String、System.Xml.XmlDocument、System.Collections.Hashtable
        パイプを使用して LogName (文字列)、FilterXML クエリ、または FilterHashTa
        ble クエリを Get-WinEvent に渡すことができます。
    
出力
    System.Diagnostics.Eventing.Reader.EventLogConfiguration、System.Diagnostics
    .Eventing.Reader.EventLogRecord、System.Diagnostics.Eventing.Reader.Provider
    Metadata
        ListLog パラメーターが指定されている場合、Get-WinEvent は、System.Diagno
        stics.Eventing.Reader.EventLogConfiguration オブジェクトを返します。List
        Provider パラメーターが指定されている場合、Get-WinEvent は、System.Diagn
        ostics.Eventing.Reader.ProviderMetadata オブジェクトを返します。その他す
        べてのパラメーターを指定した場合、Get-WinEvent は System.Diagnostics.Eve
        nting.Reader.EventLogRecord オブジェクトを返します。
    
メモ
        Windows Vista 以降のバージョンの Windows を実行しているコンピューターで
        は、Get-WinEvent が Get-EventLog コマンドレットの代替として設計されてい
        ます。Get-EventLog は、従来のイベント ログのイベントのみを取得します。Ge
        t-EventLog は Windows PowerShell 2.0 に保持されており、Windows Vista よ
        り前のシステム用です。
        
    -------------------------- 例 1 --------------------------
    
    C:\PS>get-winevent -listlog  *
    
    説明
    -----------
    このコマンドは、ローカル コンピューター上のすべてのログを取得します。
        
    ログは、Get-WinEvent が取得する順序で一覧表示されます。通常、従来のログが最
    初に取得され、その後に新しい Windows Eventing ログが取得されます。
        
    一般に 100 を超えるイベント ログが存在するため、このパラメーターにはログ名ま
    たは名前パターンが必要です。すべてのログを取得するには、* を使用します。
    
    -------------------------- 例 2 --------------------------
    
    C:\PS>get-winevent -listlog Setup | format-list -property *
        
        FileSize                       : 69632
        IsLogFull                      : False
        LastAccessTime                 : 2/14/2008 12:55:12 AM
        LastWriteTime                  : 7/9/2008 3:12:05 AM
        OldestRecordNumber             : 1
        RecordCount                    : 3
        LogName                        : Setup
        LogType                        : Operational
        LogIsolation                   : Application
        IsEnabled                      : True
        IsClassicLog                   : False
        SecurityDescriptor             : O:BAG:SYD:(A;;0xf0007;;;SY)(A;
                                         (A;;0x1;;;S-1-5-32-573)
        LogFilePath                    : %SystemRoot%\System32\Winevt\L
        MaximumSizeInBytes             : 1052672
        LogMode                        : Circular
        OwningProviderName             : Microsoft-Windows-Eventlog
        ProviderNames                  : {Microsoft-Windows-WUSA, Micro
        ProviderLevel                  :
        ProviderKeywords               :
        ProviderBufferSize             : 64
        ProviderMinimumNumberOfBuffers : 0
        ProviderMaximumNumberOfBuffers : 64
        ProviderLatency                : 1000
        ProviderControlGuid            :
    
    説明
    -----------
    これらのコマンドは、ローカル コンピューター上の従来のシステム ログを表すオブ
    ジェクトを取得します。このオブジェクトには、ログのサイズ、イベント ログ プロ
    バイダー、ファイル パス、ログが有効かどうかなど、有用なログ情報が含まれてい
    ます。
    
    -------------------------- 例 3 --------------------------
    
    C:\PS>get-winevent -listlog * -computername Server01| where {$_.recordcount}
    
    説明
    -----------
    このコマンドは、イベントが存在する Server01 コンピューター上のイベント ログ
    のみを取得します。ログの多くが空である可能性があります。
        
    ListLog パラメーターを使用する場合は、Get-WinEvent が返す EventLogConfigurat
    ion オブジェクトの RecordCount プロパティが使用されます。
    
    -------------------------- 例 4 --------------------------
    
    C:\PS>$s = "Server01", "Server02", "Server03"
    
    C:\PS> foreach ($server in $s) 
         {$server; get-winevent -listlog "Windows PowerShell" -computername $ser
         ver}
    
    説明
    -----------
    この例のコマンドは、Server01、Server02、および Server03 コンピューター上の W
    indows PowerShell イベント ログを表すオブジェクトを取得します。ComputerName 
    パラメーターに指定できる値は 1 つだけであるため、このコマンドは Foreach キー
    ワードを使用します。
        
    最初のコマンドは、コンピューターの名前を $s 変数に保存します。
        
    2 番目のコマンドは、Foreach ステートメントを使用します。このコマンドは、$s 
    変数に保存されている各コンピューターに対して、スクリプト ブロック内 (中かっ
    こ内) のコマンドを実行します。このコマンドは、最初にコンピューターの名前を
    出力し、次に Get-WinEvent コマンドを実行して、Windows PowerShell ログを表す
    オブジェクトを取得します。
    
    -------------------------- 例 5 --------------------------
    
    C:\PS>get-winevent -listprovider *
    
    説明
    -----------
    このコマンドは、ローカル コンピューター上のイベント ログ プロバイダーとその
    書き込み先のログ (存在する場合) を取得します。
    
    -------------------------- 例 6 --------------------------
    
    C:\PS>(get-winevent -listlog Application).providernames
    
    説明
    -----------
    このコマンドは、ローカル コンピューター上のアプリケーション ログを書き込み先
    とするすべてのプロバイダーを取得します。
    
    -------------------------- 例 7 --------------------------
    
    C:\PS>>get-winevent -listprovider *policy*
    
    説明
    -----------
    このコマンドは、名前に "policy" という単語を含むイベント ログ プロバイダー
    を取得します。
    
    -------------------------- 例 8 --------------------------
    
    C:\PS>(get-winevent -listprovider microsoft-windows-grouppolicy).events | fo
    rmat-table id, description -auto
    
    説明
    -----------
    このコマンドは、Microsoft-Windows-GroupPolicy イベント プロバイダーにより生
    成されたイベント ID をイベントの説明と共に一覧表示します。
        
    ListProvider パラメーターを使用する場合は、Get-WinEvent が返すオブジェクトの 
    Events プロパティが使用され、Events プロパティに含まれるオブジェクトの ID お
    よび Description プロパティが使用されます。
    
    -------------------------- 例 9 --------------------------
    
    C:\PS>$events = get-winevent -logname "Windows PowerShell"
    
    C:\PS> $events.count
    195
        
    C:\PS> $events | group-object id -noelement | sort-object count -desc
    Count Name
    ----- ----
      147 600
       22 400
       21 601
        3 403
        2 103
        
     C:\PS> $events | group-object leveldisplayname -noelement
    Count Name
    ----- ----
        2 Warning
      193 Information
    
    説明
    -----------
    この例では、Get-WinEvent が返すイベント オブジェクトのプロパティを使用して、
    イベント ログのイベントを調べる方法を示します。
        
    最初のコマンドは、Get-WinEvent コマンドレットを使用して、Windows PowerShell 
    イベント ログのすべてのイベントを取得します。次に、それらのイベントを $event
    s 変数に保存します。ログ名にスペースが含まれるため、ログ名を引用符で囲みます。
        
    2 番目のコマンドは、オブジェクト コレクションの Count プロパティを使用して、
    イベント ログに含まれるエントリの数を調べます。
        
    3 番目のコマンドは、ログに含まれる各イベントの出現回数を表示します。このとき、
    頻度の高いイベントから順に表示されます。この例では、ID 600 のイベントが最も
    頻度の高いイベントです。
        
    4 番目のコマンドは、LevelDisplayName プロパティの値ごとに項目をグループ化し、
    ログに含まれる Error、Warning、および Information イベントの数を表示します。
    
    -------------------------- 例 10 --------------------------
    
    C:\PS>get-winevent -logname *disk*, Microsoft-Windows-Kernel-WHEA
    
    説明
    -----------
    このコマンドは、名前に "disk" が含まれるエラー イベントを、コンピューター上
    にあるすべてのイベント ログ、および Microsoft-Windows-Kernel-WHEA イベント 
    ログから取得します。
    
    -------------------------- 例 11 --------------------------
    
    C:\PS>get-winevent -path 'c:\ps-test\Windows PowerShell.evtx'
    
    説明
    -----------
    このコマンドは、テスト ディレクトリにある Windows PowerShell イベント ログ 
    ファイルのコピーからイベントを取得します。ログ名にスペースが含まれるため、
    パスを引用符で囲みます。
    
    -------------------------- 例 12 --------------------------
    
    C:\PS>get-winevent -path 'c:\tracing\tracelog.etl' -maxevents 100 -oldest
        
    C:\PS> get-winevent -path 'c:\tracing\tracelog.etl' -oldest | sort-object -p
    roperty timecreated -desc | select-object -first 100
    
    説明
    -----------
    これらのコマンドは、ETW (Event Tracing for Windows) イベント トレース ログ 
    ファイルから最初の 100 個のイベントを取得します。
    
    最初のコマンドは、ログのイベントを古い順に 100 個取得します。このコマンドは、
    Get-WinEvent コマンドレットを使用して、Tracelog.etl ファイルからイベントを取
    得します。MaxEvents パラメーターを使用して、取得するイベントの数を 100 個に
    制限しています。イベントはログに書き込まれた順序で (古い順に) 一覧表示される
    ため、Oldest パラメーターが必要です。
    
    2 番目のコマンドは、ログのイベントを新しい順に 100 個取得します。このコマン
    ドは、まず Get-WinEvent コマンドレットを使用して、Tracelog.etl ファイルから
    すべてのイベントを取得します。次に、それらのイベントを Sort-Object コマンド
    レットに渡し、TimeCreated プロパティ値の降順にイベントを並べ替えます。その後、
    並べ替えたイベントを Select-Object コマンドレットに送信して、イベントを新し
    いものから順に 100 個選択します。
    
    -------------------------- 例 13 --------------------------
    
    C:\PS>get-winevent -path "c:\tracing\tracelog.etl", "c:\Logs\Windows PowerSh
    ell.evtx" -oldest | where {$_.id -eq "103"}
    
    説明
    -----------
    この例では、テスト ディレクトリに保存されているイベント トレース ログ ファイ
    ル (.etl) と Windows PowerShell ログ ファイル (.evtx) のコピーからイベントを
    取得する方法を示します。
    
    複数のファイルの種類を単一のコマンドで結合できます。これらのファイルには、同
    じ種類の .NET Framework オブジェクト (EventLogRecord オブジェクト) が含まれ
    るため、同じプロパティを使用してファイルをフィルター処理できます。
    
    このコマンドでは .etl ファイルから読み取りを行うため、Oldest パラメーターが
    必要ですが、Oldest パラメーターは両方のファイルに適用されます。
    
    -------------------------- 例 14 --------------------------
    
    C:\PS># Use the Where-Object cmdlet
    C:\PS> $yesterday = (get-date) - (new-timespan -day 1)
    C:\PS> get-winevent -logname "Windows PowerShell" | where {$_.timecreated -g
    e $yesterday}
    
    # Uses FilterHashTable
    C:\PS> $yesterday = (get-date) - (new-timespan -day 1)
    C:\PS> get-winevent -FilterHashTable @{LogName='Windows PowerShell'; Level=3; 
    StartTime=$yesterday}
    
    # Use FilterXML
    C:\PS> get-winevent -FilterXML "<QueryList><Query><Select Path='Windows Power
    Shell'>*[System[Level=3 and TimeCreated[timediff(@SystemTime) <= 86400000]]]<
    /Select></Query></QueryList>"
    
    # Use FilterXPath
    C:\PS> get-winevent -LogName "Windows Powershell" -FilterXPath "*[System[Leve
    l=3 and TimeCreated[timediff(@SystemTime) <= 86400000]]]"
    
    説明
    -----------
    この例では、イベント ログからイベントを選択するさまざまなフィルター処理方法を
    示します。これらのコマンドはすべて、過去 24 時間以内に発生したイベントを Wind
    ows PowerShell イベント ログから取得します。
    
    フィルターは、Where-Object コマンドレットを使用するよりも効率が良い方法です。
    これは、すべてのオブジェクトを取得した後にオブジェクトをフィルター処理するの
    ではなく、オブジェクトを取得する際にフィルターが適用されるためです。
    
    XML 形式と XPath 形式では日付の定義が難しいため、日付の XML コンテンツを作成
    する場合はイベント ビューアーの現在のログをフィルター機能を使用します。この機
    能の詳細については、イベント ビューアーのヘルプを参照してください。
    
    -------------------------- 例 15 --------------------------
    
    C:\PS>$date = (get-date).AddDays(-2)
        
    C:\PS> $events = get-winevent -FilterHashTable @{ logname = "Microsoft-Windo
    ws-Diagnostics-Performance/Operational"; StartTime = $date; ID = 100 }
    
    説明
    -----------
    この例では、フィルター ハッシュ テーブルを使用して、パフォーマンス ログから
    イベントを取得します。
        
    最初のコマンドは、Get-Date コマンドレットと AddDays メソッドを使用して、現在
    の日付の 2 日前の日付を取得します。日付は $date 変数に保存します。
        
    2 番目のコマンドは、Get-WinEvent コマンドレットを FilterHashTable パラメータ
    ーと共に使用しています。ハッシュ テーブル内のキーを使用して、過去 2 日以内に
    発生し、イベント ID が 100 であるイベントをパフォーマンス ログから選択するフ
    ィルターを定義します。
        
    LogName キーにはイベント ログを、StartTime キーには日付を、ID キーにはイベン
    ト ID をそれぞれ指定します。
    
    -------------------------- 例 16 --------------------------
    
    C:\PS>$starttime = (get-date).adddays(-7)        
        
    C:\PS> $ie-error = Get-WinEvent -FilterHashtable @{logname="application"; pr
    ovidername="Application Error"; data="iexplore.exe"; starttime=$starttime}
    
    説明
    -----------
    この例では、フィルター ハッシュ テーブルを使用して、過去 1 週間以内に発生した 
    Internet Explorer アプリケーション エラーを検索します。
        
    最初のコマンドは、現在の日付の 7 日前の日付を取得し、$starttime 変数に保存し
    ます。
        
    2 番目のコマンドは、Get-WinEvent コマンドレットを FilterHashTable パラメータ
    ーと共に使用しています。ハッシュ テーブル内のキーを使用して、Application Erro
    r プロバイダーにより書き込まれ、"iexplore.exe" という語句を含むイベントをアプ
    リケーション ログから選択するフィルターを定義します。
        
    LogName キーにはイベント ログを指定します。ProviderName キーにはイベント プロ
    バイダーを、StartTime キーにはイベントの開始日を、Data キーにはイベント メッ
    セージのテキストをそれぞれ指定します。
    
関連するリンク
    Online version: http://go.microsoft.com/fwlink/?LinkID=138336
    Get-EventLog 
    Get-Counter 
    about_EventLogs 
    	
記事で解説しているパソコンの環境
 基本ソフト: Windows 7
 キーワード: Windows PowerShell、ヘルプ、Cmdlet、Get-WinEvent
ご利用数: 1973246
感想・要望・問い合わせは こちら