在VBScript中捕获powershell异常

时间:2012-01-04 07:56:43

标签: powershell vbscript powershell-v2.0

我正在从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检查文件是否存在并抛出异常,但我希望有更好的方法。 感谢

1 个答案:

答案 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