在vb6中获取实际的powershell返回值?

时间:2016-07-07 21:19:25

标签: shell powershell vb6 return

好吧,所以我一直试图这样做,我已经意识到这不是经常被问到的事情,随着vb6越来越被淘汰,似乎有了对语言的帮助比我想要的少。

标题并没有实际说明,因为我希望做一些非常具体的事情。我需要执行一个shell命令(我知道该怎么做),但是,在执行它之后,我希望能够将该命令的返回值保存为字符串。例如,如果命令是ipconfig,我想要它的整个返回值,我在执行该命令后在powershell中看到的所有文本,保存到程序中的字符串。

据我所知,我需要“导入”一些东西,因为我必须使用WshShell,我不知道从哪里得到。所以这是问题的一部分,我必须添加哪些类以及如何添加,或者如果有一种方法可以在不添加类的情况下进行添加,那就更好了。另外,我已经听过很多关于使用CreatePipe等问题的类似问题,但我不知道如何使用它。

基本上,我所说的是我对这个问题没有受过什么教育,所有的见解都会非常感激,感谢所有回复者。

1 个答案:

答案 0 :(得分: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 ping的方法

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