将参数传递给PowerShell作业

时间:2015-08-12 18:51:10

标签: powershell parameter-passing jobs

我一直在玩这个dang参数传递给powershell工作。

我需要在调用作业的脚本中将两个变量放入作业中。首先我尝试使用-ArgumentList,然后在我提供的-ScriptBlock中使用$ args [0]和$ args [1]。

function Job-Test([string]$foo, [string]$bar){

    Start-Job -ScriptBlock {#need to use the two args in here
        } -Name "Test" -ArgumentList $foo, $bar 
}

但是我意识到-ArgumentList将这些作为参数提供给-FilePath,因此我将scriptblock中的代码移动到需要两个参数的自己的脚本中,然后在此脚本中指向-FilePath。

function Job-Test([string]$foo, [string]$bar){
    $myArray = @($foo,$bar)

Start-Job -FilePath .\Prog\august\jobScript.ps1 -Name 'Test' -ArgumentList $myArray
}

#\Prog\august\jobScript.ps1 :

Param(
    [array]$foo
    )

    #use $foo[0] and $foo[1] here

仍然无法正常工作。我尝试将信息放入一个数组,然后只传递一个参数,但仍然知道可用。

当我说无济于事时,我得到了我需要的数据,但它似乎都压缩成了第一个元素。

例如,假设我将文件的名称作为$ foo传递给它,并且它的路径为$ bar,对于我尝试的每种方法,我会得到args [0]作为"文件名路径&#34 ;而args [1]将是空的。

即:

function Job-Test([string]$foo, [string]$bar){
    $myArray = @($foo,$bar)

Start-Job -FilePath .\Prog\august\jobScript.ps1 -Name 'Test' -ArgumentList $myArray
}

然后我打电话给:

$foo = "hello.txt"
$bar = "c:\users\world"
Job-Test($foo,$bar)

我将jobScript.ps1简单地Out-File将两个变量归档到不同行的日志中,它看起来像这样:

log.txt的:

hello.txt c:\users\world
#(empty line)

应该是:

hello.txt
c:\users\world

1 个答案:

答案 0 :(得分:0)

你不需要像在java中那样调用函数。只需将两个变量附加到函数调用JSplitPane

的末尾