2014-07-15 4 views
0

J'essaie d'exécuter les deux lignes de code suivantes dans PowerShell v2.0 en tant que travail et j'ai des problèmes. Je pense avoir le droit de syntaxe, mais je ne peux pas à faire ce que je pense qu'il devrait le faire, donc je suis clairement faire quelque chose de mal ...Début du travail aboutissant au paramètre null

$report = <command line thing> 
invoke-expression $report 

Ces deux lignes fonctionnent dans PowerShell. Mais lorsque je tente de le mettre dans une commande start-emploi:

start-job -scriptblock {invoke-expression $report} -argumentlist $report | wait-job | receive-job 

Je reçois l'erreur suivante:

Cannot bind argument to parameter 'Command' because it is null. 
    + CategoryInfo   : InvalidData: (:) [Invoke-Expression], ParameterBindingValidationException 
    + FullyQualifiedErrorId : ParameterArgumentValidationErrorNullNotAllowed,Microsoft.PowerShell.Commands.InvokeExpre 
    ssionCommand 
    + PSComputerName  : localhost 

Je comprends que l'erreur en disant que l'argument je passe le invoke- l'expression est nulle, mais, je pensais qu'en passant $report dans le param -argumentlist, ça passerait?

Répondre

0

Vous ne pouvez pas accéder directement $report à moins que vous ne:

-scriptblock {param($report) invoke-expression $report} 

La partie param($report) capture la variable $report passé via -ArgumentList et le rend disponible pour une utilisation à l'intérieur du scriptblock.