我有一个脚本可以连接到我们域中的所有服务器。然后,该脚本循环遍历每台服务器以获取本地管理员和组的嵌套成员,并将它们放入 PSObject 中,以便稍后将 PSObject 导出为 CSV。
现在我对如何使用传递参数的 start-job 调用函数以及如何在我现有的脚本中利用该函数的输出感到困惑。
因此,假设我执行以下操作:
function addnumbers{
param([int]$a, [int]$b)
[int]$c = $a + $b
$myobj = new-object PSObject
$myobj += $c
return $myobj
}
$exportdetail = @()
[int[]]$numbers = @(1,2,3,4)
foreach ($number in $numbers)
{
$newobj = new-object PSObject
$newobj = addnumbers $number
$exportdetail += $newobj
}
$exportdetail | export-csv -notype "c:\export.csv"
现在要线程循环,我将执行以下操作:
function addnumbers{
param([int]$a, [int]$b)
[int]$c = $a + $b
$myobj = new-object PSObject
$myobj += $c
return $myobj
}
$exportdetail = @()
[int[]]$numbers = @(1,2,3,4)
foreach ($number in $numbers)
{
$ScriptBlock {
param($num)
$newobj = new-object PSObject
$newobj = addnumbers $num
}
start-job -ScriptBlock $ScriptBlock -ArgumentList $number
$exportdetail += $newobj
}
$exportdetail | export-csv -notype "c:\export.csv"
这些对象会更新为 exportdetail 整体对象吗?
当我运行代码时,各个线程启动,但它们不返回任何数据。