4

編集 2011 年 9 月 26 日:まだ回答を探しています。何かアイデアがあれば、投稿してお知らせください。

問題のまとめ

自分のコンピューターまたは近くのコンピューターに対して Get-EventLog を実行すると、異常は見られず、すべてが期待どおりに機能します。

遠くにあるコンピューターに対して実行すると (平均 ping は108ms)、予期しない動作を開始します。返される各イベントの間に長い一時停止があり、完了するまでに非常に長い時間がかかります。

これが私が使用しているコマンドです:

Get-EventLog -ComputerName [computername] -LogName Application -newest 100

コマンドがリモート コンピューター上のすべての情報を収集し、それをまとめて私に送り返すことを期待していましたが、そうではないようです。

コマンドを普通に実行してオンラインストップウォッチなどでざっくり計測すると4分3秒くらいの結果。

私がそれを使用してそれを測定するとき:

Measure-Command {Get-EventLog -ComputerName yanhong03 -LogName Application -newest 100}

結果は約 31 秒です (ただし、情報は何も出力されません)。

だから、2つの質問:

  • イベントが (一見) 1 つずつ取得されるのはなぜですか?
  • Measure-Command を使用すると、コマンドが完了するまでの時間が実際に変わるのはなぜですか?

その他の詳細:

Powershell v2 を実行しており、これらのコマンドを実行するために Powershell ISE のシェルを使用しています。OSはWindowsXPです。

4

1 に答える 1

1

PowerShell 2を使用しているため、リモート処理を利用できます。

これを試して:

Invoke-Command -ComputerName atliis03 -ScriptBlock { Get-EventLog -LogName Application -newest 100 }

多くのサーバーを実行している場合は、バックグラウンドジョブとしてプロセスを開始することをお勧めします。

$job = Invoke-Command -ComputerName atliis03 -ScriptBlock { Get-EventLog -LogName Application -newest 100 } -AsJob

次に、戻って結果を取得できます。

Receive-Job $job

Get-Jobコマンドは、実行中のすべてのジョブのステータスを表示します。

お役に立てれば。

于 2011-04-25T18:50:09.480 に答える