如何 return PowerShell 变量到 VBScript
How to return PowerShell variable to VBScript
我有一个调用 PowerShell 脚本的 vbscript,希望 return将 PowerShell 输出到 HTA(HTML 应用程序)GUI。现在我只想看看我是否可以 return 将 PowerShell 输出到 vbscript 中的 MsgBox 中。我运气不太好。
VBScript 代码:
Set shell = CreateObject("WScript.Shell")
return = shell.Run("powershell.exe -executionpolicy bypass -noprofile -file pathToScript\PowerShellToVBA.ps1", , true)
MsgBox return
PowerShell 代码:
Clear-Host
return 50
我试图让 return 值非常简单,直到它起作用为止。有了这个,我希望 MsgBox 为 return '50',但它是 returning '0'。知道我做错了什么吗?
我认为您只需要 exit 命令来获取 return 值:
VBScript
pscommand = ".\myscript.ps1; exit $LASTEXITCODE"
cmd = "powershell.exe -noprofile -command " & pscommand
Set shell = CreateObject("WScript.Shell")
rv = shell.Run(cmd, , True)
MsgBox "PowerShell returned: " & rv, vbSystemModal
Powershell
exit 50;
编辑#1
或者如果你想获取 return string:
VBScript
pscommand = ".\myscript2.ps1"
cmd = "powershell.exe -noprofile -command " & pscommand
Set shell = CreateObject("WScript.Shell")
Set executor = shell.Exec(cmd)
executor.StdIn.Close
MsgBox executor.StdOut.ReadAll
Powershell
Write-Output '***SUCCESS***';
作为后续,使用上面的VBScript输出一个字符串。在您的 PS 脚本中,如果您使用
write-host "Error: some specific thing happened"
设置各种错误或成功消息
MsgBox executor.StdOut.ReadAll
将显示您通过 write-host 写入的所有内容。
向 VBA 用户显示 PS 脚本结果的有用方法。
仅供参考。
我有一个调用 PowerShell 脚本的 vbscript,希望 return将 PowerShell 输出到 HTA(HTML 应用程序)GUI。现在我只想看看我是否可以 return 将 PowerShell 输出到 vbscript 中的 MsgBox 中。我运气不太好。
VBScript 代码:
Set shell = CreateObject("WScript.Shell")
return = shell.Run("powershell.exe -executionpolicy bypass -noprofile -file pathToScript\PowerShellToVBA.ps1", , true)
MsgBox return
PowerShell 代码:
Clear-Host
return 50
我试图让 return 值非常简单,直到它起作用为止。有了这个,我希望 MsgBox 为 return '50',但它是 returning '0'。知道我做错了什么吗?
我认为您只需要 exit 命令来获取 return 值:
VBScript
pscommand = ".\myscript.ps1; exit $LASTEXITCODE"
cmd = "powershell.exe -noprofile -command " & pscommand
Set shell = CreateObject("WScript.Shell")
rv = shell.Run(cmd, , True)
MsgBox "PowerShell returned: " & rv, vbSystemModal
Powershell
exit 50;
编辑#1
或者如果你想获取 return string:
VBScript
pscommand = ".\myscript2.ps1"
cmd = "powershell.exe -noprofile -command " & pscommand
Set shell = CreateObject("WScript.Shell")
Set executor = shell.Exec(cmd)
executor.StdIn.Close
MsgBox executor.StdOut.ReadAll
Powershell
Write-Output '***SUCCESS***';
作为后续,使用上面的VBScript输出一个字符串。在您的 PS 脚本中,如果您使用
write-host "Error: some specific thing happened"
设置各种错误或成功消息
MsgBox executor.StdOut.ReadAll
将显示您通过 write-host 写入的所有内容。
向 VBA 用户显示 PS 脚本结果的有用方法。
仅供参考。