Erste Schritte mit PowerShell

PowerShell ist eine von Microsoft für Windows-Systeme entwickelte Befehlszeilen-Shell + Skriptumgebung, die hauptsächlich für Systemadministration und Automatisierungsaufgaben verwendet wird.

UnterWindows 11Suchen Sie dort einfach direkt im Startmenü nachPowerShellund das war's.

Zu den gängigen Verknüpfungen gehören (für 64-Bit-Systeme):

Name der Verknüpfung Beschreibung
Windows PowerShell 64-Bit-Befehlszeilenversion
Windows PowerShell ISE 64-Bit-Grafischer Skript-Editor
Windows PowerShell (x86) 32-Bit-Befehlszeilenversion
Windows PowerShell ISE (x86) 32-Bit-Grafischer Skript-Editor

⚠️ Hinweis: Windows 11 selbst unterstützt keine 32-Bit-Systeme, enthält aber dennoch die x86-Version von PowerShell für die Kompatibilität mit Legacy-Programmen.


Möglichkeiten zum Starten von PowerShell

Normale Startmethode

Klicken Sie auf die Windows PowerShell-Verknüpfung, um die PowerShell-Konsole zu starten.

Die Titelleiste der PowerShell-Konsole zeigt "Windows PowerShell" an.

Hinweis:Einige Befehle können normal ausgeführt werden, wenn PowerShell als regulärer Benutzer ausgeführt wird, aber PowerShell selbst nimmt nicht an der Benutzerkontensteuerung (UAC) teil und kann den Benutzer nicht zur Erhöhung der Rechte auffordern.

Erläuterung der Benutzerkontensteuerung (UAC)

Was UAC bewirkt:Eine Windows-Sicherheitsfunktion, die verhindert, dass bösartiger Code mit erhöhten Rechten ausgeführt wird.

Berechtigungseinschränkungen für reguläre Benutzer: Wenn Sie als regulärer Benutzer ausgeführt werden, führt der Versuch, Befehle auszuführen, die Administratorrechte erfordern, zu einem Fehler.

Zum Beispiel das Beenden eines Windows-Dienstes:

Stop-Service -Name W32Time

Beispiel für eine Fehlermeldung:

Stop-Service : Service 'Windows Time (W32Time)' cannot be stopped due to
the following error: Cannot open W32Time service on computer '.'.
At line:1 char:1
+ Stop-Service -Name W32Time
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : CloseError: (System.ServiceProcess.ServiceCon
   troller:ServiceController) [Stop-Service], ServiceCommandException
    + FullyQualifiedErrorId : CouldNotStopService,Microsoft.PowerShell.Comm
   ands.StopServiceCommand
Lösung: Sie müssenPowerShell mit einem Benutzer ausführen, der über lokale Administratorrechte verfügt.

Ein zweites Domänenbenutzerkonto ist konfiguriert, nach dem Prinzip der geringsten Rechte; es ist kein Domänenadministrator und hat keine erhöhten Rechte innerhalb der Domäne.

Schritte:

  • Klicken Sie mit der rechten Maustaste auf die Windows PowerShell-Verknüpfung
  • Wählen Sie "Als Administrator ausführen"

Systemaufforderung:Da Sie derzeit als normaler Benutzer angemeldet sind, werden Sie von Windows aufgefordert, die Anmeldeinformationen eines lokalen Administrators einzugeben.

Erhöhung bestätigen:In der Titelleiste des PowerShell-Fensters mit erhöhten Rechten wird "Administrator: Windows PowerShell" angezeigt.

Ergebnis:Beim Ausführen von Befehlen, die Administratorrechte erfordern, in der PowerShell mit erhöhten Rechten treten keine UAC-Fehler mehr auf.

Prinzip der Rechteerhöhung: PowerShell nur dann mit erhöhten Rechten ausführen, wenn es unbedingt erforderlich ist.

Remotecomputer:Wenn Sie Remotecomputer ansprechen, müssen PowerShell-Rechte nicht erhöht werden. Die Erhöhung betrifft nur lokale Befehle.

Verknüpfungen anheften:Sie können die Verknüpfung für PowerShell oder Windows Terminal an die Taskleiste anheften, um sie schnell zu starten:

Erhöhte PowerShell sicher starten:Wenn Sie PowerShell mit erhöhten Rechten starten müssen, halten Sie die Umschalttaste gedrückt, während Sie mit der rechten Maustaste auf das angeheftete PowerShell-Symbol in der Taskleiste klicken, und wählen Sie "Als Administrator ausführen".


Anleitung zum Ermitteln der PowerShell-Version und der Ausführungsrichtlinie

1. Überprüfen der PowerShell-Version

PowerShell stellt eine automatische Variable bereit$PSVersionTable, die die Version und zugehörige Informationen der aktuellen PowerShell-Sitzung enthält.

$PSVersionTable

Die Ausgabe sieht in etwa wie folgt aus:

Name                           Value
----                           -----
PSVersion                      5.1.22621.2428
PSEdition                      Desktop
PSCompatibleVersions           {1.0, 2.0, 3.0, 4.0...}
BuildVersion                   10.0.22621.2428
CLRVersion                     4.0.30319.42000
WSManStackVersion              3.0
PSRemotingProtocolVersion      2.3
SerializationVersion           1.1.0.1

