2017-10-21 557 views
0

私は以下のVBスクリプトコードを.vbsに持っています。私はpowershell経由で.vbsを呼び出して、pow1hellの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は、COMオブジェクトでの作業にdocumentsを持っています。ライブラリは登録されていると仮定すると、

それ以外の場合は

、あなたはちょうどあなたが試みることができるテキスト出力キャプチャする場合:

$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

関連する問題