Get-WinEvent

ローカルおよびリモート コンピューター上のイベント ログとイベント トレース ログ ファイルからイベントを取得します。

構文

Get-WinEvent
   [[-LogName] <String[]>]
   [-MaxEvents <Int64>]
   [-ComputerName <String>]
   [-Credential <PSCredential>]
   [-FilterXPath <String>]
   [-Force]
   [-Oldest]
   [<CommonParameters>]
Get-WinEvent
   [-ListLog] <String[]>
   [-ComputerName <String>]
   [-Credential <PSCredential>]
   [-Force]
   [<CommonParameters>]
Get-WinEvent
   [-ListProvider] <String[]>
   [-ComputerName <String>]
   [-Credential <PSCredential>]
   [<CommonParameters>]
Get-WinEvent
   [-ProviderName] <String[]>
   [-MaxEvents <Int64>]
   [-ComputerName <String>]
   [-Credential <PSCredential>]
   [-FilterXPath <String>]
   [-Force]
   [-Oldest]
   [<CommonParameters>]
Get-WinEvent
   [-Path] <String[]>
   [-MaxEvents <Int64>]
   [-Credential <PSCredential>]
   [-FilterXPath <String>]
   [-Oldest]
   [<CommonParameters>]
Get-WinEvent
   [-MaxEvents <Int64>]
   [-ComputerName <String>]
   [-Credential <PSCredential>]
   [-FilterHashtable] <Hashtable[]>
   [-Force]
   [-Oldest]
   [<CommonParameters>]
Get-WinEvent
   [-MaxEvents <Int64>]
   [-ComputerName <String>]
   [-Credential <PSCredential>]
   [-FilterXml] <XmlDocument>
   [-Oldest]
   [<CommonParameters>]

説明

このコマンドレットは、Windows プラットフォームでのみ使用できます。

このコマンドレットはGet-WinEvent、システム ログやアプリケーション ログなどのクラシック ログを含むイベント ログからイベントを取得します。 このコマンドレットは、Windows Vista で導入された Windows イベント ログ テクノロジによって生成されたイベント ログと、Windows イベント トレーシング (ETW) によって生成されたログ ファイル内のイベントからデータを取得します。 既定では、 Get-WinEvent 最新から最も古い順にイベント情報を返します。

Get-WinEvent には、イベント ログとイベント ログ プロバイダーが一覧表示されます。 コマンドを中断するには、Ctrl C キーを押します+ 選択したログまたは選択したイベント プロバイダーによって生成されたログからイベントを取得できます。 さらに、1 つのコマンドで複数のソースからのイベントを組み合わせることができます。 Get-WinEvent では、XPath クエリ、構造化 XML クエリ、ハッシュ テーブル クエリを使用してイベントをフィルター処理できます。

管理istrator として PowerShell を実行していない場合は、ログに関する情報を取得できないエラー メッセージが表示されることがあります。

例 1: ローカル コンピューターからすべてのログを取得する

このコマンドは、ローカル コンピューター上のすべてのイベント ログを取得します。 ログは、ログを取得する順序 Get-WinEvent で一覧表示されます。 クラシック ログが最初に取得され、次に新しい Windows イベント ログが取得されます。 ログ の RecordCount が null (空白)、またはゼロである可能性があります。

Get-WinEvent -ListLog *

LogMode   MaximumSizeInBytes RecordCount LogName
-------   ------------------ ----------- -------
Circular            15532032       14500 Application
Circular             1052672         117 Azure Information Protection
Circular             1052672        3015 CxAudioSvcLog
Circular            20971520             ForwardedEvents
Circular            20971520           0 HardwareEvents

コマンドレットは Get-WinEvent 、コンピューターからログ情報を取得します。 ListLog パラメーターは、アスタリスク (*) ワイルドカードを使用して各ログに関する情報を表示します。

例 2: クラシック セットアップ ログを取得する

このコマンドは、クラシック セットアップ ログを表す EventLogConfiguration オブジェクトを取得します。 このオブジェクトには、ファイル サイズ、プロバイダー、ファイル パス、ログが有効になっているかどうかなど、ログに関する情報が含まれます。

Get-WinEvent -ListLog Setup | Format-List -Property *

