2016-03-24 16 views
2

get-wineventコマンドレットのメッセージ出力から特定の行を抽出しようとしていますが、これを行う方法を見つけることができませんでした。間違って検索していますが、さらに高度なスクリプト作成方法を学習しています)。私が実行していますがこのです:powershellのGet-Wineventメッセージから特定の行/データを選択する

Message : The computer attempted to validate the credentials for an account. 
Authentication Package: MICROSOFT_AUTHENTICATION_PACKAGE_V1_0 
Logon Account: jdoe 
Source Workstation: Generic-Computername 
Error Code: 0x0 

私は見つけるための簡単な方法を作成しようとしています。(一般的な情報にいくつかの情報を変更しました)これに似たメッセージを返します

Get-WinEvent -ComputerName $DC -FilterHashtable @{Logname='Security';Keywords='9007199254740992';Data=$userid} -MaxEvents 1 | Select Message | Format-List 

コンピュータが最後に高速なトラブルシューティングのためにログインしたが、ソースワークステーションの行だけをフィルタリングすることができませんでした。探している検索結果を見つけるための正しい構文を使用できませんでしたが、今私が探しているものに近いものを見つけていない、どんな助けも素晴らしいだろう!

+0

あなたは 'Data'(再現する)に割り当てられた' $のuserid'のための例を提供することはできますか?また、達成したいことを明確にすることはできますか? –

+0

間違いなく、$ useridはjdoeの行に沿ったものになります。イベントログのデータフィールドにあるユーザー名だけで、特定のユーザー名でログを取得できます。正規表現を使用してみました。答えとこれは働いた!私が達成しようとしているところでは、簡単にコンピュータの誰かが最後にログインしたコンピュータを見て、簡単な方法を知っていれば、どのコンピュータを遠隔操作しようとしているのかを知ることができます。是非聞きたいです :) –

答えて

1

あなたが取得したい情報はわかりませんが、その情報を取得するためにGet-WinEventを使用するとより良い方法があります。しかし、あなたはちょうどあなたが正規表現であることを行うことができますSource Workstationの値を取得したい場合:

$event = Get-WinEvent ` 
    -ComputerName $DC ` 
    -FilterHashtable @{Logname='Security';Keywords='9007199254740992';Data=$userid} ` 
    -MaxEvents 1 ` 
    | Select -expand Message 

[regex]::Match($event, 'Source Workstation:\s*(.*)\s*').Groups[1].Value 
関連する問題