Salut à tous, aujourd’hui encore une petite astuce de commande PowerShell pour trouver l’emplacement d’un module PowerShell. Récemment j’ai eu besoin de retrouver où était installé un module PowerShell sur un de nos serveurs.
Il faut savoir que les modules PowerShell ne sont ni plus ni moins qu’un fichier texte PowerShell (extension .psm1 au lieu de .ps1) avec le code source du module et un fichier .psd1 qui décrit le module (et allez voir par ici si vous voulez en savoir plus). Il faut placer ces fichiers dans des dossiers spécifiques pour que PowerShell les trouve (comme une variable d’environnement PATH quoi).
Donc 2 options : soit vous utilisez la commande native, la version des faibles :
Get-Module -listavailable | where-Object {$_.Name -match '<ModuleName'}
Sinon à la main, je vous propose une version oneliner « qui sert à rien » mais « parce que je peux le faire » :
$env:PSModulePath.Split(';') | foreach {Write-Host -ForegroundColor Yellow $_ ; If (Test-Path $_){Get-ChildItem -Path $_ | foreach {if($_.Name -match "<ModuleName"){Write-Host @($_.name+'-'+$_.FullName)}}}}
Les plus attentifs auront noté que je cherche dans ce second cas un nom de dossier, et pas un nom de module, dans les emplacements possibles pour un module … Lire la suite