PowerShell Module - Installation and Update
Wer viel mit der PowerShell arbeitet, kommt nicht um Module aus der PS Gallery herum.
Die Module werden von Zeit zur Zeit aktualisiert und das kann dafür sorgen, dass Cmdlets, Funktionen, Aliase, usw. hinzugefügt, bzw. entfernt werden oder so angepasst werden, dass diese anders angesprochen werden müssen.
Mir ist dies vor ein paar Wochen bei dem Module cNtfsAccessControl aufgefallen, nachdem die DSC-Configuration auf einen Fehler hinauslief.
Zum anderen kommt es zu Problemen, wenn mehrere Versionen des gleichen Moduls auf einem Server installiert sind. Es ist zwar von Microsoft unterstützt und das Importieren von Modulen kann auch pro Version geschehen, aber persönlich finde ich diesen Ansatz ehr unsauber, da es in den meisten Fällen zu Verwirrungen führt und z.B. DSC-Configuations Probleme mit verschiedenen Versionen haben.
Nichtsdestotrotz kann dies natürlich in einigen Situationen gefordert und notwendig sein:
Import-Module -Name vCloudDirector -RequiredVersion "0.0.2"
Um jedoch PowerShell Module so zu installieren, bzw. zu aktualisieren, dass anschließend nur eine Version vorhanden ist, habe ich die Funktion Invoke-PSModuleInstallation geschrieben.
Bei der Ausführung kann der Parameter Version entweder mit Newest oder der Versionsnummer (0.2.1) angegeben werden, die installiert werden soll. Sollten mehrere Versionen des gleichen Modules installiert sein, muss der Force Parameter genutzt werden.
Invoke-PSModuleInstallation -Name AzureRM -Version "Newest" -InstalledModules $InstalledModules -Scope AllUsers -Force -Verbose
Invoke-PSModuleInstallation -Name vCloudDirector -Version "0.0.2" -InstalledModules (Get-Module -ListAvailable) -Force -Verbose