この例では、結果をスクリプト ブロックに渡そうとしていますが、Get-ChildItem
成功は限られており、予期しない結果が得られています。
C:\temp
次の 3 つのファイルが含まれています。
- A.txt
- B.txt
- C.txt
ここでスクリプトブロックに渡し$files
、返された 3 つのファイルのリスト全体を保持する必要があります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
2 番目の例では、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
誰かがこれを行う適切な方法を説明するのを助けることができますか?