我正在从VBScript运行PS脚本,并且如果PS中存在错误,则希望在VBScript中抛出异常。这是我用来运行PowerShell的VBScript代码:
Option Explicit
Dim oShell, appCmd
Set oShell = CreateObject("WScript.Shell")
appCmd = "powershell set-executionpolicy unrestricted -force; c:\3.ps1"
oShell.Run appCmd, 4, true
这是我的PS脚本:
throw "I'm exception"
我尝试了一般的VBScript捕获:
if( Err.number <> 0 ) then
Err.raise()
end if
但它似乎不起作用。我想只使用PS并完全摆脱VBScript,但它是运行VB的另一个应用程序,它只支持VB。有什么想法吗?
我可以在PS中的文件中编写异常,然后从VB检查文件是否存在并抛出异常,但我希望有更好的方法。 感谢
答案 0 :(得分:3)
在Powershell脚本中使用
exit $MyErrorLevel
$MyErrorLevel
是您自己的代码,您将使用VBS检测。
在VBS中,WShell对象Run
方法将从PowerShell返回退出代码。
示例VBS脚本:
Option Explicit
Dim oShell, appCmd
Dim intReturnCode
Set oShell = CreateObject("WScript.Shell")
appCmd = "powershell.exe -File c:\Test.ps1"
intReturnCode = oShell.Run(appCmd, 4, true)
MsgBox intReturnCode
示例PS脚本(C:\ Test.ps1):
try {
1 / $null
} catch {
exit 1
}
exit 0