リモートサーバーで md5 というアプリを起動するために psexec を実行する必要がある VB スクリプトがあります。Md5 はファイルのハッシュ キーを生成し、1 つのパラメーター (ファイル パス\名前) を取ります。変数に格納するために生成された has キーを取得する必要があります。以下は私が使用しているコードです:
Set objShell = CreateObject("Wscript.Shell")
strcomputer = "remotecomputer"
tempDest = "C:\somedir"
filename = "somefile"
strCommand = "psexec -accepteula \\" & strcomputer & " -c md5.exe " & tempDest & "\" & filename & " > log.txt"
Set objExecObject = objShell.Exec("%comspec% /c " & strCommand)
Do While objExecObject.Status <> 1 'loop until previous process has finished
WScript.Sleep 100
Loop
MD5 コマンドは実行されますが、ログ ファイルには何も書き込まれません。strCommand (すべての変数を実際のデータに置き換えます) をコマンド プロンプトにコピー アンド ペーストして実行すると、Md5 の出力がログ ファイルに正常に書き込まれます。
結局のところ、Md5 の出力が必要なだけです。ログ ファイルに書き込むよりも良い方法を知っている人がいたら教えてください。私はすでに objExecObject.StdOut.Readall() を使用して出力をキャッチしようと試みましたが、その結果、ランダムなエラーが発生しました。スクリプトを変更せずに、出力をキャッチすることもあれば、キャッチしないこともあります。