Tôi có kịch bản sau đây,Làm thế nào để nắm bắt ngoại lệ được nêu trong scriptblock của công việc bắt đầu?
$createZip = {
Param ([String]$source, [String]$zipfile)
Process {
echo "zip: $source`n --> $zipfile"
throw "test"
}
}
try {
Start-Job -ScriptBlock $createZip -ArgumentList "abd", "acd"
echo "**Don't reach here if error**"
LogThezippedFile
}
catch {
echo "Captured: "
$_ | fl * -force
}
Get-Job | Wait-Job
Get-Job | receive-job
Get-Job | Remove-Job
Tuy nhiên, ngoại trừ lớn lên ở một ví dụ PowerShell không thể bị bắt. Cách tốt nhất để nắm bắt ngoại lệ là gì?
Id Name State HasMoreData Location Command
-- ---- ----- ----------- -------- -------
343 Job343 Running True localhost ...
**Don't reach here if error**
343 Job343 Failed True localhost ...
zip: abd
--> acd
Receive-Job : test
At line:18 char:22
+ Get-Job | receive-job <<<<
+ CategoryInfo : OperationStopped: (test:String) [Receive-Job], RuntimeException
+ FullyQualifiedErrorId : test
tôi đã cập nhật câu trả lời của tôi để cho bạn biết câu hỏi trước đó của bạn như thế nào. –
Nó không rõ ràng những gì bạn đang cố gắng để thực hiện với công việc. Có vẻ như bạn muốn cả hành vi không đồng bộ và đồng bộ cùng một lúc, điều đó là không thể. Khi nào bạn muốn thực thi dòng tiếp theo trong tập lệnh của mình? – zdan