代码之家  ›  专栏  ›  技术社区  ›  YorSubs

PowerShell,找到重复文件夹的更有效方法

  •  0
  • YorSubs  · 技术社区  · 5 年前

    我写了一个小函数来扫描每个文件夹 $PSModulePath 查看不同路径中是否存在重复的文件夹名(因为我发现这个问题在我的PowerShell环境中经常发生!)。我使用简单的逻辑,我想知道一些PowerShell专家是否有更紧凑/更快/更有效的方法来实现这样的扫描(我经常发现那些在PowerShell方面做得更好的人似乎有2行解决方案来解决需要15行的问题!:-) )?

    并在其中创建子文件夹名称数组,然后查看 路径 $PSModulePath模块

    function Find-ModuleDuplicates {
        $hits = ""
        $ModPaths = $env:PSModulePath -Split ";" -replace "\\+$", "" | sort
        foreach ($i in $ModPaths) {
            foreach ($j in $ModPaths) {
                if ($j -notlike "*$i*") {
                    $arr_i = (gci $i -Dir).Name
                    $arr_j = (gci $j -Dir).Name
                    foreach ($x in $arr_j) {
                        if ($arr_i -contains $x) {
                            $hits += "Module '$x' in '$i' has a duplicate`n" 
                        }
                    }
                }
            }
        }
        if ($hits -ne "") { echo "" ; echo $hits }
        else { "`nNo duplicate Module folders were found`n" }
    }
    
    0 回复  |  直到 5 年前
        1
  •  3
  •   rokumaru    5 年前

    $env:PSModulePath.Split(";") | gci -Directory | group Name |
    where Count -gt 1 | select Count,Name,@{ n = "ModulePath"; e = { $_.Group.Parent.FullName } }