2016-04-06 13 views
1

特定のセキュリティイベントログを取得してCSVファイルにエクスポートできるPowerShellスクリプトを完了するための助けが必要です。現在、私はこのラインを持って、特定のWindowsセキュリティイベントログをエクスポートする

Get-EventLog -LogName Security 4720,4722,4725 -After ((Get-Date).AddDays(-1)) | Export-CSV "C:\EventLogs.csv"

これは私が取得したいセキュリティイベントを取得しています。しかし、それが提供する情報は不完全です。アカウント2以上のこれらを含める方法があります

変更されました - 変更

  • 対象アカウントをしたアカウント - これは、出力のこれら2、

    1. アカウント名が含まれていませんか?

      私は、Get-WinEventがこれに適していると言われましたが、私はPowerShellスクリプティングをかなり新しくしていますので、少し助けていただければ幸いです。あなたは一般的に

  • 答えて

    1

    ありがとう、Export-Csvます:第一入力オブジェクト

    • 外観はその型を検査し、タイプが持っているすべてのプロパティをもとにエクスポートする列を決定します。興味のある情報がタイプのMessageプロパティ内を含有させることができるようにあなたのケースで

    は、しかし、それが聞こえます。

    ここMessageからアカウント名を抽出し、例を示します

    したがって、あなたはExport-Csvは、エクスポートがすることを、別の特性として、関心のある情報を抽出するために巧妙に作成されたハッシュテーブルと中間Select-Objectコールを使用する必要があります。つまり、最初の正規表現は-replaceに渡さ方法

    Get-EventLog -LogName Security 4720,4722,4725 -After ((Get-Date).AddDays(-1)) | 
    Select-Object EventId, Time, @{ 
        n='AccountName'; 
        e={ ($_.message -replace '\n', ' ') -replace '.*?account name:\t+([^\s]+).*', '$1' } 
    }, @{ 
        n='TargetAccount'; 
        e={ ($_.message -replace '\n', ' ') -replace '.*account name:\t+([^\s]+).*', '$1' } 
    } | Export-Csv 'C:\EventLogs.csv' 
    

    非貪欲.*?)である:プロパティとは別々の列としてそれらをエクスポートの最初ののオカレンスは一致しますが、2番目のものは貪欲(ちょうど.*)です。つまり、の最後ののオカレンスが一致します。

    -replaceは明らかに行単位で一致するため、改行をスペースで置き換える余分な手順が必要です。

  • +0

    こんにちは。私はあなたのスクリプトをテストし、それは魅力のように働いた!しかし、私が得る唯一のエントリはTarget AccoutNameです。 Source/Subject AccountNameとイベントがトリガーした時間を含めることはできますか?私は本当にあなたの助けに感謝します! – lapsantos

    +0

    @lapsantos:私の更新を見てください。これは 'Message'フィールドを解析する最も堅牢な方法ではありませんが、あなたの場合には可能です。 'Select-Object'に渡されたコンマ区切りのリストに追加するだけで(つまり、プロパティ名の配列に追加することによって)、' Source'のような標準フィールドを必要に応じて追加することができます。 – mklement0

    関連する問題