FileSize                       : 69632
IsLogFull                      : False
LastAccessTime                 : 3/13/2019 09:41:46
LastWriteTime                  : 3/13/2019 09:41:46
OldestRecordNumber             : 1
RecordCount                    : 23
LogName                        : Setup
LogType                        : Operational
LogIsolation                   : Application
IsEnabled                      : True
IsClassicLog                   : False
SecurityDescriptor             : O:BAG:SYD: ...
LogFilePath                    : %SystemRoot%\System32\Winevt\Logs\Setup.evtx
MaximumSizeInBytes             : 1052672
LogMode                        : Circular
OwningProviderName             : Microsoft-Windows-Eventlog
ProviderNames                  : {Microsoft-Windows-WUSA, Microsoft-Windows-ActionQueue...
ProviderLevel                  :
ProviderKeywords               :
ProviderBufferSize             : 64
ProviderMinimumNumberOfBuffers : 0
ProviderMaximumNumberOfBuffers : 64
ProviderLatency                : 1000
ProviderControlGuid            :

このコマンドレットではGet-WinEvent、ListLog パラメーターを使用してセットアップ ログを指定します。 オブジェクトは、パイプラインからコマンドレットに Format-List 送信されます。 Format-Listでは、各プロパティを表示するために、property パラメーターとアスタリスク (*) ワイルドカードを使用します。

例 3: クラシック セキュリティ ログを構成する

このコマンドは、クラシック セキュリティ ログを表す EventLogConfiguration オブジェクトを取得します。 その後、オブジェクトを使用して、最大ファイル サイズ、ファイル パス、ログが有効になっているかどうかなど、ログの設定を構成します。

$log = Get-WinEvent -ListLog Security
$log.MaximumSizeInBytes = 1gb
try{
   $log.SaveChanges()
   Get-WinEvent -ListLog Security | Format-List -Property *
}catch [System.UnauthorizedAccessException]{
   $ErrMsg  = 'You do not have permission to configure this log!'
   $ErrMsg += ' Try running this script with administrator privileges. '
   $ErrMsg += $_.Exception.Message
   Write-Error $ErrMsg
}

FileSize                       : 69632
IsLogFull                      : False
LastAccessTime                 : 3/13/2019 09:41:46
LastWriteTime                  : 3/13/2019 09:41:46
OldestRecordNumber             : 1
RecordCount                    : 23
LogName                        : Security
LogType                        : Administrative
LogIsolation                   : Custom
IsEnabled                      : True
IsClassicLog                   : True
SecurityDescriptor             : O:BAG:SYD: ...
LogFilePath                    : %SystemRoot%\System32\Winevt\Logs\Security.evtx
MaximumSizeInBytes             : 1073741824
LogMode                        : Circular
OwningProviderName             :
ProviderNames                  : {Microsoft-Windows-WUSA, Microsoft-Windows-ActionQueue...
ProviderLevel                  :
ProviderKeywords               :
ProviderBufferSize             : 64
ProviderMinimumNumberOfBuffers : 0
ProviderMaximumNumberOfBuffers : 64
ProviderLatency                : 1000
ProviderControlGuid            :

このコマンドレットではGet-WinEvent、ListLog パラメーターを使用してセキュリティ ログを指定します。 オブジェクトは変数に保存されます。 MaximumSizeInBytes プロパティは、オブジェクトで 1 ギガバイトに設定されます。 SaveChanges メソッドは、アクセス違反を処理するために try ブロック内のシステムに変更をプッシュするために呼び出されます。 このGet-WinEventコマンドレットは、セキュリティ ログで再度呼び出され、コマンドレットにFormat-Listパイプ処理され、MaximumSizeInBytes プロパティがコンピューターに保存されていることを確認します。

例 4: サーバーからイベント ログを取得する

このコマンドは、イベントを含むローカル コンピューター上のイベント ログのみを取得します。 ログ の RecordCount が null またはゼロになる可能性があります。 この例では、変数を使用します $_ 。 詳細については、「about_Automatic_Variables」を参照してください。

Get-WinEvent -ListLog * -ComputerName localhost | Where-Object { $_.RecordCount }

LogMode   MaximumSizeInBytes RecordCount LogName
-------   ------------------ ----------- -------
Circular            15532032       14546 Application
Circular             1052672         117 Azure Information Protection
Circular             1052672        2990 CxAudioSvcLog
Circular             1052672           9 MSFTVPN Setup
Circular             1052672         282 OAlerts

コマンドレットは Get-WinEvent 、コンピューターからログ情報を取得します。 ListLog パラメーターは、アスタリスク (*) ワイルドカードを使用して各ログに関する情報を表示します。 ComputerName パラメーターはローカル コンピューター localhost からログを取得するように指定します。 オブジェクトは、パイプラインからコマンドレットに Where-Object 送信されます。 Where-Object は、データを含むログのみを返すために使用 $_.RecordCount されます。 $_ は、パイプライン内の現在のオブジェクトを表す変数です。 RecordCount は、null 以外の値を持つオブジェクトのプロパティです。

例 5: 複数のサーバーからイベント ログを取得する

この例では、Server01、Server02、Server03 の 3 台のコンピューター上のアプリケーション イベント ログを表すオブジェクトを取得します。 ComputerName パラメーターは 1 つの値のみを受け取るため、ForEach キーワード (keyword)が使用されます。 詳細については、about_Foreachを参照してください

$S = 'Server01', 'Server02', 'Server03'
ForEach ($Server in $S) {
  Get-WinEvent -ListLog Application -ComputerName $Server |
    Select-Object LogMode, MaximumSizeInBytes, RecordCount, LogName,
      @{name='ComputerName'; expression={$Server}} |
    Format-Table -AutoSize
}

LogMode MaximumSizeInBytes RecordCount LogName     ComputerName
 ------- ------------------ ----------- -------     ------------
Circular           15532032       14577 Application Server01
Circular           15532032        9689 Application Server02
Circular           15532032        5309 Application Server03

この変数$Sには、Server01、Server02Server03 の 3 つのサーバーという名前が格納されます。 ForEach ステートメントは($Server in $S)ループを使用して各サーバーを処理します。 中かっこ ({ }) のスクリプト ブロックでコマンドが Get-WinEvent 実行されます。 ListLog パラメーターは、アプリケーション ログを指定します。 ComputerName パラメーターは、変数$Serverを使用して各サーバーからログ情報を取得します。

オブジェクトは、パイプラインからコマンドレットに Select-Object 送信されます。 Select-Objectは、LogMode、MaximumSizeInBytes、RecordCountLogName のプロパティを取得し、計算式を使用して、変数を使用して $Server ComputerName を表示します。 PowerShell コンソールに出力を表示するために Format-Table 、オブジェクトはパイプラインからコマンドレットに送信されます。 AutoSize パラメーターは、画面に合わせて出力を書式設定します。

例 6: イベント ログ プロバイダーとログ名を取得する

このコマンドは、イベント ログ プロバイダーと、そのプロバイダーが書き込むログを取得します。

Get-WinEvent -ListProvider *

Name     : .NET Runtime
LogLinks : {Application}
Opcodes  : {}
Tasks    : {}

Name     : .NET Runtime Optimization Service
LogLinks : {Application}
Opcodes  : {}
Tasks    : {}

コマンドレットは Get-WinEvent 、コンピューターからログ情報を取得します。 ListProvider パラメーターは、アスタリスク (*) ワイルドカードを使用して各プロバイダーに関する情報を表示します。 出力では、 Name はプロバイダー、 LogLinks はプロバイダーが書き込むログです。

例 7: 特定のログに書き込むすべてのイベント ログ プロバイダーを取得する

このコマンドは、アプリケーション ログに書き込むすべてのプロバイダーを取得します。

(Get-WinEvent -ListLog Application).ProviderNames

.NET Runtime
.NET Runtime Optimization Service
Application
Application Error
Application Hang
Application Management

コマンドレットは Get-WinEvent 、コンピューターからログ情報を取得します。 ListLog パラメーターは、Application を使用してそのログのオブジェクトを取得します。 ProviderNames はオブジェクトのプロパティであり、アプリケーション ログに書き込むプロバイダーを表示します。

例 8: 特定の文字列を含むイベント ログ プロバイダー名を取得する

このコマンドは、プロバイダーの名前に特定の文字列を含む名前を持つイベント ログ プロバイダーを取得します。

Get-WinEvent -ListProvider *Policy*

Name     : Group Policy Applications
LogLinks : {Application}
Opcodes  : {}
Tasks    : {}

Name     : Group Policy Client
LogLinks : {Application}
Opcodes  : {}
Tasks    : {}

Name     : Group Policy Data Sources
LogLinks : {Application}
Opcodes  : {}
Tasks    : {}

コマンドレットは Get-WinEvent 、コンピューターからログ情報を取得します。 ListProvider パラメーターは、アスタリスク (*) ワイルドカードを使用して、プロバイダーの名前内の任意の場所で Policy を検索します。

例 9: イベント プロバイダーが生成するイベント ID を取得する

このコマンドは、Microsoft-Windows-GroupPolicy イベント プロバイダーが生成するイベント ID とイベントの説明を一覧表示します。

(Get-WinEvent -ListProvider Microsoft-Windows-GroupPolicy).Events | Format-Table Id, Description

Id  Description
  --  -----------
1500  The Group Policy settings for the computer were processed successfully...
1501  The Group Policy settings for the user were processed successfully...
4115  Group Policy Service started.
4116  Started the Group Policy service initialization phase.
4117  Group Policy Session started.

コマンドレットは Get-WinEvent 、コンピューターからログ情報を取得します。 ListProvider パラメーターはプロバイダーである Microsoft-Windows-GroupPolicy を指定します。 式はかっこで囲まれ、Events プロパティを使用してオブジェクトを取得します。 オブジェクトは、パイプラインからコマンドレットに Format-Table 送信されます。 Format-Table には、イベント オブジェクトの ID説明 が表示されます。

例 10: イベント オブジェクトのプロパティからログ情報を取得する

この例では、イベント オブジェクトのプロパティを使用してログの内容に関する情報を取得する方法を示します。 イベント オブジェクトは変数に格納され、イベント ID と Levelグループ化およびカウントされます。

$Event = Get-WinEvent -LogName 'Windows PowerShell'
$Event.Count
$Event | Group-Object -Property Id -NoElement | Sort-Object -Property Count -Descending
$Event | Group-Object -Property LevelDisplayName -NoElement

195

Count  Name
-----  ----
  147  600
   22  400
   21  601
    3  403
    2  103

Count  Name
-----  ----
    2  Warning
  193  Information

このコマンドレットではGet-WinEvent、LogName パラメーターを使用して Windows PowerShell イベント ログを指定します。 イベント オブジェクトは変数に $Event 格納されます。 Count プロパティ$Event、ログに記録されたイベントの合計数を示します。

変数は $Event 、パイプラインからコマンドレットに Group-Object 送信されます。 Group-Objectでは、Property パラメーターを使用して Id プロパティを指定し、イベント ID 値でオブジェクトをカウントします。 NoElement パラメーターは、オブジェクトの出力から他のプロパティを削除します。 グループ化されたオブジェクトは、パイプラインからコマンドレットに Sort-Object 送信されます。 Sort-Objectでは、Property パラメーターを使用して、Countオブジェクトを並べ替えます。 Descending パラメーターは、最大から最下位までの数で出力を表示します。 出力の Count 列には、各イベントの合計数が含まれています。 [ 名前] 列には、グループ化されたイベント ID 番号が含まれています。

変数は $Event 、パイプラインからコマンドレットに Group-Object 送信されます。 Group-Objectでは、Property パラメーターを使用して LevelDisplayName プロパティを指定し、LevelDisplayName でオブジェクトをカウントします。 オブジェクトは、警告情報などのレベルでグループ化されます。 NoElement パラメーターは、出力から他のプロパティを削除します。 出力の Count 列には、各イベントの合計数が含まれています。 [名前] 列には、グループ化された LevelDisplayName が含まれています

例 11: 名前に指定した文字列を含むエラー イベントを取得する

この例では、ログ名のコンマ区切り文字列を使用します。 出力は、エラーや警告などのレベルとログ名によってグループ化されます。

Get-WinEvent -LogName *PowerShell*, Microsoft-Windows-Kernel-WHEA* |
  Group-Object -Property LevelDisplayName, LogName -NoElement |
    Format-Table -AutoSize

Count  Name
-----  ----
    1  Error, PowerShellCore/Operational
   26  Information, Microsoft-Windows-Kernel-WHEA/Operational
  488  Information, Microsoft-Windows-PowerShell/Operational
   77  Information, PowerShellCore/Operational
 9835  Information, Windows PowerShell
   19  Verbose, PowerShellCore/Operational
  444  Warning, Microsoft-Windows-PowerShell/Operational
  512  Warning, PowerShellCore/Operational

コマンドレットは Get-WinEvent 、コンピューターからログ情報を取得します。 LogName パラメーターは、アスタリスク (*) ワイルドカードを含むコンマ区切りの文字列を使用して、ログ名を指定します。 オブジェクトは、パイプラインからコマンドレットに Group-Object 送信されます。 Group-Objectでは、Property パラメーターを使用して、LevelDisplayName と LogNameオブジェクトをグループ化します。 NoElement パラメーターは、出力から他のプロパティを削除します。 グループ化されたオブジェクトは、パイプラインからコマンドレットに Format-Table 送信されます。 Format-Table では、 AutoSize パラメーターを使用して列の書式を設定します。 Count 列には、各イベントの合計数が含まれています。 [名前] 列には、グループ化された LevelDisplayNameLogName が含まれています

例 12: アーカイブされたイベント ログからイベントを取得する

Get-WinEvent は、保存されたログ ファイルからイベント情報を取得できます。 このサンプルでは、ローカル コンピューターに格納されているアーカイブ済みの PowerShell ログを使用します。

Get-WinEvent -Path 'C:\Test\Windows PowerShell.evtx'

ProviderName: PowerShell

TimeCreated              Id LevelDisplayName  Message
-----------              -- ----------------  -------
3/15/2019 13:54:13      403 Information       Engine state is changed from Available to Stopped...
3/15/2019 13:54:13      400 Information       Engine state is changed from None to Available...
3/15/2019 13:54:13      600 Information       Provider "Variable" is Started...
3/15/2019 13:54:13      600 Information       Provider "Function" is Started...
3/15/2019 13:54:13      600 Information       Provider "FileSystem" is Started...

コマンドレットは Get-WinEvent 、コンピューターからログ情報を取得します。 Path パラメーターは、ディレクトリとファイル名を指定します。

例 13: アーカイブされたイベント ログから特定の数のイベントを取得する

これらのコマンドは、アーカイブされたイベント ログから特定の数のイベントを取得します。 Get-WinEvent には、イベントの最大数または最も古いイベントを取得できるパラメーターがあります。 このサンプルでは、C:\Test\PowerShellCore Operational.evtx格納されているアーカイブされた PowerShell ログを使用します。

Get-WinEvent -Path 'C:\Test\PowerShellCore Operational.evtx' -MaxEvents 100

ProviderName: PowerShellCore

TimeCreated                 Id   LevelDisplayName  Message
-----------                 --   ----------------  -------
3/15/2019 09:54:54        4104   Warning           Creating Scriptblock text (1 of 1):...
3/15/2019 09:37:13       40962   Information       PowerShell console is ready for user input
3/15/2019 07:56:24        4104   Warning           Creating Scriptblock text (1 of 1):...
...
3/7/2019 10:53:22        40961   Information       PowerShell console is starting up
3/7/2019 10:53:22         8197   Verbose           Runspace state changed to Opening
3/7/2019 10:53:22         8195   Verbose           Opening RunspacePool

コマンドレットは Get-WinEvent 、コンピューターからログ情報を取得します。 Path パラメーターは、ディレクトリとファイル名を指定します。 MaxEvents パラメーターは、最新から最も古いレコードまで、100 個のレコードを表示することを指定します。

例 14: Windows のイベント トレース

Event Tracing for Windows (ETW) は、イベントが発生したときにログにイベントを書き込みます。 イベントは、最も古いものから最新の順序で格納されます。 アーカイブされた ETW ファイルは、TraceLog.etl などの形式で.etl保存されます。 イベントはログに書き込まれる順序で一覧表示されるため 、Oldest パラメーターが必要です。

Get-WinEvent -Path 'C:\Tracing\TraceLog.etl' -Oldest |
  Sort-Object -Property TimeCreated -Descending |
    Select-Object -First 100

このコマンドレットは Get-WinEvent 、アーカイブされたファイルからログ情報を取得します。 Path パラメーターは、ディレクトリとファイル名を指定します。 Oldest パラメーターは、書き込まれた順序で、最も古い順にイベントを出力するために使用されます。 オブジェクトはパイプラインからコマンドレットSort-ObjectSort-Object送られ、TimeCreated プロパティの値でオブジェクトが降順に並べ替えられます。 オブジェクトは、100 個の最新のイベントを Select-Object 表示するコマンドレットにパイプラインで送信されます。

例 15: イベント トレース ログからイベントを取得する

この例では、イベント トレース ログ ファイル () とアーカイブされた Windows PowerShell ログ ファイル (.etl.evtx) からイベントを取得する方法を示します。 1 つのコマンドで複数のファイルの種類を組み合わせることができます。 ファイルには同じ種類の .NET Framework オブジェクト EventLogRecord が含まれているため、同じプロパティでフィルター処理できます。 ファイルから読み取るため、このコマンドには Oldest パラメーターが必要ですが、Oldest パラメーターは各ファイルに適用されます。.etl

Get-WinEvent -Path 'C:\Tracing\TraceLog.etl', 'C:\Test\Windows PowerShell.evtx' -Oldest |
  Where-Object { $_.Id -eq '403' }

このコマンドレットは Get-WinEvent 、アーカイブされたファイルからログ情報を取得します。 Path パラメーターは、コンマ区切りのリストを使用して、各ファイル のディレクトリとファイル名を指定します。 Oldest パラメーターは、書き込まれた順序で、最も古い順にイベントを出力するために使用されます。 オブジェクトは、パイプラインからコマンドレットに Where-Object 送信されます。 Where-Objectでは、スクリプト ブロックを使用して ID が 403 のイベントを検索します 変数は $_ パイプライン内の現在のオブジェクトを表し、 Id はイベント ID プロパティです。

例 16: イベント ログの結果をフィルター処理する

この例では、イベント ログからイベントをフィルター処理して選択するさまざまな方法を示します。 これらのコマンドはすべて、Windows PowerShell イベント ログから過去 24 時間以内に発生したイベントを取得します。 フィルター メソッドは、コマンドレットを使用 Where-Object するよりも効率的です。 フィルターは、オブジェクトが取得されると適用されます。 Where-Object は、すべてのオブジェクトを取得し、すべてのオブジェクトにフィルターを適用します。

# Using the Where-Object cmdlet:
$Yesterday = (Get-Date) - (New-TimeSpan -Day 1)
Get-WinEvent -LogName 'Windows PowerShell' | Where-Object { $_.TimeCreated -ge $Yesterday }

# Using the FilterHashtable parameter:
$Yesterday = (Get-Date) - (New-TimeSpan -Day 1)
Get-WinEvent -FilterHashtable @{ LogName='Windows PowerShell'; Level=3; StartTime=$Yesterday }

# Using the FilterXML parameter:
$xmlQuery = @'
<QueryList>
  <Query Id="0" Path="Windows PowerShell">
    <Select Path="System">*[System[(Level=3) and
        TimeCreated[timediff(@SystemTime) <= 86400000]]]</Select>
  </Query>
</QueryList>
'@
Get-WinEvent -FilterXML $xmlQuery

# Using the FilterXPath parameter:
$XPath = '*[System[Level=3 and TimeCreated[timediff(@SystemTime) <= 86400000]]]'
Get-WinEvent -LogName 'Windows PowerShell' -FilterXPath $XPath

例 17: FilterHashtable を使用してアプリケーション ログからイベントを取得する

この例では、FilterHashtable パラメーターを使用して、アプリケーション ログからイベントを取得します。 ハッシュ テーブルでは、キーと値のペアが使用されます。 FilterHashtable パラメーターの詳細については、「FilterHashtable を使用した Get-WinEvent クエリの作成」を参照してください。 ハッシュ テーブルの詳細については、「about_Hash_Tables (ハッシュ テーブルについて)」をご覧ください。

$Date = (Get-Date).AddDays(-2)
Get-WinEvent -FilterHashtable @{ LogName='Application'; StartTime=$Date; Id='1003' }

このコマンドレットではGet-Date、AddDays メソッドを使用して、現在の日付の 2 日前の日付を取得します。 日付オブジェクトは変数に $Date 格納されます。

コマンドレットは Get-WinEvent ログ情報を取得します。 FilterHashtable パラメーターは、出力をフィルター処理するために使用されます。 LogName キーは、値をアプリケーション ログとして指定します。 StartTime キーは、変数に格納されている値を$Date使用します。 Id キーはイベント ID 値 1003 を使用します

例 18: FilterHashtable を使用してアプリケーション エラーを取得する

この例では、FilterHashtable パラメーターを使用して、過去 1 週間に発生したインターネット エクスプローラー アプリケーション エラーを検索します。

$StartTime = (Get-Date).AddDays(-7)
Get-WinEvent -FilterHashtable @{
  Logname='Application'
  ProviderName='Application Error'
  Data='iexplore.exe'
  StartTime=$StartTime
}

このコマンドレットでは Get-DateAddDays メソッドを使用して、現在の日付の 7 日前の日付を取得します。 日付オブジェクトは変数に $StartTime 格納されます。

コマンドレットは Get-WinEvent ログ情報を取得します。 FilterHashtable パラメーターは、出力をフィルター処理するために使用されます。 LogName キーは、値をアプリケーション ログとして指定します。 ProviderName キーはイベントのソースである値 Application Error を使用します Data キーはStartTime キー iexplore.exe変数に格納されている値を使用する値を$StartTime使用します。

例 19: SuppressHashFilter を使用してアプリケーション エラーをフィルター処理する

上記の例 16 と同様に、この例では FilterHashtable パラメーターを使用して、アプリケーション ログからイベントを取得します。 ただし、SuppressHashFilter キーを追加して、情報レベルのイベントを除外します。

$Date = (Get-Date).AddDays(-2)
$filter = @{
  LogName='Application'
  StartTime=$Date
  SuppressHashFilter=@{Level=4}
}
Get-WinEvent -FilterHashtable $filter

この例では、レベル 4 (情報) を持つイベントを除き、Get-WinEvent過去 2 日間のアプリケーション ログからすべてのイベントを取得します。

パラメーター

-ComputerName

このコマンドレットがイベント ログからイベントを取得するコンピューターの名前を指定します。 NetBIOS 名、IP アドレス、またはコンピューターの完全修飾 doメイン 名 (FQDN) を入力します。 既定値はローカル コンピューターの localhost です。 このパラメーターは、一度に 1 つのみコンピューター名を受け入れます。

リモート コンピューターからイベント ログを取得するには、リモート アクセスを許可するようにイベント ログ サービスのファイアウォール ポートを構成します。

このコマンドレットは、PowerShell リモート処理には依存しません。 コンピューターがリモート コマンドを 実行するように構成されていない場合でも、ComputerName パラメーターを使用できます。

Type:String
Aliases:Cn
Position:Named
Default value:Local computer
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Credential

この処理を実行するアクセス許可を持つユーザー アカウントを指定します。 既定値は現在のユーザーです。

User01 や Doメイン01\User01 などのユーザー名を入力します。 または、コマンドレットによって生成されたものなど、PSCredential オブジェクトをGet-Credential入力します。 ユーザー名を入力すると、パスワードの入力を求められます。 パラメーター名のみを入力すると、ユーザー名とパスワードの両方を入力するように求められます。

Type:PSCredential
Position:Named
Default value:Current user
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-FilterHashtable

1 つ以上のイベント ログからイベントを選択するクエリをハッシュ テーブル形式で指定します。 クエリには、1 つ以上 のキーと値 のペアを持つハッシュ テーブルが含まれています。

ハッシュ テーブル クエリには、次のルールがあります。

  • キーと値では大文字と小文字が区別されません。
  • ワイルドカード文字は、LogName キーと ProviderName キーに関連付けられている値でのみ有効です。
  • 各キーは、各ハッシュ テーブルに 1 回だけ一覧表示できます。
  • Path 値は、ログ ファイルへのパスを.evtx.etl.evt受け取ります。
  • LogName、PathProviderName のキーは、同じクエリで使用できます。
  • UserID キーは、有効な System.Security.Principal.NTAccount オブジェクトの構築に使用できる有効なセキュリティ識別子 (SID) または doメイン アカウント名を受け取ることができます。
  • Data 値は、名前のないフィールド内のイベント データを受け取ります。 たとえば、クラシック イベント ログのイベントなどです。
  • <named-data> キーは、名前付きイベント データ フィールドを表します。

キーと値のペアを解釈できない場合Get-WinEvent、キーはイベント内のイベント データの大文字と小文字を区別する名前として解釈されます。

有効な Get-WinEventキーと値 のペアは次のとおりです。

  • Logname=<String[]>
  • ProviderName=<String[]>
  • Path=<String[]>
  • キーワード=<Long[]>
  • ID=<Int32[]>
  • Level=<Int32[]>
  • StartTime=<DateTime>
  • EndTime=<DateTime>
  • UserID=<SID>
  • Data=<String[]>
  • <named-data>=<String[]>
  • SuppressHashFilter=<Hashtable>
Type:Hashtable[]
Position:0
Default value:None
Required:True
Accept pipeline input:False
Accept wildcard characters:False

-FilterXml

このコマンドレットが 1 つ以上のイベント ログからイベントを選択する構造化 XML クエリを指定します。

有効な XML クエリを生成するには、Windows イベント ビューアーでカスタム ビューの作成と現在のログのフィルター処理機能を使用します。 ダイアログ ボックス内の項目を使用してクエリを作成し、その後、[XML] タブをクリックして XML 形式でクエリを表示します。 XML タブから FilterXml パラメーターの値に XML をコピーできます。 イベント ビューアーの機能の詳細については、イベント ビューアーのヘルプを参照してください。

XML クエリを使用して、複数の XPath ステートメントを含む複雑なクエリを作成します。 XML 形式では、クエリからイベントを 除外する XML 抑制要素を使用することもできます。 イベント ログ クエリの XML スキーマの詳細については、「イベント選択」の「クエリ スキーマと XML イベント クエリ」セクションを参照してください

FilterHashtable パラメーターを使用して Suppress 要素を作成することもできます。

Type:XmlDocument
Position:0
Default value:None
Required:True
Accept pipeline input:False
Accept wildcard characters:False

-FilterXPath

このコマンドレットが 1 つ以上のログからイベントを選択する XPath クエリを指定します。

XPath 言語の詳細については、「 イベント選択」の「XPath リファレンス 」および「選択フィルター」セクション を参照してください

Type:String
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Force

その他のイベント ログに加え、デバッグ ログと分析ログを取得します。 Name パラメーターの値にワイルドなカード文字が含まれている場合、デバッグログまたは分析ログを取得するには、Force パラメーターが必要です。

既定では、デバッグ ログまたは分析ログの完全な名前を指定しない限り、 Get-WinEvent これらのログは除外されます。

Type:SwitchParameter
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-ListLog

イベント ログを指定します。 コンマ区切りの一覧で、イベント ログ名を入力します。 ワイルドカードを使用できます。 すべてのログを取得するには、アスタリスク (*) wildカード を使用します。

Type:String[]
Position:0
Default value:None
Required:True
Accept pipeline input:False
Accept wildcard characters:True

-ListProvider

このコマンドレットが取得するイベント ログ プロバイダーを指定します。 イベント ログ プロバイダーは、イベント ログにイベントを書き込むプログラムまたはサービスです。

コンマ区切りの一覧でプロバイダー名を入力します。 ワイルドカードを使用できます。 コンピューター上のすべてのイベント ログのプロバイダーを取得するには、アスタリスク (*) ワイルドカードを使用します。

Type:String[]
Position:0
Default value:None
Required:True
Accept pipeline input:False
Accept wildcard characters:True

-LogName

このコマンドレットがイベントを取得するイベント ログを指定します。 コンマ区切りの一覧で、イベント ログ名を入力します。 ワイルドカードを使用できます。 コマンドレットにログ名を Get-WinEvent パイプすることもできます。

Note

PowerShell では、要求できるログの量は制限されません。 ただし、このコマンドレットは Get-WinEvent 、256 の制限がある Windows API に対してクエリを実行します。 これにより、一度にすべてのログをフィルター処理するのが困難になる可能性があります。 これを回避するには、ループを foreach 使用して次のように各ログを反復処理します。 Get-WinEvent -ListLog * | ForEach-Object{ Get-WinEvent -LogName $_.Logname }

Type:String[]
Position:0
Default value:None
Required:False
Accept pipeline input:True
Accept wildcard characters:True

-MaxEvents

返されるイベントの最大数を指定します。 100 などの整数を入力します。 既定では、ログやファイル内のすべてのイベントを返します。

Type:Int64
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Oldest

このコマンドレットが最も古い順にイベントを取得することを示します。 既定では、イベントは新しい順に返されます。

このパラメーターは、デバッグ ログと分析ログから .etl 、および .evt ファイルからイベントを取得するために必要です。 これらのファイルでは、イベントは古い順に記録され、イベントは古い順でのみ返すことができます。

Type:SwitchParameter
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Path

このコマンドレットがイベントを取得するイベント ログ ファイルへのパスを指定します。 コンマ区切りの一覧でログ ファイルへのパスを入力するか、ワイルドカード文字を使用してファイル パス パターンを作成します。

Get-WinEventでは、ファイル名拡張子 、.evtxおよび.etlファイル名拡張子を.evt持つファイルがサポートされます。 同じコマンドで、異なるファイルおよびファイルの種類からのイベントを含めることができます。

Type:String[]
Aliases:PSPath
Position:0
Default value:None
Required:True
Accept pipeline input:True
Accept wildcard characters:True

-ProviderName

このコマンドレットがイベントを取得するイベント ログ プロバイダーを、文字列配列として指定します。 コンマ区切りの一覧でプロバイダー名を入力するか、ワイルドカード文字を使用してプロバイダー名パターンを作成します。

イベント ログ プロバイダーは、イベント ログにイベントを書き込むプログラムまたはサービスです。 PowerShell プロバイダーではありません。

Type:String[]
Position:0
Default value:None
Required:True
Accept pipeline input:True
Accept wildcard characters:True

入力

String

LogName (文字列) をこのコマンドレットにパイプできます。

XmlDocument

FilterXML クエリをこのコマンドレットにパイプできます。

Hashtable

FilterHashtable クエリをこのコマンドレットにパイプできます。

出力

EventLogConfiguration

ListLog パラメーターを使用すると、このコマンドレットは EventLogConfiguration オブジェクトを返します。

EventLogRecord

既定では、このコマンドレットは EventLogRecord オブジェクトを返します。

ProviderMetadata

ListProvider パラメーターを使用すると、このコマンドレットは ProviderMetadata オブジェクトを返します。

メモ

Get-WinEvent は、Windows Vista 以降のバージョンの Get-EventLog Windows を実行しているコンピューター上のコマンドレットを置き換えるために設計されています。 Get-EventLog は、クラシック イベント ログでのみイベントを取得します。 Get-EventLog 関数は下位互換性のために残されています。

Get-EventLogこれらのGet-WinEventコマンドレットは、Windows プレインストール環境 (Windows PE) ではサポートされていません。