2
我在一臺機器上執行了一系列「任務」,這些機器在powershell scriptblocks中定義,如下所示(它們事實上是作爲更復雜的散列數組傳入的scriptblocks)。
$Tasks = @(
{ hostname.exe },
{ Get-PowerShellFunction },
{ (GWMI Win32_OperatingSystem).Version -imatch '6.1' },
{ Get-PowerShellFunction },
{ cmd /c "smth && exit 45" }
)
這些任務被調用時$Tasks[$i].Invoke()
但已經意識到,因爲似乎沒有可靠的方法來檢查和.Invoke()
$?
和/或
$LASTEXITCODE
我不能在任務的狀態報告
我希望能夠做到這些事情。
- 收集從所調用的腳本塊代碼的輸出(stdout和stderr)。
- 如果調用的腳本塊中的代碼是布爾型的PowerShell代碼(
$True
或$False
),則獲取調用的腳本塊的狀態(例如$?
)。 - 獲取被調用scriptnlock的狀態(例如
$LASTEXITCODE
),如果其中的代碼是一個Int32的外部命令(成功爲0,失敗爲!0)。 - 允許此功能適用於PowerShell> = 2.0。
這可能嗎?
我認爲,雖然你已經展示了我的作品 - 實際上,我有一些非常類似於這個答案http://stackoverflow.com/a/8635765/742600,我傳遞一個scriptblock來調用 - 但這就是我我無法收集$ LASTEXITCODE。我想我會問一個新問題。 – shalomb