2016-07-07 29 views
3

申し訳ありませんが、私はしばらくの間これをやろうとしていましたが、これは実際には頻繁に尋ねられるものではなく、VB6がますます段階的になっていくにつれて、私が言語に関して好むよりも助けてください。vb6で実際のPowerShellの戻り値を取得していますか?

タイトルは実際にすべてを言っているわけではありません。私は非常に具体的なことをしています。私はシェルコマンドを実行する必要がありますが(実行方法はわかっていますが)、実行後にそのコマンドの戻り値を文字列として保存できるようにしたいと考えています。たとえば、コマンドがipconfigの場合、そのコマンドの実行後に表示されるすべてのテキストがプログラムの文字列に保存され、その戻り値全体が必要になります。

私が知る限り、いくつかのものを「インポート」する必要があります.WshShellを使用する必要があります.Wshシェルはどこから取得するのかわかりません。それは質問の一部です。どのクラスを追加し、どのようにしなければならないのですか、それともクラスを追加しなくてもそれを行う方法があれば、さらに優れています。さらに、私はCreatePipeの使用について同様の問題について多くのことを聞いたことがありますが、私はそれをどのように使用するのか分かりません。

私が言っていることは、主題については全く教育を受けていないということです。どんな洞察も非常に高く評価され、回答したすべての人に感謝します。

+1

にpingを実行する方法であるあなたは、WshShellのために何をインポートする必要はありません - ちょうどホスティングWindowsスクリプトへの参照を追加します。シェルコマンドからの出力に関しては、シェルコマンドの出力をテキストファイルにパイプし、シェルが終了してテキストファイルを読み取るのを待つことが考えられます – dbmitch

答えて

2

多くの方法があります。 VBScriptのWSHShell.Execを使用するのが最も簡単です。

これはVBScriptですが、VBScriptはVBに貼り付けることができます(逆も同様です)。

Dim WshShell, oExec 
Set WshShell = CreateObject("WScript.Shell") 

Set oExec = WshShell.Exec("ipconfig") 

Do While oExec.Status = 0 
    WScript.Sleep 100 
Loop 
MsgBox oExec.StdOut.ReadAll 

少し変更されました。

これはVBS/VB

から
Set objWMIService = GetObject("winmgmts:\\.\root\cimv2") 

Set colItems = objWMIService.ExecQuery("Select * From win32_PingStatus where address='104.43.195.251'") 
'msgbox colItems 
For Each objItem in colItems 
    msgbox "Status" & objItem.statuscode & " Time " & objItem.ResponseTime 
Next 
+0

これを行うと、この後にpowershellセッションが終了します完成されました?私はそれが開かれたままにすることが重要なので、私は望んでいません。私はそれが終わってはならない理由は見ませんが、決して伝えることはできません。 –

関連する問題