我在机器上执行了一系列“任务”,这些任务在 powershell 脚本块中定义,如下所示(它们实际上是作为包含脚本块的更复杂的哈希数组传入的)。
$Tasks = @(
{ hostname.exe },
{ Get-PowerShellFunction },
{ (GWMI Win32_OperatingSystem).Version -imatch '6.1' },
{ Get-PowerShellFunction },
{ cmd /c "smth && exit 45" }
)
这些任务被调用,$Tasks[$i].Invoke()
但我意识到我无法报告任务的状态,因为似乎没有可靠的方法来检查和使用$?
和/或$LASTEXITCODE
在.Invoke()
我希望能够做这些事情。
- 从调用的脚本块代码中收集输出(stdout 和 stderr)。
- 如果其中的代码是作为布尔值(或)
$?
的 powershell 代码,则获取调用的脚本块的状态(例如)。$True
$False
$LASTEXITCODE
如果其中的代码是 Int32 形式的外部命令(0 表示成功,!0 表示失败),则获取调用的 scriptnlock 的状态(例如)。- 允许这适用于 PowerShell >= 2.0。
这可能吗?