2016-06-22 16 views
0

こんにちは私はWScript.ShellとPSExecで提供されている出力を読むのに問題があります。私の目標は、PSExec.exeがテキストとして返すものを読み込めるようにすることで、InStrでいくつかの検証を実行することができます。VBScriptとPSExec

コードは次のようになります。

Const WshFinished = 1 
Const WshFailed = 2 
Dim cmdLine, strComputer 
strComputer = "\\SomeComputer" 

cmdLine = "psexec " & strComputer & " cmd /C " & """RD " & """%PROGRAMFILES%\APPFOLDER""" & " /S /Q | RD " & """%PROGRAMFILES%\COMMON FILES\APPFOLDER""" & " /S /Q | RD " & """%SYSTEMROOT%\temp\APPFOLDER""" & " /S /Q""" 

Set WSH = WScript.CreateObject("WScript.Shell") 
WSH.Exec(cmdLine) 

    Do While WSH.Status = 0 
     WScript.Sleep 100 
    Loop 

    Select Case WSH.Status 
     Case WshFinished 
      strOutput = WSH.StdOut.ReadAll 
     Case WshFailed 
      strOutput = WSH.StdErr.ReadAll 
    End Select 

    Wscript.Echo strOutput 


    If (InStr(strOutput, "validation text") > 0) Then 
     'Do Stuff 
    End IF 

問題はstrOutput変数は常に空来て、私が使用してテキストの検証を行うことができないということである - (InStr関数(strOutput、「検証テキスト」)> 0の場合)

すべてのアイデア?

+0

誰もいませんか?なにか提案を? – user6495763

+0

参照:[ExitCodeプロパティ](https://msdn.microsoft.com/en-us/library/za76z6hh(v = vs.84).aspx)例を示しています(おそらく_poor_ですが、動作しています)。 – JosefZ

答えて

0

psexecの出力を出力ファイルに送信し、出力ファイルをvbscriptから読み取ることを検討しましたか?

psexec \\remotemachine command.exe >C:\temp\output.txt 2>&1 

はCOMMAND.EXEを実行し、直接Cでのファイルのoutput.txtにstdOutstdErrからの出力を送信します:\ tempにします。あなたはあなた自身のコマンドのためにこれを修正することができます。

+0

お寄せいただきありがとうございます – user6495763