Ich habe eine Gruppe von PowerShell-Skripten, die manchmal zusammen ausgeführt werden, manchmal einzeln. Für jedes der Skripte muss ein bestimmtes Snap-In geladen werden.
Im Moment ruft jedes Skript Add-PSSnapin XYZ
am Anfang auf.
Wenn ich nun mehrere Skripte hintereinander ausführe, werfen die folgenden Skripte:
Windows PowerShell-Snap-In XYZ kann nicht hinzugefügt werden, da es immer hinzugefügt wird. Überprüfen Sie den Namen des Snap-Ins und versuchen Sie es erneut.
Wie kann ich jedes Skript überprüfen lassen, um festzustellen, ob das Snap-In bereits geladen ist, bevor Add-PSSnapin aufgerufen wird?
quelle
Scott hat dir bereits die Antwort gegeben. Sie können es auch trotzdem laden und den Fehler ignorieren, wenn es bereits geladen ist:
quelle
Überraschenderweise erwähnte niemand die native Methode für Skripte, um Abhängigkeiten anzugeben: die
#REQUIRES -PSSnapin Microsoft.PowerShell...
Kommentar- / Präprozessor-Direktive. Trotzdem könnten Sie eine Erhöhung mit-RunAsAdministrator
, Module mit-Modules Module1,Module2
und eine bestimmte Runspace-Version benötigen.Lesen Sie mehr durch Tippen
Get-Help about_requires
quelle
Ich habe das Codebeispiel von @ ScottSaad ausprobiert, aber es hat bei mir nicht funktioniert. Ich habe nicht genau herausgefunden, warum, aber die Prüfung war unzuverlässig, manchmal erfolgreich und manchmal nicht. Ich fand, dass die Verwendung einer
Where-Object
Filterung für dasName
Grundstück besser funktioniert:Code mit freundlicher Genehmigung von dieser .
quelle
Scott Saads funktioniert, aber das scheint mir etwas schneller zu sein. Ich habe es nicht gemessen, aber es scheint nur ein bisschen schneller zu laden, da es nie eine Fehlermeldung erzeugt.
quelle