2016-10-27 4 views
1

test1.ps1からpowershellファイルtest.ps1を実行する必要があります。私はpowershellのstart-job機能を使用しています。scriptblockとargumentlistを使用してpowershellジョブを開始する際のエラー

The expression after '&' in a pipeline element produced an object that was not valid. It must result in a command name, a script block, or a CommandInfo object.

param([string]fName, [string]lName] 

は、私は次のエラーを取得しておいてください。私のtest1.ps1では、私は私のtest.ps1で

$pathToFile = (Join-Path -Path $PSSCriptRoot -ChildPath "test.ps1") 
$ar = $a, $b # all these variables have values assigned 
Start-Job -Name job2 -ScriptBlock{& $pathToFile -fName $args[0] -lName $args[1]} -ArgumentList $ar 

を持って、私のようなパラメータとしてfNameをし、LNAMEを持っています

問題はこちらStart-Job -Name job2 -ScriptBlock{& $pathToFile -fName $args[0] -lName $args[1]} -ArgumentList $ar

しかし、私はこの問題を解決するための解決策を見つけることはできないようです。はい、$ pathToFileにtest.ps1の正確なパスが含まれていることを確認しました=> C:\ foo \ test.ps1 ありがとうございました。

答えて

-1

invoke-expressionコマンドレットを試したことはありますか? これは私が通常使うものです。研究の数時間後

起動-式[ - コマンド] []

+0

これはOPの質問とはほとんど関係がありません。これは、ジョブのコンテキストで実行されているときに定義されていないローカル変数です。 – mklement0

1

、私は最終的にそれを働かせました。

解決策は、$using:pathToFileを使用することです。

ので、代わりに

Start-Job -Name job2 -ScriptBlock{& $pathToFile -fName $args[0] -lName $args[1]} -ArgumentList $ar 

を使用しての解決策は、これを使用することです:

Start-Job -Name job2 -ScriptBlock{& $using:pathToFile -fName $args[0] -lName $args[1]} -ArgumentList $ar 

私は、これは他の人々を助けることを願っています。

関連する問題