2016-05-18 37 views
2

「アカウントの名前」を「アカウントのログオンに失敗しました」の下の出力をGet-EventLogから取得するにはどうすればよいですか?Get-Wineventのユーザー名を取得する

TimeCreated : 5/18/2016 8:55:43 AM 
ProviderName : Microsoft-Windows-Security-Auditing 
Id   : 4625 
Message  : An account failed to log on. 

       Subject: 
        Security ID:  S-1-5-21-1287344763-2688370722-3395302928-19873 
        Account Name:  service_adfs 
        Account Domain:  DOMAIN 
        Logon ID:   0xD62E4 

       Logon Type:    3 

       Account For Which Logon Failed: 
        Security ID:  S-1-0-0 
        Account Name:  [email protected] 
        Account Domain:

EDIT::彼らは、従来のコマンドレットを含むように私のポストを編集した理由はわからないが、ただ作品

Get-EventLog -ComputerName fs2 -Logname security | 
    ? {$_.eventid -eq "4625"} | 
    select machinename, eventid, @{n='AccountName';e={$_.ReplacementStrings[2]}}, 
     entrytype, message | 
    Export-Csv 1.csv -NoTypeInformation 

サンプルイベントログエントリ:私はそれが置換文字列を含んで知っているが、これだけが取得できません新しいコマンドレットのget-wineventを使っても問題ありません。正規表現は私のためには機能しません。しかしこれはうまくいくようです。

get-winevent -computername fs1 -FilterHashtable @{Logname='Security';Id='4625'} |select timecreated, message, machinename, eventid, @{n='AccountName';e={$_.ReplacementStrings[5]}} 

答えて

2

あなたはMessage財産上の正規表現を使用することもできます。

Account For Which Logon Failed.* Account Name:.+?\b(.*?)\s 

Demoを。

そしてここにあなたのスクリプト:

$regex = 'Account For Which Logon Failed.* Account Name:.+?\b(.*?)\s' 

get-eventlog -computername fs2 -logname security | 
    ?{$_.eventid -eq "4625"} | 
    select machinename,eventid,@{n='AccountName';e={[regex]::Match($_.Message,$regex,[System.Text.RegularExpressions.RegexOptions]::Singleline).Groups[1].Value}},entrytype,message | 
    export-csv 1.csv -NoTypeInformation 
関連する問題