2017-10-21 211 views
0

我在.vbs中有以下vb腳本代碼。我想通過powershell調用.vbs,並在powershell中捕獲var1,var2 & var3的輸出。從powershell運行VBS並捕獲輸出

public function GenerateResponseFile() 

    Dim objServiceLogon 
    Dim var1 
    Dim var2 
    Dim var3 

    var1 = "" 
    var2="" 
    var3="" 

    set objServiceLogon = CreateObject("DSServiceLogonCOM.CoServiceLogon") 
    objServiceLogon.DSGetDetails "ABCSVC", "ABCDE", var1, var2, var3 

End function 
+1

如果是這樣的總和將VBScript的,我建議你只需右鍵它直接在PowerShell中。 –

回答

1

將腳本重寫爲PowerShell會容易得多。

假設庫註冊:

$var1 = '' 
$var2 = '' 
$var3 = '' 
$objServiceLogon = New-Object -ComObject "DSServiceLogonCOM.CoServiceLogon" 
$objServiceLogon.DsGetDetails("ABCSVC", "ABCDE", $var1, $var2, $var3) 

MS具有documents與COM對象工作。

否則,如果你只是想捕獲文本輸出,你可以嘗試:

$Output = Start-Process -Wait -Path 'C:\Windows\system32\cscript.exe' -ArgumentList 'MyScript.vbs', '//B', '//NoLogo' 

或者:

Start-Process -Wait -OutVariable Output -Path 'C:\Windows\system32\cscript.exe' -ArgumentList 'MyScript.vbs', '//B', '//NoLogo' 
$Output 
+0

我試圖按照您指定的方式從powershell運行它。但我沒有將輸出變量var1,var2&var3的值返回給powershell。它仍然是空白的。 – Arocks

+0

哦,他們是*輸出*變量?在這種情況下,試試'$ objServiceLogon.DsGetDetails(「ABCSVC」,「ABCDE」,([ref] $ var1),([ref] $ var2),([ref] $ var3))''。 PowerShell默認使用按值傳遞。但是,我不知道這是否適用於COM對象。你真的可能需要調用VBScript。 –

+0

感謝您的回覆。這沒有奏效。所以我已經在vb腳本中寫入了一個文件輸出,並在powershell中調用了vb腳本,並將輸出用於進一步處理。 – Arocks