# Get the directories inside the template dir. as relative paths
$templateDirs = Get-ChildItem -Directory -Recurse -Name $templatePath
# Ditto for directory 1 and directory 2
$dir1Dirs = Get-ChildItem -Directory -Recurse -Name $dir1Path
$dir2Dirs = Get-ChildItem -Directory -Recurse -Name $dir2Path
# Compare to the template dirs.
Compare-Object $templateDirs $dir1Dirs
'---' # Output separator string just to show distinct outputs.
Compare-Object $templateDirs $dir2Dirs
注意 with 的使用-Name
,Get-ChildItem
它会导致所有子目录 ( -Directory
,-Recurse
被报告为相对于输入目录的路径,这样可以方便地在目录树之间进行比较。
另请注意,Compare-Object
默认情况下 cmdlet 输出[pscustomobject]
具有两个属性的实例,并且仅用于输入集之间的差异:
.InputObject
,在您的情况下,一个输入集唯一的相对目录路径。
.SideIndicator
,它是一个字符串,指示输入对象是左侧唯一(第一个输入集,隐式绑定到参数-ReferenceObject
) - '<='
- 还是右侧(第二个输入集,隐式绑定到参数-DifferenceObject
) -'=>'
上面的结果如下:
InputObject SideIndicator
----------- -------------
C => # folder C only in dir. 1, not in template dir.
---
B <= # folder B only in template dir., not in dir. 2