functions/Find-InstalledModulePath.ps1

function Find-InstalledModulePath {
<#
.SYNOPSIS
Durchsucht die PowerShell-Modulpfade nach einem bestimmten Modul und gibt gefundene Ordner und Manifestdateien aus.
 
.DESCRIPTION
Die Funktion `Find-InstalledModulePath` analysiert alle Einträge im Umgebungsvariable `PSModulePath`, durchsucht sie rekursiv nach einem Modulordner oder einer `.psd1`-Manifestdatei mit dem angegebenen Modulnamen und gibt die Ergebnisse farblich hervorgehoben in der Konsole aus.
 
.PARAMETER ModuleName
Der Name des zu suchenden Moduls. Sowohl Ordnernamen als auch Manifestdateien mit exakt diesem Namen (ohne Version) werden berücksichtigt.
 
.EXAMPLE
Find-InstalledModulePath -ModuleName "BcHelper"
 
Durchsucht alle Modulpfade nach dem Modul "BcHelper" und zeigt gefundene Ordner und `.psd1`-Dateien an.
 
.NOTES
Diese Funktion gibt lediglich Ausgaben in die Konsole aus und liefert keinen Rückgabewert zurück. Sie dient primär zu Diagnosezwecken beim Troubleshooting oder bei der Modulverwaltung.
 
#>

    [CmdletBinding()]
    param (
        [Parameter(Mandatory)]
        [string]$ModuleName
    )

    $modulePaths = $env:PSModulePath -split ';'

    Write-Host "Suche nach Modul '$ModuleName' in den Standard-Modulpfaden..." -ForegroundColor Cyan

    foreach ($path in $modulePaths) {
        # Suche nach Ordnern mit dem Modulnamen
        $folders = Get-ChildItem -Path $path -Recurse -Directory -ErrorAction SilentlyContinue |
            Where-Object { $_.Name -ieq $ModuleName }

        foreach ($folder in $folders) {
            Write-Host "✅ Modul-Ordner gefunden: $($folder.FullName)" -ForegroundColor Green
        }

        # Suche nach Manifestdateien (.psd1)
        $manifests = Get-ChildItem -Path $path -Recurse -Include "$ModuleName.psd1" -ErrorAction SilentlyContinue

        foreach ($manifest in $manifests) {
            Write-Host "📄 Modul-Manifest gefunden: $($manifest.FullName)" -ForegroundColor Yellow
        }
    }

    Write-Host "🔍 Suche beendet." -ForegroundColor Cyan
}