Versionshinweise

  • Windows PowerShell 5.1 ist in derzeit unterstützten Windows-Versionen vorinstalliert und die empfohlene Version.
  • PowerShell 7 (plattformübergreifende Version) ist kein Ersatz für Windows PowerShell 5.1, sondern ein anderes Produkt, das parallel dazu installiert wird.
  • PowerShell 6 (auch bekannt als PowerShell Core) wird nicht mehr unterstützt.

2. Die Ausführungsrichtlinie verstehen

Die Ausführungsrichtlinie ist ein Sicherheitsfeature von PowerShell, das die Bedingungen steuert, unter denen Skripte ausgeführt werden können, und so die versehentliche Ausführung bösartiger Skripte verhindert.

Hinweis: Die Ausführungsrichtlinie ist keine Sicherheitsgrenze; erfahrene Benutzer können sie umgehen.

Geltungsbereich der Ausführungsrichtlinie

  • Sie kann für den lokalen Computer (LocalMachine), den aktuellen Benutzer (CurrentUser) oder die aktuelle Sitzung (Process) festgelegt werden.
  • Sie kann auch für Benutzer und Computer über Gruppenrichtlinien verwaltet werden.

Übliche Windows-Standard-Ausführungsrichtlinien

Betriebssystemversion Standard-Ausführungsrichtlinie
Windows Server 2022 RemoteSigned
Windows Server 2019 RemoteSigned
Windows Server 2016 RemoteSigned
Windows 11 Restricted
Windows 10 Restricted

RestrictedGibt an, dass standardmäßig keine Skripts ausgeführt werden dürfen.

3. Abfragen der aktuellen Ausführungsrichtlinie

Aktuelle Richtlinie abfragen:

Get-ExecutionPolicy

Die Ausgabe sieht in etwa wie folgt aus:

Restricted 

Ausführungsrichtlinien-Einstellungen für alle Bereiche auflisten:

Get-ExecutionPolicy -List

Die Ausgabe sieht in etwa wie folgt aus:

Scope ExecutionPolicy
        ----- ---------------
MachinePolicy       Undefined
   UserPolicy       Undefined
      Process       Undefined
  CurrentUser       Undefined
 LocalMachine       Undefined

4. Beispiele dafür, wie sich die Ausführungsrichtlinie auf die Skriptausführung auswirkt

Angenommen, es gibt eine SkriptdateiGet-TimeService.ps1; das direkte Ausführen des Befehls in der interaktiven Befehlszeile funktioniert normal:

Get-Service -Name W32Time

Wenn Sie denselben Befehl jedoch aus einem Skript heraus ausführen, gibt PowerShell einen Fehler zurück.

.\Get-TimeService.ps1

Fehlermeldung:

.\Get-TimeService.ps1 : File C:\tmp\Get-TimeService.ps1 cannot be loaded
because running scripts is disabled on this system. For more information,
see about_Execution_Policies at
https:/go.microsoft.com/fwlink/?LinkID=135170.
At line:1 char:1
+ .\Get-TimeService.ps1
+ ~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : SecurityError: (:) [], PSSecurityException
    + FullyQualifiedErrorId : UnauthorizedAccess

5. Ändern der Ausführungsrichtlinie

1. Auf RemoteSigned setzen (empfohlen)

Ermöglicht das Ausführen lokaler Skripte und von vertrauenswürdigen Herausgebern signierter Remote-Skripte.

Set-ExecutionPolicy -ExecutionPolicy RemoteSigned
  • Sie müssen PowerShell als Administrator ausführen, um die Ausführungsrichtlinie für den lokalen Computer (LocalMachine) zu ändern.
  • Beim Ändern wird eine Bestätigungsaufforderung angezeigt:
Do you want to change the execution policy? [Y] Yes  [A] Yes to All  ...

2. Nur die Ausführungsrichtlinie des aktuellen Benutzers ändern (keine Administratorrechte erforderlich)

Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser

6. Häufige Fehlermeldungen und Lösungen

Fehler beim Ändern der LocalMachine-Richtlinie ohne erhöhte Administratorrechte:

Access to the registry key 'HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\PowerShell\1\ShellIds\Microsoft.PowerShell' is denied.

Lösung: Wiederholen Sie den Vorgang, nachdem Sie PowerShell als Administrator ausgeführt haben, oder ändern Sie nur die Richtlinie des aktuellen Benutzers.

7. Überprüfung nach der Änderung

Nachdem die Ausführungsrichtlinie geändert wurde zuRemoteSigned, führen Sie das Skript aus:

.\Get-TimeService.ps1

Ausgabe:

Status   Name    DisplayName
------   ----    -----------
Running  W32Time Windows Time

8. Hinweise
  • Skripte sind reine Textdateien mit der Erweiterung.ps1。
  • Es wird empfohlen,Visual Studio Codeoder einen Texteditor zum Schreiben von Skripten zu verwenden.
  • Bevor Sie die Ausführungsrichtlinie ändern, lesen Sie bitte die offizielle Dokumentationabout_Execution_Policiesum die damit verbundenen Sicherheitsrisiken zu verstehen.
Andere Erweiterungen