ProductivityTools.FindModuleDependencies.psm1
function ProcessPsd1File() { param($psd1FilePath) $file=Import-PowerShellDataFile $psd1FilePath $requiredModules=$file["RequiredModules"] return $requiredModules } function ProcessPsd1Files() { param($psd1Files) $psd1Results=@{} foreach($psd1File in $psd1Files) { $psd1FilePath=$psd1File.FullName $requiredModules=ProcessPsd1File $psd1FilePath if ($requiredModules -eq $null) { $psd1Results.add($psd1FilePath, $null) } else { $psd1Results.add($psd1FilePath, @($requiredModules)) } } return $psd1Results } function FilterDependencies{ [cmdletbinding()] param([Hashtable]$psd1Results, [string]$filter,[bool]$Like) $psd1ResultsFiltered=@{} foreach($psd1Result in $psd1Results.GetEnumerator()) { foreach($dependency in $psd1Result.Value) { if($Like) { if ($dependency -like $filter) { Write-Verbose "file which contains dependency $($psd1Result.Key)" $psd1ResultsFiltered.add($psd1Result.key, $psd1Result.Value) } } else { if ($dependency -eq $filter) { Write-Verbose "file which contains dependency $($psd1Result.Key)" $psd1ResultsFiltered.add($psd1Result.key, $psd1Result.Value) } } } } return $psd1ResultsFiltered } function Find-ModuleDependencies { [cmdletbinding()] param([string]$DependencyName,[string]$Path,[switch]$Like) if ($Path -eq "") { $Path=Get-Location } $psd1Files=@(Get-ChildItem -Path $Path -Recurse -filter "*.psd1") $psd1Results=ProcessPsd1Files $psd1Files if ($DependencyName -ne [String]::Empty) { $psd1ResultsFiltered= FilterDependencies $psd1Results $DependencyName $Like Write-Output $psd1ResultsFiltered } else { Write-Output $psd1Results } } |