powershell を使用して特定の Windows イベント ログを追跡するにはどうすればよいですか? 出来ますか?
質問する
9607 次
3 に答える
13
私は時々これをしました:
$idx = (get-eventlog -LogName System -Newest 1).Index
while ($true)
{
start-sleep -Seconds 1
$idx2 = (Get-EventLog -LogName System -newest 1).index
get-eventlog -logname system -newest ($idx2 - $idx) | sort index
$idx = $idx2
}
于 2013-03-07T03:08:44.543 に答える
7
MSDN ドキュメントごと:
Get-WinEvent
Get-EventLog
Windows Vista 以降のバージョンの Windows を実行しているコンピューター のコマンドレットを置き換えるように設計されています。Get-EventLog
従来のイベント ログでのみイベントを取得します。Get-EventLog
下位互換性のために Windows PowerShell に保持されます。
そして、非古典的なイベントログを追跡するという私自身の必要性に拍車をかけられました(それはイベントログのヌーボーパーチャンスでしょうか?)使用するために転用された @mjolinor の素晴らしく簡潔なコードは次のとおりです Get-WinEvent
。
Set-PSDebug -Strict
function Get-WinEventTail($LogName, $ShowExisting=10) {
if ($ShowExisting -gt 0) {
$data = Get-WinEvent -provider $LogName -max $ShowExisting
$data | sort RecordId
$idx = $data[0].RecordId
}
else {
$idx = (Get-WinEvent -provider $LogName -max 1).RecordId
}
while ($true)
{
start-sleep -Seconds 1
$idx2 = (Get-WinEvent -provider $LogName -max 1).RecordId
if ($idx2 -gt $idx) {
Get-WinEvent -provider $LogName -max ($idx2 - $idx) | sort RecordId
}
$idx = $idx2
# Any key to terminate; does NOT work in PowerShell ISE!
if ($Host.UI.RawUI.KeyAvailable) { return; }
}
}
便宜上、いくつかの機能を追加しました。
- デフォルトでは、最初にログの最後の 10 行が表示され、新しいエントリが発生すると連結されます。パラメータを使用して任意の数に調整でき
ShowExisting
ます。 Get-WinEvent
tail が必要とする自然な順序により、( のデフォルトとは逆に) 最も古いものから順にレコードをソートします。- 任意のキーを押して終了できます (PowerShellISE ではできません)。
于 2013-05-03T17:11:48.163 に答える