更多PowerShell到VBScript返回代码问题

更多PowerShell到VBScript返回代码问题,powershell,vbscript,Powershell,Vbscript,因此,我已将我看到的“问题”隔离到强制参数。这是我的呼叫VBS strCmd = "powershell.exe -noLogo -executionpolicy bypass -file ""C:\TestReturnCode.ps1"" -message:""I'm ALIVE""" result = CreateObject("WScript.Shell").Run(strCMD, 0, True) msgBox result 这就是能量地狱 param ( [string][p

因此,我已将我看到的“问题”隔离到强制参数。这是我的呼叫VBS

strCmd = "powershell.exe -noLogo -executionpolicy bypass -file ""C:\TestReturnCode.ps1"" -message:""I'm ALIVE"""
result = CreateObject("WScript.Shell").Run(strCMD, 0, True)
msgBox result
这就是能量地狱

param (
    [string][parameter(Mandatory = $true)]$message
)

Write-Host $message
Exit 9
实际返回的是0,而不是9。但是,删除
[参数(强制=$true)]
后,它会突然工作。如果参数为必填,我可以使用快捷方式启动PS1,并且在提供该参数时它可以工作。只有在通过VBScript启动时,它才能按预期工作。这是在PS2.0,FWIW。 有人看到我做错了什么,或者这是我不得不接受的错误吗?微软自己的工具不会以一种有意义的方式相互交流,这似乎有点可笑,但如果这是现实的话,我无法与之抗争。只是不确定这是现实,是时候让我继续前进了


编辑:它似乎也只是Windows7。它在Windows10中的工作与预期一样。希望这是一个PS问题,更新到更新版本的PS会在Win7中修复它。

如果运行
powershell-version 2
,我可以确认服务器2012 R2中也存在此问题。在我看来就像是一个PowerShell v2 bug。升级到v3,问题应该会消失。感谢Ansgar的验证。是的,将从咖啡馆回家手动将我的Win7虚拟机更新为PS5并验证。不确定我的解决方法是什么,适用于不需要升级PS的用户,但这是另一个问题。适用于具有PowerShell v3及更高版本的Windows 7。如果运行
PowerShell-version 2
,我可以确认该问题也存在于Server 2012 R2中。在我看来就像是一个PowerShell v2 bug。升级到v3,问题应该会消失。感谢Ansgar的验证。是的,将从咖啡馆回家手动将我的Win7虚拟机更新为PS5并验证。不确定我的解决方法是什么,适用于不需要升级PS的用户,但这是另一个问题。适用于使用PowerShell v3及更高版本的Windows 7。