Tôi có mã sau đây.Powershell start-job -scriptblock không thể nhận ra hàm được định nghĩa trong cùng một tệp?
function createZip
{
Param ([String]$source, [String]$zipfile)
Process { echo "zip: $source`n --> $zipfile" }
}
try {
Start-Job -ScriptBlock { createZip "abd" "acd" }
}
catch {
$_ | fl * -force
}
Get-Job | Wait-Job
Get-Job | receive-job
Get-Job | Remove-Job
Tuy nhiên, tập lệnh trả về lỗi sau.
Id Name State HasMoreData Location Command
-- ---- ----- ----------- -------- -------
309 Job309 Running True localhost createZip "a...
309 Job309 Failed False localhost createZip "a...
Receive-Job : The term 'createZip' is not recognized as the name of a cmdlet, function, script file, or operable program. Check the spelling of the name, or if a path was included, verify that the path is correct and try again.
At line:17 char:22
+ Get-Job | receive-job <<<<
+ CategoryInfo : ObjectNotFound: (function:createZip:String) [Receive-Job], CommandNotFoundException
+ FullyQualifiedErrorId : CommandNotFoundException
Có vẻ như tên hàm không thể được nhận dạng bên trong khối tập lệnh start-job
. Tôi cũng đã thử function:createZip
.
Cảm ơn. Có vẻ như ngoại lệ được nêu trong một phiên bản khác của PowerShell không thể bị bắt. Cách tốt nhất để nắm bắt ngoại lệ là gì? – ca9163d9
@NickW Bạn chắc chắn có thể. Kiểm tra câu trả lời cập nhật của tôi. –
Cảm ơn điều này - Tôi đã có một câu hỏi tương tự và bây giờ tôi là vàng! – marceljg