4

背景のビット:

テストの開始時にいくつかのパフォーマンス カウンターをリモートで開始および停止し、テストの終了時にそれらを停止しようとしています。Win2003 マシンの自動テスト フレームワークからこれを実行しています。テスト フレームワークは、コンソールを起動せずにコマンドを実行します。テスト対象のシステムの一部は Win2008 を実行しています。サーバーに割り当てられた役割に基づいてパフォーマンス カウンターを選択するスクリプトを作成しました。

私の問題:

  1. logmanOS の新しいバージョンを実行しているマシンでは、カウンターを開始または停止できません。
  2. psexeclogman をリモートで実行するために使用できますが、テスト フレームワークから実行すると psexec が断続的にハングするのが好きです。コマンドラインから手動で正常に実行されます。これは、呼び出しプロセスがコンソールを提供していないか、同様の扱いにくさがあるためだと推測しています。これについて私にできることはあまりありません(GRRRR)
  3. WMI を使用して logman をリモートで実行win32_processし、バッチ スクリプトから呼び出す PowerShell スクリプトを作成しました。これは正常に動作します。ただし、テスト フレームワークは stderr の内容に基づいて成功シナリオと失敗シナリオを決定します%ERRORLEVEL%が、WMIwin32_processではどちらにもアクセスできません。そのため、カウンターが起動しない場合でも、テストは続行され、全員の時間が無駄になります。

リモートマシンでプログラムを実行したり、プログラムのリターンコードをチェックしたり、stderr を呼び出し元にパイプしたりできるソリューションを探しています。簡単にするために、通常の Win2k3 ボックスで利用できるツールで記述する必要があります。物事をログ ファイルにダンプし、それらを再度読み戻す複雑なスクリプトのコレクションを使用したくありません。

誰かが同様の問題を抱えていて、それを解決しましたか、または少なくとも提案がありますか?

4

1 に答える 1

9

簡単にするために、バニラWin2k3ボックスで使用できるツールで作成する必要があります。物事をログファイルにダンプしてから再度読み取るような複雑なスクリプトのコレクションを使用したくないのです。

PowerShellはWindows2003のネイティブツールではありません。この質問にPowerShellのタグを付けて、答えを探しますか?とにかく、PowerShellの答えをお伝えします。

$proc = Invoke-WmiMethod -ComputerName Test -Class Win32_Process -Name Create -ArgumentList "Notepad.exe"
Register-WmiEvent -ComputerName test -Query "Select * from Win32_ProcessStopTrace Where ProcessID=$($proc.ProcessId)" -Action { Write-Host "Process ExitCode: $($event.SourceEventArgs.NewEvent.ExitStatus)" }

これには、これらのスクリプトを実行しているシステムにPowerShell2.0が必要です。Windows2003リモートシステムは実際にはPowerShellを必要としません。

PS:WMIとPowerShellのクラッシュコースが必要な場合は、私のeGuide:PowerShellを介したWMIクエリ言語をお読みください。

于 2011-03-14T15:06:48.993 に答える