Articles

Adam the Automator

Sind Sie bereit, Ihr PowerShell 7-Upgrade durchzuführen und Zugriff auf alle neuen Funktionen zu erhalten? Wenn ja, dann ist dieser Artikel genau das Richtige für Sie.

Als PowerShell 6 veröffentlicht wurde, ging es darum, eine Basisversion der PowerShell auf alle Plattformen zu bringen (PowerShell Core). Mit PowerShell 7 (die zum Zeitpunkt der Erstellung dieses Artikels die neueste PowerShell-Version ist) sollen nun alle Plattformen in Bezug auf die PowerShell, die sie bereitstellen können, gleich sein (sowohl Windows PowerShell als auch PowerShell Core).

In diesem Artikel erfahren Sie, wie Sie ein PowerShell 7-Upgrade manuell durchführen und wie Sie den Aktualisierungsprozess in Zukunft mit Massenbereitstellungen über GPO und PowerShell Remoting automatisieren können.

Zum Zeitpunkt der Erstellung dieses Artikels ist die aktuelle Version von PowerShell 7 Preview 3. Die meisten Referenzen in diesem Artikel gelten für diese Version.

Inhaltsverzeichnis

Wie Sie die PowerShell-Version auf einer Maschine aktualisieren

Wie bei PowerShell Core 6.0 ist der Prozess zur Installation von PowerShell Core 7 ähnlich. Schauen wir uns ein paar verschiedene Möglichkeiten an, PowerShell 7 auf einer einzelnen Maschine zu installieren.

Bevor wir zu weit kommen, sollten Sie ein paar Voraussetzungen erwähnen, bevor Sie PowerShell Version 7 installieren. Sie werden feststellen, dass dies die gleichen Anforderungen sind wie für PowerShell Version 6.

  • Die Universal C Runtime muss installiert sein
  • Windows Management Framework (WMF) 4.0 oder neuer – nur wenn Sie eine Version von Windows 7 oder Windows Server 2008R2 verwenden. Bei neueren Windows-Versionen wie Windows 8.1, Windows 10 und Windows Server 2016 ist WMF nicht erforderlich.

PowerShell 7 manuell installieren

Zunächst müssen Sie PowerShell 7 herunterladen. Gehen Sie dazu auf die GitHub-Releases-Seite für PowerShell und suchen Sie die Version, die Sie installieren möchten. Für diesen Artikel verwenden wir die Version PowerShell 7.0.0 Preview 3. Scrollen Sie unter Windows etwas nach unten und laden Sie die PowerShell-7.0.0-preview.3-win-x86.msi MSI-Paket herunter und führen Sie es aus.

Willkommensbildschirm für die PowerShell 7-Installation
Willkommensbildschirm für die PowerShell 7-Installation

Der Assistent stellt Ihnen ein paar einfache Fragen, z. B. wo Sie die PowerShell installieren möchten. Wenn Sie mehrere Versionen der PowerShell nebeneinander ausführen möchten, stellen Sie sicher, dass Sie separate Installationsordner verwenden.

Der Assistent fragt auch, ob Sie die PowerShell in der PATH-Umgebungsvariable registrieren möchten. Durch das Hinzufügen des PowerShell-Installationsordners zur PATH-Umgebungsvariablen können Sie die PowerShell von jedem anderen Terminal aus aufrufen, z. B. von einer anderen Version der PowerShell oder sogar von cmd.exe.

Eine weitere Option ist die Registrierung der PowerShell für das Windows-Ereignisprotokollierungsmanifest. Wenn diese Option aktiviert ist, nutzt sie die robuste Protokollierung, die mit dieser Version der PowerShell geliefert wird.

Als Nächstes werden Sie gefragt, ob Sie PowerShell Remoting von Anfang an aktivieren möchten, was bei allen Remote-Aufgaben helfen kann.

Schließlich werden Sie gefragt, ob Sie dem Explorer „Hier öffnen“-Kontextmenüs hinzufügen möchten. Mit dieser Option können Sie beim Browsen im Windows-Explorer mit der rechten Maustaste auf einen beliebigen Ordner klicken und ein PowerShell-Fenster in diesem Arbeitsverzeichnis öffnen.

Auch wenn die letzten beiden komplett optional sind und Ihnen überlassen bleiben, würde ich dringend empfehlen, die ersten beiden zu aktivieren, etwa so:

Voreinstellungen bei der PowerShell 7-Installation wählen
Voreinstellungen bei der PowerShell 7-Installation wählen

Wenn Sie alle Fragen beantwortet haben, klicken Sie auf Weiter und die Installation beginnt.

Öffnen von PowerShell 7

Nach der Installation können Sie PowerShell 7 starten, indem Sie ein beliebiges Kommandozeilenterminal öffnen und pwsh-preview eingeben.

