2017-06-16 10 views
0

Start-JobとArgumentListを使用して、配列と別の変数を受信スクリプトにどのように渡しますか?Start-JobとArgumentListを使用する配列と文字列を渡す方法値

Iは、単一のアレイ

Start-Job -FilePath "c:\thescript.ps1" -ArgumentList (,$newArray) 

これを試みたが、第二の値は、受信スクリプトで使用されていないに合格する必要がある場合に機能します。

Start-Job -FilePath "c:\thescript.ps1" -ArgumentList (,$newArray,"x") 

thescript.ps1例:

param (
    [string[]]$aMyArray, 
    [string]$sMyString 
) 

function DoWork ([string]$aItem,[string]$sMyString) 
{ 
    #worker 
} 

foreach($aItem in $aMyArray) 
{ 
    DoWork $aItem $sMyString 
} 

私は現在、ちょうど同じ質問をグーグルが、最後に、私は考え出し

+3

は括弧の外にXを取ります。あなたは引数を区切るためにカンマを使用しません。そうでなければ単一のオブジェクトとして見なされます。 – Matt

+0

@Mattこれはあなたが提案しているものですか? -ArgumentList(、$ newArray) "x" – eHaze

+0

はい。それはすべてあなたのユースケースと、どのようにthescript.ps1が設定されているかによって異なります。 @Briantist @ – Matt

答えて

0

のPowerShell 2.0で働いています。むしろstr8fwdです。すべての記事で、配列をジョブに渡す解決策は(、$ ArrayArg)ですが、それが唯一の引数であれば(私にとってはまだ変です)。 複数の引数で、1が配列されてますが、これは私のために働いていたものです:

$foo1 = @("1","2","3") 
$foo2 = "foo" 

Start-Job -Name Test ` 
-ScriptBlock { 
    param([string[]]$arg1,[string]$arg2) 
    Write-Output $arg1 
    Write-Output $arg1.GetType() 
    Write-Output "----" 
    Write-Output $arg2 
    Write-Output $arg2.GetType() 
} ` 
-ArgumentList @($foo1),$foo2 
+0

はい、まっすぐですが、提供された例は機能しませんでした。私の場合、$ aMyArrayはURLの束です。他のルートに行くことをやめました。 – eHaze

関連する問題