J'ai un groupe de scripts PowerShell qui sont parfois exécutés ensemble, parfois un à la fois. Chacun des scripts nécessite le chargement d'un certain composant logiciel enfichable.
En ce moment, chaque script appelle Add-PSSnapin XYZ
au début.
Maintenant, si j'exécute plusieurs scripts dos à dos, les scripts suivants lancent:
Impossible d'ajouter le composant logiciel enfichable Windows PowerShell XYZ car il est déjà ajouté. Vérifiez le nom du composant logiciel enfichable et réessayez.
Comment puis-je faire vérifier chaque script pour voir si le composant logiciel enfichable est déjà chargé avant d'appeler Add-PSSnapin?
la source
Scott vous a déjà donné la réponse. Vous pouvez également le charger quand même et ignorer l'erreur si elle est déjà chargée:
la source
Étonnamment, personne n'a mentionné la manière native pour les scripts de spécifier les dépendances: la
#REQUIRES -PSSnapin Microsoft.PowerShell...
directive comment / preprocessor. De la même manière, vous pourriez avoir besoin d'une élévation avec-RunAsAdministrator
, de modules avec-Modules Module1,Module2
et d'une version spécifique de Runspace.En savoir plus en tapant
Get-Help about_requires
la source
J'ai essayé l'exemple de code de @ ScottSaad mais cela n'a pas fonctionné pour moi. Je n'ai pas trouvé exactement pourquoi mais le contrôle n'était pas fiable, parfois réussi et parfois non. J'ai trouvé que l'utilisation d'un
Where-Object
filtrage sur laName
propriété fonctionnait mieux:Code avec l'aimable autorisation de ceci .
la source
Scott Saads fonctionne mais cela me semble un peu plus rapide. Je ne l'ai pas mesuré mais il semble se charger un peu plus vite car il ne produit jamais de message d'erreur.
la source