我想在內部ForEach循環中使用外部ForEach循環中創建的變量。該值不會像我預期的那樣通過,並且始終爲空。如何將值傳遞給嵌套的ForEach?
注意$ server的值始終爲空您可以告訴我爲什麼以及如何解決?
$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;
}
}
}
與.GetNewClosure() – ChiliYago 2011-03-11 23:53:05
同樣的結果您提供不工作的語法所以我把它改爲: 啓動工作-InputObject $服務器-ArgumentList $服務器-ScriptBlock \t {參數($ SVR) \t \t \t寫內部Foreach中的「主機」服務器值:「$ server; \t \t \t} \t \t} 結果還是空值內的值。 – ChiliYago 2011-03-11 23:58:35
查看上面的示例'$ server ='acme'' - 工作得很好。順便說一句,你不需要使用'-InputObject',因爲該變量對於定義在其中的塊內的腳本的其餘部分是可見的。 – 2011-03-12 00:24:39