2016-06-22 28 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和從stdOutstdErr發送直接輸出到文件output.txt的在C:\ temp中。你可以修改你的命令。

+0

謝謝大家的建議 – user6495763