在此示例中,我尝试将结果传递Get-ChildItem
到脚本块中,但成功有限且结果出乎意料。
C:\temp
包含3个文件:
- 一个.txt
- B.txt
- C.txt
我想要的是在这里传递到脚本块,并维护已返回$files
的三个文件的整个列表。Get-ChildItem
换句话说,我想$files
返回脚本块内部和外部的 A.txt、B.txt 和 C.txt。
我能够做到这一点,但我无法可靠地做到这一点,也无法解释原因。我不想依赖“虚拟”变量来使其正常工作,我想了解区别是什么。
这里的第一个示例返回所有文件:
$files = Get-ChildItem -Path "C:\temp"
$test = $files.Get(0)
Write-Host $files.Count
Start-Job -ScriptBlock {
Param($test, $files)
Write-Host $files.Count
} -ArgumentList $test, $files | Out-Null
Wait-Job * | Out-Null
$results += Get-Job | Receive-Job
第二个示例仅将 A.txt 传递到脚本块中:
$files = Get-ChildItem -Path "C:\temp"
Write-Host $files.Count
Start-Job -ScriptBlock {
Param($files)
Write-Host $files.Count
} -ArgumentList $files | Out-Null
Wait-Job * | Out-Null
$results += Get-Job | Receive-Job
有人可以帮助解释这样做的正确方法吗?