Beachten Sie, dass Sie diesen Befehlsnamen nicht mehr verwenden werden, sobald die Version 7 von PowerShell die „Preview“-Phase verlassen hat. Sobald sie aus der Vorschau heraus ist, können Sie PowerShell 7 mit pwsh starten.

Installation von PowerShell 7 mit PowerShell

Der Leiter des Microsoft PowerShell-Teams, Steve Lee, twitterte eine praktische Methode zur Installation von PowerShell 7 mithilfe des PowerShell-Cmdlet Invoke-RestMethod. Dieses Code-Snippet nutzt den Befehl, um das PowerShell-GitHub-Repository abzufragen und ein Installationsskript herunterzuladen, das dann PowerShell 7 mit einer einzigen Zeile herunterlädt und installiert.

Nachfolgend finden Sie die entsprechende Syntax. Öffnen Sie eine Windows PowerShell-Konsole und führen Sie den folgenden Einzeiler aus.

iex "& { $(irm https://aka.ms/install-powershell.ps1) } -UseMSI -Preview"

Dieser Code-Schnipsel verwendet das PowerShell-Cmdlet Invoke-Expressioniex im Einzeiler), um eine Zeichenkette anzunehmen und als PowerShell-Code auszuführen. Dieser String ruft das Invoke-RestMethod cmdlet (irm im Einzeiler) auf, um das von Steve geschriebene Skript herunterzuladen. Ich empfehle dringend, den Link zu verwenden und sich den Code selbst anzusehen, bevor Sie diesen Befehl ausführen!

Das Snippet übergibt dann die Parameter UseMSI und Preview an das Skript, um die neueste MSI zu holen und zu installieren.

Wenn Sie dieses Skript komplett lautlos und unbeaufsichtigt ausführen möchten, können Sie den Parameter Quiet verwenden. Zum Zeitpunkt dieses Schreibens zeigt der Preview-Parameter immer noch auf PowerShell 7 Preview 3.

Installieren von PowerShell 7 mit einem Modul

Eine weitere Möglichkeit, PowerShell 7 zu installieren, ist die Verwendung des PowerShell-Moduls PSReleaseTools von Jeff Hicks. Dieses Modul hilft, ähnlich wie Steves Einzeiler, dabei, Ihre PowerShell-Version auf dem neuesten Stand zu halten.

Mit zwei Zeilen PowerShell können Sie das Modul mit Install-Module herunterladen und mit dem Install-PSPreview-Befehl, der mit dem PSRelaseTools-Modul geliefert wird, können Sie die PowerShell 7-Vorschau installieren.

PS51> Install-Module -name PSReleaseTools -ForcePS51> Install-PSPreview -mode Quiet

Bereitstellen von PowerShell 7 in einer Organisation

Es gibt mehrere Optionen für die Bereitstellung von PowerShell 7 im großen Maßstab. Schauen wir uns zwei gängige Möglichkeiten an.

Bereitstellen von PowerShell 7 mit einem GPO

PowerShell lässt sich einfach über ein GPO bereitstellen, da es sich leicht mit anderen Microsoft-Technologien kombinieren lässt, während es als MSI verpackt ist. Wenn Sie sie per GPO bereitstellen, gibt es ein paar Dinge, die Sie beachten sollten.

Verwenden Sie ein computerbasiertes GPO

Zunächst sollten Sie sicherstellen, dass Sie eine computerbasierte Richtlinie und keine benutzerbasierte Richtlinie verwenden. Mehr zu den Unterschieden zwischen diesen beiden Richtlinien können Sie hier nachlesen. Auf Servern melden sich die Benutzer in den meisten Fällen nicht interaktiv an, was eine Bereitstellung auslöst.

Wenn Sie PowerShell 7 auf vielen Servern bereitstellen, möchten Sie, dass die Bereitstellung unabhängig von der Benutzerinteraktion mit dem Computer erfolgt.

Einrichten einer Netzwerkfreigabe

Stellen Sie außerdem sicher, dass die Netzwerkfreigabe, auf der Sie die PowerShell 7 MSI ablegen, die entsprechenden Berechtigungen hat, damit alle Server in Ihrer Umgebung darauf zugreifen können. Obwohl dies den Rahmen dieses Artikels sprengen würde, finden Sie hier mehr über das Erstellen von Dateifreigaben.

Einrichten des GPO

