#author("2019-12-30T11:06:00+09:00","","")
#navi(../)
* PowerShellでイベントログを取得するサンプルコード [#ffe9f678]
PowerShellを使ってイベントログを取得するサンプルコードを以下に記します。~
動作確認はPowerShellv4.0を使用しました。

#contents
#htmlinsertpcsp(win-top.html,win-sp.html)

* 関連記事 [#a6e4d6b6]
-[[PowerSehllで任意のイベントログを出力する方法>PowerShell/任意のイベントログを出力する方法]]
-[[PowerShellスクリプトを起動できるようにする>PowerShell/PowerShellスクリプトを起動できるようにする]]
-[[PowerShellでイベントログの内容を確認する・Get-EventLog>PowerShell/イベントログの内容を確認する・Get-EventLog]]

* Get-WinEventコマンドレットを使用してイベントログを収集 [#udf1a0bf]
以下にGet-WinEvnetコマンドレットを使用したサンプルコードを記します。

** イベントログを取ってみる [#x9eeaf89]
以下のサンプルは、自機のイベントログを対象とし、ログの対象は、「システム」、ログレベルは「エラー」~
対象時間は24時間前から現在までと指定しています。

 $hostname = "localhost"
 
 $filter = @{}
 $filter.Add("LogName", "SYSTEM")
 $filter.Add("Level", 2)                            # LogLevel 1:Critical, 2:Error, 3:Warning
 $filter.Add("StartTime", (Get-Date).AddHours(-24)) # Now - 24hour
 $filter.Add("EndTime", (Get-Date))                 # Now
 
 Get-WinEvent -ComputerName $hostname -ErrorAction SilentlyContinue -FilterHashtable $filter

ハッシュ変数$filterにStartTimeとEndTimeを指定していますが、省略可能です。~
ログレベル(Level)も省略可能です。

ソースを指定する場合は、以下のようにハッシュにSourceを追加します。~
以下のサンプルでは、Service Control Managerを指定した例です。~
イベントビューアでソースの部分になります。
 $hostname = "localhost"
 $source = "Service Control Manager"
 
 $filter = @{}
 $filter.Add("LogName", "SYSTEM")
 $filter.Add("Level", 2)                            # LogLevel 1:Critical, 2:Error, 3:Warning
 $filter.Add("StartTime", (Get-Date).AddHours(-24)) # Now - 24hour
 $filter.Add("EndTime", (Get-Date))                 # Now
 Get-WinEvent -ComputerName $hostname -ErrorAction SilentlyContinue -FilterHashtable $filter | ? { $_.ProviderName -eq $source }

$hostnameに遠隔マシンを設定すれば、サーバの情報も取得することができます。

以上、Get-WinEventコマンドレットを使用してイベントログを取得する方法でした。

#htmlinsertpcsp(win-btm.html,win-sp.html)

トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS