如何将值传递给嵌套的ForEach?

Chi*_*ago 4 powershell

我试图在内部ForEach循环中使用在外部ForEach循环中创建的变量.该值不会像我预期的那样通过,并且始终为null.

注意$ server的值总是为null你能告诉我为什么以及如何修复?

$Srvrs = "SVR1";
$Srvrs | ForEach-Object {


    $server = $_;
    Write-Host "Server value in outer Foreach:" $server;

    $sourceFilesLoc = "D:\Test\SetupSoftwareAndFiles"
    $sourceFiles = Get-ChildItem -LiteralPath $sourceFilesLoc;

    $sourceFiles | ForEach-Object  {
        Start-Job -InputObject $server -ScriptBlock     {
            Write-Host "Server value in inner Foreach:" $server;
            }
        }
}
Run Code Online (Sandbox Code Playgroud)

Kei*_*ill 9

通过参数传递-ArgumentList参数,例如:

Start-Job -InputObject $server -ScriptBlock {param($svr)
    Write-Host "Server value in inner Foreach:" $svr;
} -ArgumentList $server
Run Code Online (Sandbox Code Playgroud)

这是一个使用的简单示例-ArgumentList:

PS> $server = 'acme'
PS> $job = Start-Job {param($svr) "server is $svr"} -ArgumentList $server
PS> Receive-Job $job
server is acme
Run Code Online (Sandbox Code Playgroud)