Import Allmodules
Permet d'écrire ses modules sans avoir à se soucier de l'ordre d'import et en les appelant les uns les autres dans les désordres sans se prendre la tête avec les règles d'appel powershell :
# Fonction pour obtenir la liste des modules à importer
function Get-AllModules {
param (
[string]$chemin
)
# Vérifiez si le répertoire existe
if (-not (Test-Path -Path $chemin -PathType Container)) {
Write-Error "Le chemin spécifié n'existe pas : $chemin"
return
}
# Liste des fichiers .psm1 dans le répertoire spécifié
$fichiers = Get-ChildItem -Path $chemin -Filter *.psm1
# Initialiser un tableau pour stocker les résultats
$resultats = @()
# Dictionnaire pour suivre les définitions des termes
$definitions = @{}
# Fonction pour ajouter des termes définis dans le dictionnaire
function Ajouter-Definitions {
param (
[string]$nomFichier,
[string[]]$termes
)
foreach ($terme in $termes) {
if (-not $definitions.ContainsKey($terme)) {
$definitions[$terme] = @()
}
if (-not $definitions[$terme] -contains $nomFichier) {
$definitions[$terme] += $nomFichier
}
}
}
# Fonction pour ajouter les résultats dans l'ordre désiré
function Ajouter-Resultat {
param (
[string]$nomFichier,
[string[]]$termes
)
foreach ($ligne in $termes) {
# Ajouter le fichier courant
$resultats += $nomFichier
# Ajouter les fichiers où les termes sont définis
if ($definitions.ContainsKey($ligne)) {
$resultats += $definitions[$ligne]
}
}
}
# Analyse de chaque fichier pour découvrir les termes utilisés
foreach ($fichier in $fichiers) {
$contenu = Get-Content -Path $fichier.FullName
$termesTrouves = @()
# Cherche les termes utilisés dans le fichier
foreach ($ligne in $contenu) {
if ($ligne -match '(\$\w+|\-\w+|\(\$\w+\))') {
$termes = $matches[0] -replace '[\$\-\(\)]', '' # Nettoyer les caractères spéciaux
$termesTrouves += $termes
}
}
# Ajouter les définitions des termes trouvés
Ajouter-Definitions -nomFichier $fichier.Name -termes $termesTrouves
# Ajouter les résultats en fonction des termes trouvés
Ajouter-Resultat -nomFichier $fichier.Name -termes $termesTrouves
}
# Convertir le tableau de résultats en une chaîne avec des virgules
$resultString = $resultats -join ','
# Éliminer les doublons consécutifs
$cleanedResultString = $resultString -replace '(,)(?=\1)', ''
# Retourner le résultat nettoyé
return $cleanedResultString
}
# Exemple d'utilisation de la fonction et importation des modules
$chemin = "C:\temp\mods"
$allmodsresult = Get-AllModules -chemin $chemin
# Importer les modules
foreach ($mod in $allmodsresult.Split(',')) {
$modulePath = Join-Path -Path $chemin -ChildPath $mod
Import-Module -Name $modulePath -Global -Force | Out-Null
}
/image%2F0881799%2F20140610%2Fob_a8c7fe_logo2.jpg)
Commenter cet article