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
コマンドレットは、System や Application ログなどのクラシック ログを含むイベント ログからイベントを取得します。 このコマンドレットは、Windows Vista で導入された Windows イベント ログ テクノロジによって生成されたイベント ログと、Event Tracing for Windows (ETW)によって生成されたログ ファイルのイベントからデータを取得します。 既定では、Get-WinEvent
は最新から最も古い順にイベント情報を返します。
Get-WinEvent
は、イベント ログとイベント ログ プロバイダーを一覧表示します。 コマンドを中断するには、Ctrl +C押します。 選択したログから、または選択したイベント プロバイダーによって生成されたログからイベントを取得できます。 また、1 つのコマンドで複数のソースからのイベントを組み合わせることができます。
Get-WinEvent
では、XPath クエリ、構造化 XML クエリ、ハッシュ テーブル クエリを使用してイベントをフィルター処理できます。
管理者として PowerShell を実行していない場合は、ログに関する情報を取得できないエラー メッセージが表示されることがあります。
例
例 1: ローカル コンピューターからすべてのログを取得する
このコマンドは、ローカル コンピューター上のすべてのイベント ログを取得します。 ログは、Get-WinEvent
が取得する順序で一覧表示されます。 クラシック ログが最初に取得され、次に新しい Windows イベント ログが取得されます。
ログの RecordCount null (空白)、または 0 になる可能性があります。
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 パラメーターを使用して、Setup ログを指定します。 オブジェクトは、パイプラインから Format-List
コマンドレットに送信されます。
Format-List
では、Property パラメーターとアスタリスク (*
) ワイルドカードを使用して各プロパティを表示します。
例 3: クラシック セキュリティ ログを構成する
このコマンドは、クラシック Security ログを表す 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 パラメーターを使用して、Security ログを指定します。 オブジェクトは変数に保存されます。
MaximumSizeInBytes プロパティは、オブジェクトで 1 ギガバイトに設定されます。
SaveChanges メソッドが呼び出され、アクセス違反を処理するために try ブロック内のシステムに変更がプッシュされます。
Get-WinEvent
コマンドレットは、Security ログで再度呼び出され、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 キーワードが使用されます。 詳細については、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、Server02、Server03という 3 つのサーバーの名前が格納されます。
ForEach ステートメントでは、ループを使用して各サーバーを処理 ($Server in $S)
。 中かっこ ({ }
) のスクリプト ブロックは、Get-WinEvent
コマンドを実行します。
ListLog パラメーターは、Application ログを指定します。
ComputerName パラメーターは、変数 $Server
を使用して各サーバーからログ情報を取得します。
オブジェクトは、パイプラインから Select-Object
コマンドレットに送信されます。
Select-Object
は、LogMode 、MaximumSizeInBytes 、RecordCount、LogNameプロパティを取得し、計算式を使用して、$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 パラメーターは、アスタリスク (*
) ワイルドカードを使用して各プロバイダーに関する情報を表示します。 出力では、名 はプロバイダーであり、LogLinks はプロバイダーが書き込むログです。
例 7: 特定のログに書き込むすべてのイベント ログ プロバイダーを取得する
このコマンドは、アプリケーション ログに書き込むすべてのプロバイダーを取得します。
(Get-WinEvent -ListLog Application).ProviderNames
.NET Runtime
.NET Runtime Optimization Service
Application
Application Error
Application Hang
Application Management
Get-WinEvent
コマンドレットは、コンピューターからログ情報を取得します。
ListLog パラメーターは、アプリケーション 使用して、そのログのオブジェクトを取得します。
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 と Description を表示します。
例 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
変数に格納されます。
$Event
の Count プロパティには、ログに記録されたイベントの合計数が表示されます。
$Event
変数は、パイプラインから Group-Object
コマンドレットに送信されます。
Group-Object
は、Property パラメーターを使用して、Id プロパティを指定し、イベント ID 値でオブジェクトをカウントします。
NoElement パラメーターは、オブジェクトの出力から他のプロパティを削除します。 グループ化されたオブジェクトは、パイプラインから Sort-Object
コマンドレットに送信されます。
Sort-Object
では、Property パラメーターを使用して、Count でオブジェクト並べ替えます。
Descending パラメーターは、最大から最下位までの数で出力を表示します。 出力の Count 列には、各イベントの合計数が含まれています。
Name 列には、グループ化されたイベント 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 列には、各イベントの合計数が含まれています。
名 列には、グループ化された LevelDisplayName と logName が含まれます。
例 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-Object
コマンドレットに送信 Sort-Object
、TimeCreated プロパティの値でオブジェクトを降順に並べ替えます。 オブジェクトは、100 個の最新のイベントを表示する Select-Object
コマンドレットにパイプラインに送信されます。
例 15: イベント トレース ログからイベントを取得する
この例では、イベント トレース ログ ファイル (.etl
) とアーカイブされた Windows PowerShell ログ ファイル (.evtx
) からイベントを取得する方法を示します。 1 つのコマンドで複数のファイルの種類を組み合わせることができます。
ファイルには同じ種類の .NET Framework オブジェクト 含まれているため、EventLogRecord 、同じプロパティでフィルター処理できます。
.etl
ファイルから読み取るため、このコマンドには Oldest パラメーターが必要ですが、Oldest パラメーターは各ファイルに適用されます。
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
は、スクリプト ブロックを使用して、ID403のイベントを検索します。
$_
変数はパイプライン内の現在のオブジェクトを表し、Id は Event 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 オブジェクトは、$Date
変数に格納されます。
Get-WinEvent
コマンドレットはログ情報を取得します。
FilterHashtable パラメーターは、出力をフィルター処理するために使用されます。
LogName キーは、アプリケーション ログとして値を指定します。
StartTime キーは、$Date
変数に格納されている値を使用します。
ID キーでは、イベント ID 値 (1003) が使用されます。
例 18: FilterHashtable を使用してアプリケーション エラーを取得する
この例では、FilterHashtable パラメーターを使用して、過去 1 週間に発生した Internet Explorer アプリケーション エラーを検索します。
$StartTime = (Get-Date).AddDays(-7)
Get-WinEvent -FilterHashtable @{
Logname='Application'
ProviderName='Application Error'
Data='iexplore.exe'
StartTime=$StartTime
}
Get-Date
コマンドレットは、AddDays メソッドを使用して、現在の日付の 7 日前の日付を取得します。 date オブジェクトは、$StartTime
変数に格納されます。
Get-WinEvent
コマンドレットはログ情報を取得します。
FilterHashtable パラメーターは、出力をフィルター処理するために使用されます。
LogName キーは、アプリケーション ログとして値を指定します。
ProviderName キーは、イベントの Sourceである値 Application Errorを使用します。
Data キーは、StartTime キー iexplore.exe 変数に格納されている値 $StartTime
使用する値を使用します。
例 19: SuppressHashFilter を使用してアプリケーション エラーをフィルター処理する
上記の例 16 と同様に、この例では、FilterHashtable パラメーターを使用して、アプリケーション ログからイベントを取得します。 ただし、SuppressHashFilter キーを追加して、Information レベルのイベントを除外します。
$Date = (Get-Date).AddDays(-2)
$filter = @{
LogName='Application'
StartTime=$Date
SuppressHashFilter=@{Level=4}
}
Get-WinEvent -FilterHashtable $filter
この例では、Get-WinEvent
は、レベル が 4 (情報) のイベントを除き、過去 2 日間の アプリケーション ログからすべてのイベントを取得します。
パラメーター
-ComputerName
このコマンドレットがイベント ログからイベントを取得するコンピューターの名前を指定します。 NetBIOS 名、IP アドレス、またはコンピューターの完全修飾ドメイン名 (FQDN) を入力します。 既定値はローカル コンピューター localhostです。 このパラメーターは、一度に 1 つのコンピューター名のみを受け入れます。
リモート コンピューターからイベント ログを取得するには、リモート アクセスを許可するようにイベント ログ サービスのファイアウォール ポートを構成します。
このコマンドレットは、PowerShell リモート処理には依存しません。 コンピューターがリモート コマンドを実行するように構成されていない場合でも、ComputerName パラメーターを使用できます。
型: | String |
Aliases: | Cn |
配置: | Named |
規定値: | Local computer |
必須: | False |
パイプライン入力を受け取る: | False |
ワイルドカード文字を受け取る: | False |
-Credential
このアクションを実行するアクセス許可を持つユーザー アカウントを指定します。 既定値は現在のユーザーです。
User01 や Domain01\User01などのユーザー名を入力します。 または、Get-Credential
コマンドレットによって生成されたものなど、PSCredential オブジェクトを入力します。 ユーザー名を入力すると、パスワードの入力を求められます。 パラメーター名のみを入力すると、ユーザー名とパスワードの両方を入力するように求められます。
型: | PSCredential |
配置: | Named |
規定値: | Current user |
必須: | False |
パイプライン入力を受け取る: | False |
ワイルドカード文字を受け取る: | False |
-FilterHashtable
1 つ以上のイベント ログからイベントを選択するクエリをハッシュ テーブル形式で指定します。 クエリには、1 つ以上の キー/値 ペアを持つハッシュ テーブルが含まれています。
ハッシュ テーブル クエリには、次の規則があります。
- キーと値では大文字と小文字が区別されません。
- ワイルドカード文字は、LogName および ProviderName キーに関連付けられている値でのみ有効です。
- 各キーは、各ハッシュ テーブルに 1 回だけ一覧表示できます。
-
パス 値は、ログ ファイル
.etl
、.evt
、および.evtx
へのパスを取得します。 - LogName、パス、および ProviderName キーは、同じクエリで使用できます。
- UserID キーは、有効なセキュリティ識別子 (SID) またはドメイン アカウント名を受け取ることができ、有効な System.Security.Principal.NTAccount オブジェクトを構築するために使用できます。
- データ 値は、名前のないフィールド内のイベント データを受け取ります。 たとえば、クラシック イベント ログのイベントなどです。
-
<named-data>
キーは、名前付きイベント データ フィールドを表します。
Get-WinEvent
キー/値 ペアを解釈できない場合、キーはイベント内のイベント データの大文字と小文字を区別する名前として解釈されます。
有効な Get-WinEvent
キー/値 ペアは次のとおりです。
-
LogName=
<String[]>
-
ProviderName=
<String[]>
-
パスの=
<String[]>
-
キーワード=
<Long[]>
-
ID=
<Int32[]>
-
レベルの=
<Int32[]>
- StartTime =
<DateTime>
をする - EndTime =
<DateTime>
の - UserID =
<SID>
の -
データ=
<String[]>
<named-data>
=<String[]>
- SuppressHashFilter =
<Hashtable>
の
型: | Hashtable[] |
配置: | 0 |
規定値: | None |
必須: | True |
パイプライン入力を受け取る: | False |
ワイルドカード文字を受け取る: | False |
-FilterXml
このコマンドレットが 1 つ以上のイベント ログからイベントを選択する構造化 XML クエリを指定します。
有効な XML クエリを生成するには、カスタム ビューの作成 を使用し、Windows イベント ビューアーで現在のログ 機能をフィルター処理 します。 ダイアログ ボックスの項目を使用してクエリを作成し、[XML] タブをクリックしてクエリを XML 形式で表示します。 XML タブから FilterXml パラメーターの値に XML をコピーできます。 イベント ビューアーの機能の詳細については、イベント ビューアーのヘルプを参照してください。
XML クエリを使用して、複数の XPath ステートメントを含む複雑なクエリを作成します。 XML 形式では、クエリからイベントを除外する Suppress XML 要素を使用することもできます。 イベント ログ クエリの XML スキーマの詳細については、「クエリ スキーマの」および「イベント選択の XML イベント クエリ」セクションを参照してください。
FilterHashtable パラメーターを使用して、Suppress 要素を作成することもできます。
型: | XmlDocument |
配置: | 0 |
規定値: | None |
必須: | True |
パイプライン入力を受け取る: | False |
ワイルドカード文字を受け取る: | False |
-FilterXPath
このコマンドレットが 1 つ以上のログからイベントを選択する XPath クエリを指定します。
XPath 言語の詳細については、「XPath リファレンス」および「イベント選択の選択フィルター」セクションを参照してください。
型: | String |
配置: | Named |
規定値: | None |
必須: | False |
パイプライン入力を受け取る: | False |
ワイルドカード文字を受け取る: | False |
-Force
他のイベント ログに加えて、デバッグ ログと分析ログを取得します。 name パラメーターの値にワイルドカード文字が含まれている場合、デバッグ ログまたは分析ログを取得するには、Force パラメーターが必要です。
既定では、デバッグ ログまたは分析ログの完全な名前を指定しない限り、Get-WinEvent
コマンドレットはこれらのログを除外します。
型: | SwitchParameter |
配置: | Named |
規定値: | None |
必須: | False |
パイプライン入力を受け取る: | False |
ワイルドカード文字を受け取る: | False |
-ListLog
イベント ログを指定します。 コンマ区切りの一覧にイベント ログ名を入力します。 ワイルドカードを使用できます。 すべてのログを取得するには、アスタリスク (*
) ワイルドカードを使用します。
型: | String[] |
配置: | 0 |
規定値: | None |
必須: | True |
パイプライン入力を受け取る: | False |
ワイルドカード文字を受け取る: | True |
-ListProvider
このコマンドレットが取得するイベント ログ プロバイダーを指定します。 イベント ログ プロバイダーは、イベント ログにイベントを書き込むプログラムまたはサービスです。
プロバイダー名をコンマ区切りリストに入力します。 ワイルドカードを使用できます。 コンピューター上のすべてのイベント ログのプロバイダーを取得するには、アスタリスク (*
) ワイルドカードを使用します。
型: | String[] |
配置: | 0 |
規定値: | None |
必須: | True |
パイプライン入力を受け取る: | False |
ワイルドカード文字を受け取る: | True |
-LogName
このコマンドレットがイベントを取得するイベント ログを指定します。 コンマ区切りの一覧にイベント ログ名を入力します。 ワイルドカードを使用できます。
Get-WinEvent
コマンドレットにログ名をパイプすることもできます。
手記
PowerShell では、要求できるログの量は制限されません。 ただし、Get-WinEvent
コマンドレットは、256 の制限がある Windows API に対してクエリを実行します。 これにより、一度にすべてのログをフィルター処理するのが困難になる可能性があります。 これを回避するには、foreach
ループを使用して、次のように各ログを反復処理します。Get-WinEvent -ListLog * | ForEach-Object{ Get-WinEvent -LogName $_.Logname }
型: | String[] |
配置: | 0 |
規定値: | None |
必須: | False |
パイプライン入力を受け取る: | True |
ワイルドカード文字を受け取る: | True |
-MaxEvents
返されるイベントの最大数を指定します。 100 などの整数を入力します。 既定では、ログまたはファイル内のすべてのイベントが返されます。
型: | Int64 |
配置: | Named |
規定値: | None |
必須: | False |
パイプライン入力を受け取る: | False |
ワイルドカード文字を受け取る: | False |
-Oldest
このコマンドレットが最も古い順にイベントを取得することを示します。 既定では、イベントは最新の順序で返されます。
このパラメーターは、.etl
ファイルと .evt
ファイル、およびデバッグ ログと分析ログからイベントを取得するために必要です。 これらのファイルでは、イベントは最も古い順に記録され、イベントは最も古い最初の順序でのみ返されます。
型: | SwitchParameter |
配置: | Named |
規定値: | None |
必須: | False |
パイプライン入力を受け取る: | False |
ワイルドカード文字を受け取る: | False |
-Path
このコマンドレットがイベントを取得するイベント ログ ファイルへのパスを指定します。 ログ ファイルへのパスをコンマ区切りリストに入力するか、ワイルドカード文字を使用してファイル パス パターンを作成します。
Get-WinEvent
では、.evt
、.evtx
、および .etl
ファイル名拡張子を持つファイルがサポートされます。 同じコマンドに、さまざまなファイルやファイルの種類のイベントを含めることができます。
型: | String[] |
Aliases: | PSPath |
配置: | 0 |
規定値: | None |
必須: | True |
パイプライン入力を受け取る: | True |
ワイルドカード文字を受け取る: | True |
-ProviderName
このコマンドレットがイベントを取得するイベント ログ プロバイダーを、文字列配列として指定します。 コンマ区切りリストにプロバイダー名を入力するか、ワイルドカード文字を使用してプロバイダー名パターンを作成します。
イベント ログ プロバイダーは、イベント ログにイベントを書き込むプログラムまたはサービスです。 PowerShell プロバイダーではありません。
型: | String[] |
配置: | 0 |
規定値: | None |
必須: | True |
パイプライン入力を受け取る: | True |
ワイルドカード文字を受け取る: | True |
入力
LogName (文字列) をこのコマンドレットにパイプできます。
FilterXML クエリをこのコマンドレットにパイプできます。
FilterHashtable クエリをこのコマンドレットにパイプできます。
出力
ListLog パラメーターを使用すると、このコマンドレットは EventLogConfiguration オブジェクト 返します。
既定では、このコマンドレットは EventLogRecord オブジェクト 返します。
ListProvider パラメーターを使用すると、このコマンドレットは ProviderMetadata オブジェクト 返します。
メモ
Get-WinEvent
は、Windows Vista 以降のバージョンの Windows を実行しているコンピューター上の Get-EventLog
コマンドレットを置き換えるために設計されています。
Get-EventLog
は、クラシック イベント ログでのみイベントを取得します。
Get-EventLog
は下位互換性のために保持されます。
Get-WinEvent
コマンドレットと Get-EventLog
コマンドレットは、Windows プレインストール環境 (Windows PE) ではサポートされていません。
関連リンク
PowerShell