PowerShellでイベントログをリモートから取得するスクリプトを作成しましたが、スクリプトが独自のイベントログエントリを作成する方法のファンではありません。Get-EventLogをリモートで実行すると実際のイベントログが消去される
特にこのスクリプトは、ログオン/ログオフイベントを含むいくつかのタイプのイベントIDを取得します。最近、別のユーザーのイベントを取得するためにスクリプトを実行するように求められ、このデータを数時間で取得する必要がありました。通常、私はスクリプトを開始し、その日の大部分を実行します(通常、ここにはたくさんのデータがあるため)。しかし、このプロセスを高速化するために、このデータを4つ以上スピードアップしていつもスクリプトの各インスタンスは異なる時間フレームを調べていたので、4つのスクリプトを組み合わせて、私が求められた時間枠でフェッチしていました。
3時間ほどかけて、このリモートコンピュータのユーザーIDには100万回を超えるログイン試行がありました。私は最初にフェッチするように頼まれたイベントログデータを上書きしてしまうほど多くのログインをしていました。
私は現在、これをより速く、より効率的に、より信頼性を高める方法を研究しています。
私のコードの中心は、かなり単純でシンプルで、ほとんどの部分で動作します。
$output = Get-EventLog `
-instanceID 4672,4647,4634,4624,4625,4648,4675,4800,4801,4802,4803 `
-logName Security `
-after (Get-Date $inStartDate) `
-before (Get-Date $inEndDate).addDays(1) `
-message ("*" + $InUserID + "*") `
-computerName $inPCID
これまでのところ私の研究では把握できなかったいくつかの質問があります。なぜGet-EventLogは非常に多くの接続を行う必要がありますか?それは接続が落ち続けていたかどうかですか? -ComputerName
を指定、または私はEnter-PSSession
またはInvoke-Command
ようなものを使用しなければならないことにより、ネイティブGet-EventLog
コマンドを使用する - このデータをフェッチするための最速の方法は何だろう
。
Enter-PSSession
とInvoke-Command
私はGet-EventLog
と同じ問題がありますか?
Enter-PSSession
とInvoke-Command
は、社内のすべてのマシンでリモート実行が有効になることを保証するものではありません。
どのように 'は、Get-WinEvent'を使用しない - 'は、Get-Event'の新しい、より強力な交換が比較? – Richard
@リチャードうわー、実際にGet-WinEventはうまく動作するようです。私はあなたが何かを言うまでGet-Eventが古いと気づいていませんでした。私のスクリプトは長い間うまく機能していて、突然何かが間違っていることに気付きました。今はうまくいくように見える!テストを続けます。 – Boeckm