Я написал небольшую функцию для сканирования каждой папки в $PSModulePath
, чтобы увидеть, существуют ли дубликаты имен папок в различных путях (как я обнаружил, эта проблема встречается довольно часто в моей среде PowerShell!). Я использую простую логику c, и мне было интересно, есть ли у некоторых гуру PowerShell более компактные / более быстрые / более эффективные способы достижения такой степени развертки (я часто обнаруживаю, что у тех, кто лучше в PowerShell, есть что-то вроде двухстрочных решений) это занимает у меня 15 строк! :-))?
Я просто беру путь в $PSModulePath
и создаю там массив имен подпапок, затем просматриваю подпапки other путей в $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" }
}