2016-05-07 17 views
1

私はpowershellを初めて使用しています。セキュリティログを取得し、その場所にタイムスタンプの付いたcsvファイルにデータを配置するスクリプトを作成する必要があります。ループ。私の望む成果は、私のディレクトリにあるセキュリティログとCSVファイルで、ここでファイル名のタイムスタンプは、私が旗を傾けている部分のために得たものです。イベントログを出力するスクリプトは動作していません

Get-EventLog "Security" -After $Date ` 
| Where -FilterScript {$_.EventID -eq 4624 -and $_.ReplacementStrings[4].Length -gt 10 -and $_.ReplacementStrings[5] -notlike "*$"} ` 
| foreach-Object { 
    $row = "" | Select UserName, LoginTime 
    $row.UserName = $_.ReplacementStrings[5] 
    $row.LoginTime = $_.TimeGenerated 
    $eventList += $row 
    $variable | Export-Csv c:\output.csv 
    } 

$ eventList

輸出-CSV:それはnullであるため、 'はInputObject' をパラメータに引数をバインドすることはできません。 行目:12文字:21

ここに問題があると思いますか?もう一度、プロセスの改善を図ろうとすると、スクリプトのバックグラウンドはごくわずかです。

$variable | Export-Csv c:\output.csv 

答えて

0

はい、$variableをスクリプト内に定義しないため、この例外が発生します。複数のEventLogエントリをcsvとしてエクスポートしようとしているようですので、Export-CsvコマンドレットはおそらくForeach-Objectコマンドレットの外側に属しているはずです。おそらく、次のようなことをしたいと思うかもしれません。

Get-EventLog "Security" -After $Date ` 
| Where -FilterScript {$_.EventID -eq 4624 -and $_.ReplacementStrings[4].Length -gt 10 -and $_.ReplacementStrings[5] -notlike "*$"} ` 
| foreach-Object { 
    $row = "" | Select UserName, LoginTime 
    $row.UserName = $_.ReplacementStrings[5] 
    $row.LoginTime = $_.TimeGenerated 
    $row # this will put the current row to the pipeline 
} | Export-Csv 'c:\output.csv' 
関連する問題