PowerShell Gallery

Allgemeine Infos

Die PowerShell Gallery ist das zentrale Repository für PowerShell-Inhalte unter powershellgallery.com. Sie enthält Module, Skripte, DSC-Ressourcen und JEA-Rollenfunktionen, ein Teil davon stammt von Microsoft (etwa Az, Microsoft.Entra, PSScriptAnalyzer), der Rest von der Community. In PowerShell ist sie als Repository mit dem Namen PSGallery hinterlegt, PowerShellGet und PSResourceGet greifen darauf zu.

Wer veröffentlicht, braucht ein Gallery-Konto und einen API-Schlüssel. Jedes Paket wird nach dem Upload auf Viren gescannt und mit PSScriptAnalyzer analysiert, Probleme gehen an den Herausgeber. Ein veröffentlichtes Paket lässt sich nur mit Hilfe des Betriebsteams löschen. Pakete ohne eigene Lizenzangabe fallen unter die Lizenz in den Nutzungsbedingungen der Gallery.

Am 20. Mai 2026 hat das PowerShell-Team die Rolle der Gallery neu eingeordnet: Sie gilt als von der Community getragen, standardmäßig nicht vertrauenswürdig, ohne SLA und nicht für die direkte Nutzung durch Produktionssysteme empfohlen. Als vertrauenswürdige Quelle für Microsoft-Module baut Microsoft die Microsoft Artifact Registry (MAR, mcr.microsoft.com) auf, die Module ziehen dorthin schrittweise um. Abgrenzung: Ein PowerShell-Modul ist das einzelne Paket, PSResourceGet der Client, Azure Artifacts in Azure DevOps ein mögliches internes Repository.

Funktionsweise & Details

Pakete werden als NuGet-Pakete (.nupkg) übertragen, der API-Schlüssel heißt in den Cmdlets deshalb NuGetApiKey. Der Ablauf aus Sicht von Nutzern und Herausgebern:

  1. Suchen: Find-PSResource -Repository PSGallery oder die Website zeigen Version, Herausgeber, Abhängigkeiten, Downloadzahlen und Versionshistorie.
  2. Installieren: Install-PSResource bzw. Install-Module -Repository PSGallery lädt das Paket samt den im Manifest deklarierten Abhängigkeiten. Save-PSResource speichert es nur lokal, etwa zur Sichtung oder für ein internes Repository.
  3. Vorbereiten: Herausgeber pflegen im Manifest Version (nach SemVer), Author und Description sowie empfohlen ProjectUri, LicenseUri und Tags wie PSEdition_Core oder Windows. Vor dem Upload laufen Test-ModuleManifest und PSScriptAnalyzer.
  4. Veröffentlichen: Publish-PSResource oder Publish-Module mit dem API-Schlüssel lädt das Paket hoch, jede Veröffentlichung braucht eine neue Versionsnummer.
  5. Signatur: Bei Modulen mit signierter Katalogdatei kontrolliert Install-Module Signatur und Dateihashes und gleicht ab, ob der Signaturgeber zur bereits installierten Version passt. Save-Module validiert keine Signatur.

Vorteile & Nutzen

  • Zentrale Quelle: Herstellermodule und Community-Werkzeuge kommen per Befehl samt Abhängigkeiten auf das System, statt manuell kopiert zu werden
  • Transparenz: Versionshistorie, Downloadzahlen, Projekt-Links und Abhängigkeiten helfen bei der Bewertung eines Pakets
  • Grundschutz: Virenscan und PSScriptAnalyzer laufen für jedes veröffentlichte Paket
  • Einfache Verteilung: Wer ein Modul öffentlich teilen will, veröffentlicht es mit einem Cmdlet und erreicht alle PowerShell-Nutzer

Praxisbeispiel

Ein Energieversorger mit 1.200 Mitarbeitenden sichert im Rahmen seiner NIS2-Maßnahmen die Lieferkette der eingesetzten Software ab, dazu zählen auch PowerShell-Module. Admins recherchieren weiterhin in der Gallery und laden Module auf einem Testsystem per Save-PSResource herunter. Nach Durchsicht von Herausgeber, Code und Lizenz übernimmt die IT freigegebene Versionen in ein internes Repository, Produktionsserver haben nur dieses als vertrauenswürdige Quelle registriert. Bei einem Audit belegt die IT so für jedes eingesetzte Modul Herkunft, Version und Freigabedatum.

Worauf sollte man achten?

  • Unbekannte Pakete erst mit Save-PSResource herunterladen und den Code lesen, bevor Du sie mit Admin-Rechten ausführst, Downloadzahlen allein sind kein Qualitätsmerkmal
  • PSGallery auf Produktionssystemen nicht als Trusted registrieren, sondern ein internes Repository wie Azure Artifacts oder Azure Container Registry als einzige vertrauenswürdige Quelle nutzen
  • Den API-Schlüssel wie ein Passwort behandeln und regelmäßig über Reset Key erneuern: Wer ihn hat, kann jedes Paket des Kontos aktualisieren
  • Veröffentlichungen nie in der Gallery testen, sondern gegen ein lokales Repository auf einer Dateifreigabe, weil sich veröffentlichte Pakete nicht selbst löschen lassen
  • Für Microsoft-Module die Microsoft Artifact Registry per Register-PSResourceRepository einbinden, sobald die benötigten Module dort bereitstehen

Lizenz & Verfügbarkeit

Die Nutzung der PowerShell Gallery ist kostenlos, für Veröffentlichungen ist ein Gallery-Konto nötig. Die Lizenz gilt je Paket, fehlt eine eigene Angabe, greift die Lizenz aus den Nutzungsbedingungen (Exhibit A). Microsoft gibt für die Gallery kein SLA. Stand: Oktober 2026.

Fazit

Die PowerShell Gallery ist die wichtigste Fundstelle für PowerShell-Module, aber keine vertrauenswürdige Produktionsquelle. Nutze sie zum Finden und Testen und versorge Produktionssysteme aus einem eigenen, kontrollierten Repository.