使用Start-Job和ArgumentList如何传递数组和字符串值

时间:2017-06-16 16:57:10

标签: arrays powershell parameter-passing powershell-v2.0

使用Start-Job和ArgumentList,如何将数组和另一个变量传递给接收脚本?

如果我只需要传递单个数组

,这是有效的
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
}

我目前正在使用PowerShell 2.0

2 个答案:

答案 0 :(得分:0)

用谷歌搜索同样的问题,但最后我发现了。它相当str8fwd。虽然在所有帖子中,将数组传递给作业的解决方案是(,$ ArrayArg),如果这是唯一的参数,它可以工作(对我而言仍然很奇怪)。 虽然有多个args,一个是数组,但这对我有用:

$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

答案 1 :(得分:0)

我必须用逗号和$ list括号括起来:

status

或具有active范围:

import pandas as pd
import random
data = [[random.uniform(0, 1), random.uniform(0, 1), random.uniform(0, 1), random.uniform(0, 1), random.uniform(0, 1)], [random.uniform(0, 1), random.uniform(0, 1), random.uniform(0, 1), random.uniform(0, 1), random.uniform(0, 1)], [random.uniform(0, 1), random.uniform(0, 1),random.uniform(0, 1),random.uniform(0, 1),random.uniform(0, 1)], [random.uniform(0, 1), random.uniform(0, 1), random.uniform(0, 1), random.uniform(0, 1), random.uniform(0, 1)], [random.uniform(0, 1), random.uniform(0, 1), random.uniform(0, 1), random.uniform(0, 1), random.uniform(0, 1)], [random.uniform(0, 1), random.uniform(0, 1),random.uniform(0, 1),random.uniform(0, 1),random.uniform(0, 1)]]
df= pd.DataFrame(data, columns=["A","B", "C", "D", "E"])

lst = ["B", "D", "E"]

df.assign(**{col:df[col]*0.5 for col in lst})