1

この例では、結果をスクリプト ブロックに渡そうとしていますが、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

誰かがこれを行う適切な方法を説明するのを助けることができますか?

4

1 に答える 1