Ho il seguente codice.Powershell start-job -scriptblock non può riconoscere la funzione definita nello stesso file?
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
Tuttavia, lo script restituisce il seguente errore.
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
Sembra il nome della funzione non può essere riconosciuto all'interno del blocco di script di start-job
. Ho provato anche function:createZip
.
Grazie. Sembra che l'eccezione sollevata in un'altra istanza di PowerShell non possa essere catturata. Qual è il modo migliore per catturare l'eccezione? – ca9163d9
@NickW Sicuro. Controlla la mia risposta aggiornata. –
Grazie per questo - ho avuto una domanda simile e ora sono d'oro! – marceljg