Dann erstellen Sie Ihr GPO mit folgenden Schritten:

  • Plazieren Sie das MSI in der zugewiesenen Dateifreigabe, auf die Ihre Computer zugreifen können.
  • Erstellen Sie ein Starter-GPO innerhalb der Gruppenrichtlinien-Verwaltungskonsole. Mehr zu Starter-GPOs können Sie hier nachlesen
  • Nach dem Erstellen des GPOs öffnen Sie dieses und navigieren zu Computerkonfiguration -> Softwareeinstellungen.
  • Klicken Sie mit der rechten Maustaste auf Software-Installation und wählen Sie dann Neu -> Paket.
  • In dem Dialogfeld fügen Sie den vollständigen UNC-Pfad zum MSI hinzu. Wenn sich beispielsweise eine Dateifreigabe namens Ordner auf dem Server.namef befindet, wäre der Pfad \\server.name\ordner\powershell-7.msi
  • Klicken Sie auf Öffnen -> Zugewiesen -> OK.

Hängen Sie das GPO an die erforderliche(n) OU(s) an

Nach der Erstellung hängen Sie das GPO an die erforderliche(n) OU(s) an. Schauen Sie in ein paar Stunden wieder vorbei, und der Einsatz sollte größtenteils abgeschlossen sein.

Prüfen Sie den Fortschritt der GPO-Installation

Wenn Sie einen praktischeren Ansatz zur Überprüfung Ihres Gruppenrichtlinieneinsatzes bevorzugen, schauen Sie sich dieses kurze Skript unten an, das einen Bericht mit dem Gruppenrichtlinienobjekt erstellt, das auf Computer in einer bestimmten OU angewendet wird.

Stellen Sie sicher, dass Sie den OU-Differenznamen (OU=Domänencontroller,DC=mylab,DC=local) in Ihre OU ändern.

Beachten Sie, dass Sie dies auf einem Domänencontroller oder einem domänenverbundenen Computer mit installiertem PowerShell ActiveDirectory-Modul ausführen können.

$computers = Get-ADComputer -Filter * -SearchBase 'OU=Domain Controllers, DC=mylab, DC=local'ForEach ($computer in $computers) { Get-GPResultantSetOfPolicy -Computer $computer -ReportType HTML -Path c:\temp\$computer.html}

Wenn Sie bestimmte Server stichprobenartig überprüfen möchten, ist der folgende Befehl sehr hilfreich. Er greift auf einen Remote-Computer zu ($computer) und überprüft mit $PSVersionTable.PSVersion die auf diesem Computer installierte Version der PowerShell.

PS> Invoke-Command -Computername $computer -Scriptblock {$PSVersionTable.psversion}

Wenn Sie schließlich Computer finden, auf denen die Gruppenrichtlinie nicht angewendet wurde, können Sie den folgenden Befehl ausführen, der die Aktualisierung der Gruppenrichtlinie auf dem Zielcomputer erzwingt:

PS> Invoke-GPUpdate -Computer $computer

Bereitstellen von PowerShell 7 mit PowerShell Remoting

Eine weitere großartige Möglichkeit, PowerShell auf Remote-Computern bereitzustellen, ist PowerShell! Obwohl dies ein wenig meta erscheinen mag, ist PowerShell eine ausreichend robuste Skriptsprache, um bei der Installation des Nachfolgers zu helfen.

Bevor Sie beginnen, stellen Sie sicher, dass PowerShell Remoting aktiviert ist und dass Sie die entsprechenden Berechtigungen für die Ausführung von Remote-Befehlen in Ihrer Umgebung eingerichtet haben. Eine Anleitung zum Aktivieren von PSRemoting per GPO finden Sie hier.

Da Sie den bereits erwähnten Einzeiler zur Installation der PowerShell kennen, müssen Sie diesen Befehl in einen Skriptblock „verpacken“ und dem Invoke-Command-Befehl mitteilen, dass er auf einem oder mehreren Remote-Rechnern ausgeführt werden soll.

Unten sehen Sie ein Beispiel für das Durchlaufen einer Liste von Computern, die im $computers-Array gespeichert sind, und das Ausführen des Skripts install-powershell.ps1 auf allen diesen Computern.

$creds = $(Get-Credential)ForEach ($computer in $computers) { Invoke-Command -ComputerName $computer -Credential $creds {iex "& { $(irm https://aka.ms/install-powershell.ps1) } -UseMSI -Preview -Quiet"}}

Zusammenfassung

Es gibt so viele Gründe, Ihre PowerShell-Version auf dem neuesten Stand zu halten, zumindest auf Ihrem eigenen Computer, wenn nicht in Ihrer Produktionsumgebung. Sie können die neuesten Funktionen verwenden, die Leistungsverbesserungen nutzen und sogar sicherstellen, dass Ihr älterer Code in den neueren Versionen nicht kaputt geht.

Wie Sie sehen können, gibt es viele Möglichkeiten, neue Versionen von PowerShell herunterzuladen und zu installieren. Wählen Sie die Methode, die in Ihrer Umgebung am besten funktioniert, und machen Sie weiter mit der PowerShell!

Weitere Informationen

  • Wie Sie Ihre PowerShell-Version überprüfen können (alle Möglichkeiten!)

Eine Antwort schreiben

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.