So installieren Sie PowerShell-Module offline ohne Internetzugang

Die Verwendung von PowerShell-Modulen in abgeschotteten Netzwerken oder auf Servern kann mühsam sein. Stellen Sie sich vor, Sie versuchen, ein Modul wie SQLServer oder PSWindowsUpdate auf einem Server ohne Internetzugang zum Laufen zu bringen, und alles scheint sich Ihnen in den Weg zu stellen. Die gute Nachricht: Es gibt Lösungen für dieses Problem. Diese Anleitung zeigt Ihnen, wie Sie PowerShell-Module offline installieren – sodass Sie nicht auf das Internet angewiesen sind – und wie Sie bei Bedarf Module von einem Remote-Rechner importieren. Kurz gesagt: Sie können Ihre Umgebung einrichten, ohne sich Gedanken über lästige Netzwerkbeschränkungen machen zu müssen. Das ist besonders nützlich in isolierten Umgebungen oder bei strengen IT-Richtlinien. So haben Sie die benötigten Module immer dort verfügbar, wo Sie sie brauchen – unabhängig von den Netzwerkbeschränkungen.

So installieren Sie PowerShell-Module auf Offline-Computern

Zuerst laden Sie das Modul von einem mit dem Internet verbundenen Rechner herunter.

Da die meisten Module direkt aus der PowerShell Gallery ( https://www.powershellgallery.com/ ) stammen, müssen Sie diese zunächst auf einem Computer mit Internetverbindung herunterladen. Sie benötigen PowerShell Version 5.1 oder neuer. Die Versionsnummer können Sie mit dem Befehl `powershell version` überprüfen $PSVersionTable. PSVersion. Bei älteren Versionen kann es ohnehin zu Kompatibilitätsproblemen kommen. Sobald die Versionsnummer bestätigt ist, suchen Sie das gewünschte Modul, z. B.SqlServer, mit folgendem Befehl:

Find-Module –Name *SqlServer* | Select Name, Version, Repository 

Dieser Befehl hilft dabei, zu überprüfen, ob das jeweilige Modul in der Galerie vorhanden ist. Laden Sie es anschließend in einen Ordner herunter, den Sie sich merken können, zum Beispiel C:\PS:

Save-Module –Name SqlServer –Path C:\PS\

Nun zum kniffligen Teil. Das Modul wird als Ordner mit allen zugehörigen Dateien heruntergeladen, aber nicht unbedingt mit allen Abhängigkeiten. Es reicht also nicht aus, den Ordner einfach auf den Zielrechner zu kopieren, wenn Abhängigkeiten fehlen – manchmal benötigt das Modul weitere Module oder Dateien, um korrekt zu funktionieren. Bei grundlegenden Modulen genügt es jedoch in vielen Fällen, den Ordner in den richtigen Pfad zu kopieren. Die Standardpfade des Systems für Module sind typischerweise:

  • C:\Users\Benutzername\Dokumente\WindowsPowerShell\Module – lokalisiert auf den aktuellen Benutzer
  • C:\Program Files\WindowsPowerShell\Modules – für alle Benutzer (erfordert Administratorrechte)
  • C:\Windows\system32\WindowsPowerShell\v1.0\Modules – integrierte Module

Kopieren Sie den gesamten Modulordner nach C:\Programme\WindowsPowerShell\Modules (oder den Benutzerordner, falls er nur für Ihren Benutzer bestimmt ist).Überprüfen Sie anschließend, ob PowerShell das Modul erkennt.

Get-Module -Name SqlServer -ListAvailable

Wenn das Modul angezeigt wird, ist es einsatzbereit. Sie können seine Befehle mit folgendem Befehl auflisten:

Get-Command -Module SqlServer

So haben Sie das Modul auch dann zur Hand, wenn Ihr Server keinen Internet- oder PowerShellGallery-Zugriff hat und es offline importieren und verwenden kann. Beachten Sie jedoch, dass für einige Module mit Abhängigkeiten zusätzliche Schritte oder vorab heruntergeladene Module erforderlich sein können.

Wichtiger Tipp:

Bei manchen Konfigurationen funktioniert diese Methode möglicherweise nicht auf Anhieb, insbesondere wenn Abhängigkeiten fehlen oder Versionskonflikte bestehen. Ein Neustart von PowerShell oder (manchmal) des Rechners selbst kann helfen, die neuen Module zu erkennen. Es ist etwas eigenwillig, aber so ist Windows eben.

PowerShell-Modul von einem Remotecomputer importieren

Überspringen Sie die Installation und leihen Sie sich das Modul einfach von einem anderen Computer aus.

Wenn die lokale Installation des Moduls nicht möglich ist, können Sie es per PowerShell-Remoting direkt von einem Remote-Rechner laden. Dazu erstellen Sie eine Sitzung, prüfen die verfügbaren Module und importieren die benötigten Befehle. Das ist praktisch, wenn Sie ein bestimmtes Modul nur gelegentlich benötigen oder etwas testen möchten, ohne Ihre lokale Konfiguration zu beeinträchtigen.

Erstellen Sie zunächst eine neue Sitzung zum Remote-Rechner:

$session = New-PSSession -ComputerName dub-sql1

Ersetzen Sie dub-sql1 durch den Namen Ihres Remote-Systems. Nach erfolgreicher Verbindung können Sie die auf diesem Rechner verfügbaren Module mit folgendem Befehl anzeigen:

Get-Module -PSSession $session -ListAvailable

Falls das Modul vorhanden ist, importieren Sie es wie folgt in Ihre aktuelle Sitzung:

Import-Module -PSSession $session -Name SqlServer

Dieser Befehl lädt alle Cmdlets des Remote-SQLServer-Moduls in Ihre lokale PowerShell-Sitzung. Anschließend können Sie Befehle ausführen, als Invoke-Sqlcmdwäre das Modul lokal installiert. Vergessen Sie nicht, die Sitzung danach zu schließen.

Remove-PSSession $session

Ein weiterer Trick besteht darin, implizites Remoting zu verwenden, wenn diese Befehle sich wie native Befehle verhalten sollen, ohne dass ständig Sitzungen verwaltet werden müssen. Das geht so:

$session = New-PSSession -ComputerName dub-sql1 Invoke-Command {Import-Module SqlServer} -Session $session Export-PSSession -Session $session -CommandName *-Sql* -OutputModule RemoteSQLServer -AllowClobber Remove-PSSession $session Import-Module RemoteSQLServer 

Dadurch wird ein lokales Modul eingerichtet, das sich im Hintergrund mit Ihrem Remote-Server verbindet – etwas raffiniert, aber sehr nützlich, wenn Sie SQL-Server-Befehle ausführen möchten, ohne etwas auf dem Host-Rechner zu installieren.

Kurz gesagt, die Hauptidee ist, dass diese Methoden – egal ob Offline-Installation oder Remote-Import – einem den Tag retten, wenn die normale Installation mit Internetverbindung nicht möglich ist. Es ist zwar etwas mehr Aufwand, aber immer noch besser, als sich mit fehlerhaften Abhängigkeiten herumzuschlagen oder darauf zu warten, dass die IT-Abteilung die Galerie freigibt.