使用 powershell 从父文件到子文件执行负号

Performing minus from parent to child files using powershell

我在 test1 文件夹中有三个文件:

我在 test2 文件夹中有三个文件:

这两个文件夹的共同点是 file2

我想减去 两个文件夹 之间的公共文件,只从 test1 文件夹中获取唯一文件。

我的预期输出是:

file1.txt
file3.txt

我尝试使用:

cls
$parent='D:\test1'
$child='D:\test2'
$final = [System.Collections.ArrayList]@()


$parentarrays=Get-ChildItem $parent
$childarrays=Get-ChildItem $child

foreach ($p1 in $parentarrays) {
 foreach ($p2 in $childarrays){
   if($p1 -notcontains $p2){
      $final.add($p1)
   }  
 }
 }

 Write-Host $final

但我得到输出:

file1.txt.txt file1.txt.txt file1.txt.txt file2.txt.txt file2.txt.txt file2.txt.txt file3.txt.txt file3.txt.txt file3.txt.txt

获取文件夹 2 中的文件名列表,并对文件夹 1 执行相同的操作。使用 Where-Object 子句过滤掉也在引用列表中的任何文件名:

$filesInFolder2 = (Get-ChildItem -Path 'D:\Test2' -File).Name
(Get-ChildItem -Path 'D:\Test1' -File).Name | Where-Object { $filesInFolder2 -notcontains $_ }

输出:

file1.txt
file3.txt