首页 文章

Powershell脚本来比较文件夹结构

提问于
浏览
0

我正在尝试编写一个powershell脚本,该脚本将针对模板文件夹结构布局检查目录的文件夹结构,并报告其是否丢失了不同的文件夹或添加了不同的文件夹 .

Folder Template Structure
Folder A
Folder B

Directory 1 to check
Folder A
Folder B
Folder C

Directory 2 to check
Folder A

因此,对于目录1,它将报告文件夹C是附加的,对于目录2,它将报告文件夹B丢失

任何帮助将不胜感激

2 回答

  • 0

    要比较两个文件夹,请执行以下步骤(从:https://blogs.technet.microsoft.com/heyscriptingguy/2011/10/08/easily-compare-two-folders-by-using-powershell/):

    • 将Get-ChildItem cmdlet与recurse切换参数和path参数(指向要用于参考的文件夹)一起使用,以获取fileinfo对象的集合 . 将这些对象存储在变量中 .

    • 将Get-ChildItem cmdlet与recurse切换参数和path参数(指向要用于比较的文件夹)一起使用,以获取fileinfo对象的集合 . 将这些对象存储在不同的变量中 .

    • 使用Compare-Object cmdlet并将第一个变量中存储的对象指定为ReferenceObject参数 . 将存储在第二个变量中的对象提供给DifferenceObject参数 .

    码:

    $ fso = Get-ChildItem -Recurse -path C:\ fso

    $ fsoBU = Get-ChildItem -Recurse -path C:\ template

    Compare-Object -ReferenceObject $ fso -DifferenceObject $ fsoBU

  • 0
    # 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
    

    请注意 -NameGet-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
    

相关问题