Magic Quadrant™ für Privileged Access Management 2025: Netwrix zum vierten Jahr in Folge anerkannt. Laden Sie den Bericht herunter.

Plattform
Ressourcen­zentrumBlog
PowerShell-Ausführungsrichtlinie

PowerShell-Ausführungsrichtlinie

Mar 26, 2025

PowerShell-Ausführungsrichtlinien steuern die Bedingungen für die Ausführung von Skripten, um unbeabsichtigte oder unsichere Ausführungen zu reduzieren. Sie reichen von restriktiv (Restricted, AllSigned) bis permissiv (Unrestricted, Bypass) und können auf mehrere Bereiche wie Process, CurrentUser und LocalMachine angewendet werden. Obwohl sie keine Sicherheitsgrenze darstellen, fördern sie sichereres Skripting, unterstützen die digitale Signierung und können zentral über Group Policy für eine konsistente organisatorische Kontrolle durchgesetzt werden.

Einführung in PowerShell-Ausführungsrichtlinien

In PowerShell sind Ausführungsrichtlinien ein Sicherheitsmerkmal, das dazu dient, die Bedingungen zu steuern, unter denen PowerShell-Skripte auf einem System ausgeführt werden. Diese Richtlinien sind nicht unbedingt ein Sicherheitsmechanismus, sondern sollen folgendem Zweck dienen:

  • Verhindern Sie die versehentliche Ausführung von Skripten
  • Helfen Sie dabei, das Risiko des Ausführens von Skripten aus unbekannten oder nicht vertrauenswürdigen Quellen zu verwalten

Ausführungsrichtlinien spielen eine wichtige Rolle bei der Verbesserung der Skriptsicherheit. Sie dienen als erste Verteidigungslinie, indem sie die Arten von Skripten einschränken, die auf einem System ausgeführt werden können. Sie etablieren auch Vertrauen in Skriptquellen, wie zum Beispiel Richtlinien wie AllSigned und RemoteSigned, die sicherstellen, dass Skripte von vertrauenswürdigen Quellen stammen. Dies hilft, menschliche Fehler zu reduzieren, wie in einer Situation, in der Benutzer möglicherweise unwissentlich Skripte ausführen, die sie aus E-Mail-Anhängen oder dem Internet heruntergeladen haben. In einem breiteren Kontext können Organisationen Ausführungsrichtlinien nutzen, um konsistente Sicherheitspraktiken über Maschinen und Benutzer hinweg durchzusetzen.

Sie müssen jedoch auch beachten, dass:

  • Ausführungsrichtlinien sind keine Sicherheitsgrenze. Sie können von Benutzern mit administrativen Privilegien überschrieben oder durch spezifische PowerShell-Flags umgangen werden.
  • Ihr Hauptzweck ist es, versehentliche Ausführungen zu verhindern, nicht um bösartige Akteure mit absichtlichen Absichten zu stoppen.

PowerShell-Ausführungsrichtlinien sollten als Teil einer umfassenderen Sicherheitsstrategie verwendet werden, einschließlich signierter Skripte, sicherer Repositories und anderer Schutzmaßnahmen.

Netwrix Auditor for Windows File Servers

Vereinfachen Sie den Prozess der Überwachung neuer Dateien mit Netwrix Auditor for Windows File Server

Erfahren Sie mehr

Verständnis der PowerShell-Ausführungsrichtlinien

Beginnen wir damit, wie Ausführungsrichtlinien in der Praxis funktionieren. Wenn Sie ein Skript ausführen, überprüft PowerShell die Ausführungsrichtlinie.

  • Wenn das Skript den Anforderungen entspricht, wie zum Beispiel von einem vertrauenswürdigen Herausgeber signiert oder lokal bezogen ist, wird es ausgeführt.
  • Wenn das Skript nicht den Anforderungen der Richtlinie entspricht, verhindert PowerShell dessen Ausführung und zeigt eine Fehlermeldung an.

Wesentliche Vorteile

Einige wichtige Vorteile von PowerShell-Ausführungsrichtlinien sind:

  • Verhindert versehentliche Ausführung bösartiger Skripte – Ausführungsrichtlinien verringern das Risiko, unbeabsichtigt nicht vertrauenswürdige oder schädliche Skripte auszuführen, insbesondere solche, die aus dem Internet heruntergeladen wurden.
  • Fördert sichere Skript-Praktiken – Richtlinien wie AllSigned und RemoteSigned ermutigen Skript-Autoren und Benutzer dazu, Skripte mit vertrauenswürdigen Zertifikaten zu signieren, um Authentizität und Integrität zu gewährleisten.
  • Unterscheiden Sie lokale von Remote-Skripten – Richtlinien wie RemoteSigned ermöglichen es, lokal erstellte Skripte ohne Einschränkungen auszuführen, während strengere Kontrollen für remote heruntergeladene Skripte durchgesetzt werden.
  • Flexible Konfiguration – Ausführungsrichtlinien können auf verschiedenen Ebenen angewendet werden (Process, CurrentUser, LocalMachine, MachinePolicy und UserPolicy), was Administratoren die Kontrolle darüber gibt, wie und wo Richtlinien durchgesetzt werden.
  • Temporäre Überschreibungen für Flexibilität – Temporäre Überschreibungen (zum Beispiel die Verwendung von -ExecutionPolicy Bypass) ermöglichen das Ausführen von Skripten in kontrollierten Szenarien, ohne die Sicherheitseinstellungen des Systems dauerhaft zu ändern.
  • Fördert die organisatorische Compliance – Ausführungsrichtlinien können über Gruppenrichtlinien in einer Organisation durchgesetzt werden, um konsistente Sicherheitspraktiken für die Skriptausführung zu gewährleisten.
  • Fördert das Bewusstsein für Skriptsicherheit – Durch das Erfordern expliziter Aktionen, wie das Signieren von Skripten oder das Umgehen von Richtlinien, regen Ausführungsrichtlinien die Benutzer dazu an, kritisch über die Quellen und Vertrauenswürdigkeit von Skripten nachzudenken.

Wesentliche Einschränkungen

Einige wichtige Einschränkungen von PowerShell-Ausführungsrichtlinien sind:

  • Ausführungsrichtlinien sind keine Sicherheitsgrenze, da sie nicht dazu konzipiert sind, vorsätzliche Angriffe zu verhindern. Ein sachkundiger Benutzer mit administrativen Privilegien kann sie leicht umgehen, indem er:
  • Verwendung des -ExecutionPolicy Bypass-Flags
  • Ändern der Systemregistrierung
  • Skripte innerhalb eines anderen Prozesses ausführen oder PowerShell komplett umgehen
  • Ausführungsrichtlinien analysieren nicht den Inhalt von Skripten. Selbst signierte Skripte können bösartigen Code enthalten, wenn der Signaturschlüssel kompromittiert ist.
  • Ausführungsrichtlinien haben einen begrenzten Schutzbereich, da sie nur für PowerShell-Skripte und -Befehle gelten. Sie kontrollieren keine anderen Skripttypen (zum Beispiel VBScript, Python) oder ausführbare Dateien, was Schutzlücken hinterlässt.
  • Strikte Richtlinien wie AllSigned können Verzögerungen verursachen, wenn Benutzern der Zugang zu einer vertrauenswürdigen Signaturinfrastruktur fehlt oder sie häufig mit nicht signierten Skripten arbeiten.
  • Ausführungsrichtlinien setzen voraus, dass Benutzer sich an sie halten. Untrainierte Benutzer könnten Ausführungsrichtlinien umgehen oder sie abschalten, ohne die Konsequenzen vollständig zu verstehen.
  • Mehrere Richtlinienbereiche, wie MachinePolicy, UserPolicy und Process, können Verwirrung stiften, insbesondere in Umgebungen mit gemischten oder überlappenden Konfigurationen.
  • Automatisierte Skripte oder CI/CD-Pipelines können aufgrund restriktiver Richtlinien auf Probleme stoßen, was zusätzliche Konfigurationen oder temporäre Richtlinienüberschreibungen erforderlich macht.
  • Ausführungsrichtlinien können ein trügerisches Sicherheitsgefühl erzeugen. Administratoren und Benutzer könnten fälschlicherweise annehmen, dass es sich um einen robusten Sicherheitsmechanismus handelt, während sie hauptsächlich ein Schutz gegen versehentliche Skriptausführung sind.

Die folgende Tabelle fasst die wichtigsten Vorteile und Einschränkungen von PowerShell-Ausführungsrichtlinien zusammen.

Kontrolle der Skriptausführung

Verhindert die versehentliche Ausführung schädlicher Skripte

Leicht zu umgehen von Benutzern mit administrativen Privilegien

Quellenvalidierung

Fördert das Signieren von Skripten und vertrauenswürdige Quellen

Überprüft Skriptinhalte nicht auf bösartiges Verhalten

Organisatorische Nutzung

Unterstützt eine konsistente Durchsetzung durch Gruppenrichtlinien

Kann die Produktivität in Umgebungen mit nicht signierten Skripten beeinträchtigen

Flexibilität

Ermöglicht eingeschränkte Konfigurationen und temporäre Überschreibungen

Mehrere Bereiche können für das Policy-Management verwirrend sein

Sicherheitsbereich

Fügt einer Sicherheitsstrategie eine Verteidigungsebene hinzu

Beschränkt auf PowerShell-Skripte, andere Tools bleiben ungeschützt

Arten von PowerShell-Ausführungsrichtlinien

PowerShell bietet sechs Arten von Ausführungsrichtlinien.

Eingeschränkt

Dies ist die standardmäßige Ausführungsrichtlinie auf Windows-Systemen. Sie blockiert die Ausführung aller Skripte, sodass Administratoren Aufgaben nicht mithilfe von Skripten automatisieren können. Unter dieser Richtlinie können nur einzelne Befehle interaktiv ausgeführt werden.

Da diese Richtlinie maximale Einschränkungen bei der Skriptausführung gewährleistet, ist sie ideal für Umgebungen, in denen Skripte nicht benötigt werden.

RemoteSigned

Dies ist die Standardausführungsrichtlinie für Windows-Server. Die Richtlinie erfordert, dass entfernte Skripte, wie solche, die aus dem Internet heruntergeladen werden, von einem vertrauenswürdigen Herausgeber signiert sein müssen. Auf dem lokalen Computer geschriebene Skripte müssen nicht signiert werden. Insgesamt bietet diese Richtlinie eine Balance zwischen Sicherheit und Bequemlichkeit, obwohl sie in einigen Szenarien Unannehmlichkeiten verursachen kann.

Um ein nicht signiertes Skript aus dem Internet auszuführen, müssen Sie es entsperren, beispielsweise mit dem Cmdlet Unblock-File.

AllSigned

Diese Richtlinie basiert auf vertrauenswürdigen Zertifikaten und Zertifikatsinfrastruktur. Darunter können nur die Skripte und Konfigurationsdateien ausgeführt werden, die von einem vertrauenswürdigen Herausgeber signiert wurden. Nicht signierte oder manipulierte Skripte können nicht ausgeführt werden. Außerdem wird der Benutzer vor dem Ausführen eines Skripts, auch wenn es signiert ist, um Bestätigung gebeten.

Diese Richtlinie eignet sich am besten für Umgebungen, die großen Wert auf Skriptintegrität und Authentifizierung legen.

Unbeschränkt

Diese Richtlinie erlaubt das Ausführen aller Skripte ohne Einschränkungen, obwohl Warnungen für nicht signierte Remote-Skripte vor der Ausführung angezeigt werden. Es ist die Standardausführungsrichtlinie für Nicht-Windows-Computer und kann nicht geändert werden.

Da diese Richtlinie das Risiko erhöht, schädliche oder gefährliche Skripte auszuführen, sollte sie auf Entwicklungs- oder Testumgebungen beschränkt werden, in denen Flexibilität gegenüber Sicherheit priorisiert wird.

Umgehen

Diese Richtlinie erlaubt es Skripten, ohne Warnungen oder Aufforderungen frei zu laufen. Verwenden Sie diese Option in Automatisierungsszenarien, CI/CD-Pipelines oder wenn Ausführungsrichtlinien legitime Arbeitsabläufe stören. Beachten Sie, dass ohne Schutz oder Einschränkungen das Risiko einer versehentlichen oder bösartigen Skriptausführung vervielfacht werden kann.

Nicht definiert

Wenn Sie diese Option verwenden, wird die Ausführungsrichtlinie für den aktuellen Bereich entfernt. Wenn alle Bereiche nicht definiert sind, ist die wirksame Richtlinie standardmäßig auf Restricted für Windows-Clients und RemoteSigned für Windows Server eingestellt. Sie dient dazu, die Ausführungsrichtlinieneinstellungen für einen Bereich zu löschen.

Umfang der PowerShell-Ausführungsrichtlinien

PowerShell-Ausführungsrichtlinien können auf verschiedene Bereiche angewendet werden, die bestimmen, wie und wo die Richtlinie durchgesetzt wird. Bereiche ermöglichen es Administratoren, das Skriptausführungsverhalten auf verschiedenen Ebenen zu steuern, wie zum Beispiel für einzelne Benutzer, alle Benutzer auf einem Computer oder eine einzelne Sitzung. Die verschiedenen Bereiche werden unten diskutiert.

MachinePolicy

Durch eine Gruppenrichtlinie für alle Benutzer des Computers festgelegt. Diese Richtlinie hat Vorrang vor LocalMachine und CurrentUser. Um diese Richtlinie zu überschreiben, entfernen Sie die Group Policy setting. Sie wird für das zentralisierte Management von Skriptausführungsrichtlinien für alle Benutzer auf einem Computer verwendet.

UserPolicy

Durch eine Gruppenrichtlinie für den aktuellen Benutzer des Computers festgelegt. Diese Richtlinie hat Vorrang vor LocalMachine und CurrentUser. Sie wird für das zentralisierte Management einzelner Benutzer in einer Domänenumgebung verwendet. Wie MachinePolicy kann auch diese Richtlinie nicht lokal überschrieben werden.

Prozess

Gilt nur für die aktuelle PowerShell-Sitzung. Die Richtlinie wird in der Umgebungsvariablen $env:PSExecutionPolicyPreference gespeichert. Wenn die PowerShell-Sitzung geschlossen wird, werden die Variable und der Wert gelöscht. Daher ist die Richtlinie temporär und endet mit dem Schließen der Sitzung. Sie ist nützlich für Tests oder um die Systemrichtlinie vorübergehend ohne dauerhafte Änderungen zu überschreiben.

Aktueller Benutzer

Gilt nur für den aktuell angemeldeten Benutzer. Diese Richtlinie wird in der CurrentUser-Konfigurationsdatei gespeichert. Sie dient dazu, eine Richtlinie für einzelne Benutzer festzulegen, ohne andere Benutzer auf demselben Computer zu beeinträchtigen.

LocalMachine

Gilt für alle Benutzer auf dem Computer. Diese Richtlinie wird in der AllUsers-Konfigurationsdatei gespeichert. Dies ist der Standardbereich, wenn kein Bereich angegeben ist. Verwenden Sie es für organisationsweite Richtlinien auf gemeinsam genutzten Maschinen oder wenn mehrere Benutzer dieselbe Richtlinie benötigen.

Ausführungsrichtlinien für den aktuellen Benutzer und den lokalen Computer werden in den PowerShell-Konfigurationsdateien gespeichert. Die Ausführungsrichtlinie für eine bestimmte Sitzung wird nur im Speicher abgelegt und geht verloren, wenn die Sitzung geschlossen wird.

Geltungsbereich Priorität

Wenn mehrere Ausführungsrichtlinien auf verschiedenen Ebenen definiert sind, verwendet PowerShell die folgende Prioritätenreihenfolge, um zu bestimmen, welche Richtlinie wirksam ist (von der höchsten bis zur niedrigsten Priorität):

  1. Gruppenrichtlinie: MachinePolicy
  2. Gruppenrichtlinie: UserPolicy
  3. Ausführungsrichtlinie: Prozess
  4. Ausführungsrichtlinie: LocalMachine
  5. Ausführungsrichtlinie: CurrentUser

Denken Sie an Folgendes:

  • Gruppenrichtlinieneinstellungen (MachinePolicy und UserPolicy) überschreiben lokale Konfigurationen.
  • Wenn kein Geltungsbereich angegeben wird, wenn eine Ausführungsrichtlinie festgelegt wird, wird standardmäßig LocalMachine verwendet.
  • Wenn eine Gruppenrichtlinie vorhanden ist, schlagen Versuche, die Richtlinie mit Set-ExecutionPolicy auf niedrigeren Ebenen zu ändern, fehl.

Einstellen von PowerShell-Ausführungsrichtlinien

Das Festlegen einer PowerShell-Ausführungsrichtlinie bestimmt, wie Skripte auf einem System ausgeführt werden.

Überprüfen Sie die aktuelle Ausführungsrichtlinie

Verwenden Sie das folgende Cmdlet, um die aktuelle Ausführungsrichtlinie zu überprüfen:

      Get-ExecutionPolicy
      
Image

Überprüfen Sie Richtlinien für alle Bereiche

Verwenden Sie das folgende Cmdlet, um die Richtlinien für alle Bereiche zu überprüfen:

      Get-ExecutionPolicy -List
      
Image

Legen Sie eine Ausführungsrichtlinie fest

Verwenden Sie das Cmdlet Set-ExecutionPolicy, um eine Ausführungsrichtlinie für PowerShell festzulegen.

Befehlssyntax

      Set-ExecutionPolicy <PolicyName> -Scope <Scope>
      

Beispiel 1 – Eine Ausführungsrichtlinie festlegen

Verwenden Sie das folgende Cmdlet, um die Richtlinie auf Unrestricted zu setzen.

      Set-ExecutionPolicy Unrestricted
      
Image

Drücken Sie Y zum Fortfahren oder L um die Aktion abzubrechen.

Beispiel 2 – Den Geltungsbereich der Ausführungsrichtlinie festlegen

Sie können die Richtlinie auf verschiedenen Ebenen (Scopes) festlegen. Verwenden Sie das folgende Cmdlet, um die Richtlinie auf RemoteSigned für den lokalen Computer zu setzen:

      Set-ExecutionPolicy RemoteSigned -Scope LocalMachine
      

Beachten Sie Folgendes:

  • Sie müssen PowerShell als Administrator ausführen, um Ausführungsrichtlinien für den Geltungsbereich LocalMachine festzulegen.
  • Wenn eine Richtlinie durch Gruppenrichtlinie (MachinePolicy oder UserPolicy) erzwungen wird, überschreibt sie andere Einstellungen und der Versuch, die Richtlinie zu ändern, führt zu einem Fehler.

Wenden Sie die Ausführungsrichtlinie von einem entfernten Computer auf einen lokalen Computer an

Um eine PowerShell-Ausführungsrichtlinie von einem entfernten Computer auf einen lokalen Computer anzuwenden, können Sie eine Kombination aus PowerShell-Remoting und dem Set-ExecutionPolicy-Cmdlet verwenden. Es gestaltet sich wie folgt:

      Invoke-Command -ComputerName TargetComputer -ScriptBlock {

    Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Force

} -Credential (Get-Credential)
      

Hier gibt -ComputerName den Zielcomputer an. -ScriptBlock enthält den auszuführenden Befehl (in diesem Fall Set-ExecutionPolicy). -Credential ermöglicht es Ihnen, Anmeldeinformationen anzugeben, falls das aktuelle Konto keine Berechtigungen auf dem Zielcomputer hat.

Erzwingen Sie die Richtlinieneinstellung

Um Aufforderungen bei der Ausführung von Richtlinienänderungen zu umgehen, verwenden Sie den -Force Parameter.

      Set-ExecutionPolicy RemoteSigned -Force
      

Entfernen einer Ausführungsrichtlinie

Um eine Richtlinie für einen bestimmten Bereich zu entfernen, setzen Sie die Richtlinie auf Undefined.

      Set-ExecutionPolicy Undefined -Scope CurrentUser
      

Wenn alle Bereiche auf Undefined gesetzt sind, wird die Standardrichtlinie Restricted.

Vorübergehend die PowerShell-Ausführungsrichtlinien umgehen

Sie können Ausführungsrichtlinien in PowerShell vorübergehend umgehen, wenn Sie ein Skript ausführen, ohne die Richtlinie dauerhaft zu ändern. Das Umgehen von Ausführungsrichtlinien kann jedoch Ihr System Sicherheitsrisiken aussetzen. Stellen Sie sicher, dass die Skripte, die Sie ausführen, aus vertrauenswürdigen Quellen stammen.

Beachten Sie auch, dass für einige Befehle administrative Privilegien erforderlich sein können.

Beispiel 1: Umgehen der Ausführungsrichtlinie für ein einzelnes Skript

Dieser Befehl umgeht die Ausführungsrichtlinie für diesen spezifischen Aufruf von PowerShell.

      powershell.exe -ExecutionPolicy Bypass -File "C:\Temp\Script.ps1"
      

Beispiel 2: Umgehung in der aktuellen Sitzung

Sie können die Ausführungsrichtlinie vorübergehend für die Dauer der aktuellen Sitzung ändern.

      Set-ExecutionPolicy -Scope Process -ExecutionPolicy Bypass
      

Hier stellt -Scope Process sicher, dass die Änderung auf die aktuelle PowerShell-Sitzung beschränkt ist. Wenn Sie die Sitzung schließen, wird die Ausführungsrichtlinie auf ihre ursprüngliche Einstellung zurückgesetzt.

Beispiel 3: Skripte ausführen, ohne die Richtlinie zu ändern

Verwenden Sie den -Command Parameter, um das Skript direkt inline auszuführen.

powershell.exe -ExecutionPolicy Bypass -Command “& { . ‘C:\Temp\Script.ps1’ }”

Verwenden Sie Gruppenrichtlinien, um die Ausführungsrichtlinie zu verwalten

Die Turn on Script Execution Gruppenrichtlinieneinstellung ermöglicht es Ihnen, die Ausführungsrichtlinie von Computern in Ihrem Unternehmen zu verwalten. Die Gruppenrichtlinieneinstellung setzt sich über die in PowerShell in allen Bereichen festgelegten Ausführungsrichtlinien hinweg.

  • Wenn Turn on Script Execution deaktiviert ist, werden Skripte nicht ausgeführt. Dies entspricht der Restricted-Ausführungsrichtlinie.
  • Sie können die Option Turn on Script Execution aktivieren und eine Ausführungsrichtlinie auswählen.
  • Wenn 'Turn on Script Execution' nicht konfiguriert ist, hat es keine Auswirkung. Die in PowerShell festgelegte Ausführungsrichtlinie ist wirksam.

Verwalten von signierten und nicht signierten Skripten

Ein signiertes Skript ist ein PowerShell-Skript, das Folgendes enthält:

  • Der Skriptinhalt
  • Eine digitale Signatur von einer vertrauenswürdigen Zertifizierungsstelle (CA) oder ein selbstsigniertes Zertifikat

Dies stellt sicher, dass Skripte aus einer vertrauenswürdigen Quelle stammen und dass sie nach der Signierung nicht verändert wurden. Signierte Skripte tragen zur Erhöhung der Sicherheit in Umgebungen bei, die eine Kontrolle darüber erfordern, welche Skripte ausgeführt werden können.

Die folgenden Ausführungsrichtlinien beziehen sich auf signierte Skripte:

  • AllSigned – Erfordert, dass alle Skripte und Konfigurationsdateien von einem vertrauenswürdigen Herausgeber signiert sein müssen.
  • RemoteSigned – Erfordert, dass Skripte aus dem Internet von einem vertrauenswürdigen Herausgeber signiert sein müssen. Lokale Skripte müssen nicht signiert sein.

Ein Skript signieren

Um ein Skript zu signieren, benötigen Sie ein Code-Signaturzertifikat.

  • Sie können ein Zertifikat von einer Zertifizierungsstelle (CA) erhalten oder ein selbstsigniertes Zertifikat mit dem Cmdlet New-SelfSignedCertificate erstellen.
  • Verwenden Sie das Set-AuthenticodeSignature-Cmdlet, um das Skript zu signieren.

Hier ist, wie Sie das Skript signieren können.

      $cert = Get-Item Cert:\CurrentUser\My\CERT_THUMBPRINT
      
      Set-AuthenticodeSignature -FilePath "C:\Temp\Script.ps1" -Certificate $cert
      

Ersetzen Sie CERT_THUMBPRINT durch den tatsächlichen Fingerabdruck Ihres Zertifikats.

Status der Skriptsignatur anzeigen

Um zu überprüfen, ob ein Skript signiert ist und den Status der Signatur zu sehen, verwenden Sie:

      Get-AuthenticodeSignature -FilePath "C:\Temp\Script.ps1"
      

Verwalten von nicht vertrauenswürdigen oder nicht signierten Skripten

Um Berechtigungen für Skripte zu verwalten, ohne Richtlinien vollständig zu umgehen, sollten Sie Folgendes in Betracht ziehen:

  • Wenn ein Skript als 'aus dem Internet' gekennzeichnet ist, geben Sie es frei.
  • Wenn Sie signierte Skripte eines Herausgebers zum ersten Mal ausführen, müssen Sie möglicherweise das Herausgeberzertifikat genehmigen. Sie können es mithilfe der Zertifikatsverwaltungstools als vertrauenswürdig hinzufügen.

Beispiel: Ein Skript freigeben

Manchmal kann ein Skript blockiert sein, weil es aus dem Internet heruntergeladen wurde. Verwenden Sie das Cmdlet Unblock-File, um es zu entsperren, ohne die Ausführungsrichtlinien zu umgehen.

      Unblock-File -Path "C:\Temp\Script.ps1"
      

Skriptberechtigungen verwalten

Das Verwalten von Skriptberechtigungen in PowerShell umfasst die Kontrolle darüber, welche Skripte ausgeführt werden können und von wem. Dies beinhaltet das Konfigurieren von Ausführungsrichtlinien, das Nutzen von Dateiberechtigungen und die Verwendung von Code-Signierungspraktiken.

Skriptausführung mit PowerShell Execution Policies steuern

Ausführungsrichtlinien beschränken die Bedingungen, unter denen Skripte ausgeführt werden können. Verschiedene Richtlinien wenden unterschiedliche Beschränkungen an. Zum Beispiel können unter der Richtlinie „Restricted“ keine Skripte ausgeführt werden.

Verwenden Sie Code Signing für Skripte

Das Signieren von Skripten stellt sicher, dass nur vertrauenswürdige Skripte in Umgebungen mit strengen Richtlinien ausgeführt werden können.

Verwenden Sie NTFS-Dateiberechtigungen

Beschränken Sie den Zugriff auf Skriptdateien, indem Sie Datei- oder Ordnerberechtigungen ändern. Hier erfahren Sie, wie Sie Berechtigungen erteilen oder verweigern können.

  1. Klicken Sie mit der rechten Maustaste auf die Skriptdatei oder den Ordner und wählen Sie Eigenschaften.
  2. Gehen Sie zum Sicherheits-Tab und klicken Sie auf Bearbeiten.
  3. Benutzer oder Gruppen hinzufügen oder entfernen und die entsprechenden Berechtigungen zuweisen (z. B. Lesen, Schreiben, Ausführen).
  4. Verweigern Sie unberechtigten Benutzern die Berechtigungen, um Ausführung oder Änderungen zu verhindern.

Berechtigungen mit Gruppenrichtlinien steuern

Gruppenrichtlinien können Skriptberechtigungen und Ausführungsrichtlinien über mehrere Systeme hinweg durchsetzen. Um eine Gruppenrichtlinie zu konfigurieren:

  1. Öffnen Sie die Group Policy Management-Konsole (GPMC).
  2. Navigieren Sie zu Computereinstellungen > Administrative Vorlagen > Windows-Komponenten > Windows PowerShell.
  3. Legen Sie die gewünschte Ausführungsrichtlinie mit der Richtlinie „Turn on Script Execution“ fest.

Sichern Sie Skripte aus Internetquellen

Skripte, die aus dem Internet heruntergeladen wurden, sind als unsicher gekennzeichnet. Öffnen Sie das Skript in einem Texteditor, um es auf Sicherheit zu überprüfen, bevor Sie es ausführen.

Best Practices für die Festlegung von Ausführungsrichtlinien

Das korrekte Festlegen von PowerShell-Ausführungsrichtlinien ist wesentlich, um Sicherheit und Funktionalität auszubalancieren. Aus Sicherheitssicht müssen Sie verstehen, dass Ausführungsrichtlinien keine robuste Sicherheitsgrenze darstellen, sondern ein Werkzeug sind, um versehentliche Skriptausführungen zu verhindern. Sie sollten zusammen mit anderen Sicherheitsmaßnahmen wie Zugriffskontrollen, Skriptsignierung und Endpunktschutz verwendet werden. In Unternehmensumgebungen sollten konsistente Richtlinien durch Gruppenrichtlinien durchgesetzt und Benutzer über bewährte Verfahren aufgeklärt werden, um Risiken zu minimieren.

Nachfolgend sind einige bewährte Methoden zur Konfiguration von Ausführungsrichtlinien aufgeführt, die Sicherheit mit Funktionalität in Einklang bringen.

Verwenden Sie die am wenigsten permissive Richtlinie

Sie sollten die Ausführungsrichtlinien Restricted oder AllSigned immer dann anwenden, wenn es möglich ist, um strengere Kontrollen durchzusetzen. RemoteSigned ist eine praktische Wahl für Umgebungen, die etwas Flexibilität benötigen, aber dennoch vor externen Bedrohungen geschützt werden müssen.

Vermeiden Sie die dauerhafte Verwendung von Bypass

Verwenden Sie die Bypass-Ausführungsrichtlinie nur in spezifischen Automatisierungs- oder Fehlerbehebungsszenarien. Kehren Sie nach Abschluss der Aufgabe zu einer strengeren Richtlinie zurück.

Verwenden Sie die digitale Signatur

Signieren Sie Skripte mit einer vertrauenswürdigen Zertifizierungsstelle (CA), um Integrität und Authentizität zu gewährleisten. Sie müssen auch Skriptentwickler dazu ermutigen, ihre Skripte zu signieren, insbesondere für die Verwendung mit der AllSigned-Richtlinie.

Implementieren Sie Monitoring und Logging

Aktivieren Sie die Protokollierung für PowerShell-Aktivitäten (zum Beispiel Skriptblockprotokollierung, Modulprotokollierung und Transkription), um verdächtige Aktivitäten zu erkennen und darauf zu reagieren.

Verwenden Sie das folgende Cmdlet, um die Modulprotokollierung zu aktivieren:

      Set-ItemProperty -Path "HKLM:\SOFTWARE\Policies\Microsoft\Windows\PowerShell\ModuleLogging" -Name EnableModuleLogging -Value 1
      

Protokolle können im Ereignisanzeiger unter Anwendungs- und Dienstprotokolle > Microsoft > Windows > PowerShell eingesehen werden.

Sie können auch Tools wie Microsoft Defender for Endpoint oder SIEM Lösungen zur Überwachung von Protokollen verwenden.

Testen Sie Richtlinien in einer Nicht-Produktionsumgebung

Um Überraschungen zu vermeiden, testen Sie Ausführungsrichtlinien in einer kontrollierten Umgebung, bevor Sie sie unternehmensweit bereitstellen.
So stellen Sie außerdem sicher, dass legitime Skripte und Automatisierungsabläufe nicht unterbrochen werden.

Verwenden Sie bedingte Richtlinienänderungen

Um Workflows zu verwalten, die Flexibilität erfordern, ändern Sie die Richtlinien vorübergehend mit dem -Scope Process-Parameter. Das Cmdlet lautet wie folgt:

      Set-ExecutionPolicy -ExecutionPolicy Bypass -Scope Process
      

Berücksichtigen Sie die Umwelt bei der Anwendung der Richtlinie

Die empfohlenen PowerShell-Ausführungsrichtlinien variieren je nach Umgebung.

  • Entwicklungsumgebung – RemoteSigned bleibt die empfohlene Richtlinie. Sie ermöglicht Entwicklern die Flexibilität, lokale Skripte ohne Signierung auszuführen und stellt sicher, dass heruntergeladene Skripte aus dem Internet signiert und vertrauenswürdig sind. Sie sollten auch die Protokollierung von Skriptblöcken aktivieren, um die Skriptausführung zu überwachen.
  • Test-/Staging-Umgebung – Verwenden Sie die RemoteSigned- oder AllSigned-Richtlinie. RemoteSigned ist praktisch für das Testen einer Mischung aus lokalen und externen Skripten mit grundlegenden Integritätsprüfungen, während AllSigned eine strengere Kontrolle durchsetzt, indem es verlangt, dass alle Skripte signiert sein müssen.
  • Produktionsumgebung – Verwenden Sie die AllSigned- oder Restricted-Richtlinie. AllSigned stellt sicher, dass nur Skripte von einem vertrauenswürdigen Herausgeber ausgeführt werden. Restricted ist jedoch die sicherste Option für Umgebungen, die nicht auf PowerShell-Skripte angewiesen sind. Sie sollten auch Richtlinien über Gruppenrichtlinien durchsetzen, um Konsistenz über Systeme hinweg zu gewährleisten.
  • Automatisierungsumgebung – Bypass ist die empfohlene Richtlinie (nur für bestimmte Aufgaben). Sie ermöglicht es Automatisierungsaufgaben ohne Unterbrechung auszuführen, insbesondere wenn Richtlinien durch andere Mechanismen verwaltet werden, wie Anwendungs-Whitelisting und DevOps-Pipelines. Sie müssen auch die Automatisierungsumgebung mit angemessenen Zugriffskontrollen und regelmäßigen Audits absichern.
  • Hochsichere Umgebungen – Die Restricted-Richtlinie sollte Ihre Wahl sein, da sie die Ausführung jeglicher Skripte verhindert.

Fehlerbehebung bei Ausführungsrichtlinienfehlern

Im Folgenden finden Sie häufige Fehler im Zusammenhang mit PowerShell-Ausführungsrichtlinien und deren Lösungen.

„Die Ausführung von Skripten ist auf diesem System deaktiviert“

Es kann eine Fehlermeldung erscheinen wie:

Die Datei C:\Temp\Script.ps1 kann nicht geladen werden, da das Ausführen von Skripten auf diesem System deaktiviert ist.

Ursache: Die Ausführungsrichtlinie ist auf Restricted oder Undefined gesetzt, was verhindert, dass Skripte ausgeführt werden.

Lösung: Überprüfen Sie die aktuelle Richtlinie und ändern Sie sie vorübergehend für die spezifische Sitzung. Alternativ können Sie die Richtlinie für den aktuellen Benutzer oder Computer ändern:

Um die Richtlinie für die aktuelle Sitzung zu ändern, verwenden Sie das folgende Cmdlet:

      Set-ExecutionPolicy -Scope Process -ExecutionPolicy Bypass
      

Um die Richtlinie für den aktuellen Benutzer oder Computer zu ändern, verwenden Sie das folgende Cmdlet:

      Set-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy RemoteSigned
      

„Kann nicht geladen werden, da das Skript nicht digital signiert ist“

Sie könnten eine Fehlermeldung erhalten wie:

Die Datei C:\Temp\Script.ps1 kann nicht geladen werden. Die Datei ist nicht digital signiert.

Ursache: Die Ausführungsrichtlinie ist auf AllSigned oder RemoteSigned eingestellt, was erfordert, dass Skripte signiert sein müssen.

Lösung: Verwenden Sie RemoteSigned statt AllSigned, wenn Sie lokalen Skripten vertrauen. Oder Sie können die Richtlinie vorübergehend umgehen.

„Zugriff auf den Registrierungsschlüssel verweigert“

Es kann eine Fehlermeldung erscheinen wie:

Set-ExecutionPolicy: Zugriff auf den Registrierungsschlüssel wurde verweigert.

Ursache: Ihnen fehlen die notwendigen Berechtigungen, um die Ausführungsrichtlinie im LocalMachine-Bereich zu ändern.

Lösung: Führen Sie PowerShell als Administrator aus oder setzen Sie die Richtlinie für den aktuellen Benutzer mit folgendem Cmdlet:

      Set-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy RemoteSigned
      

Konflikte bei Ausführungsrichtlinien zwischen Bereichen

Verschiedene Bereiche (MachinePolicy, UserPolicy, Process, CurrentUser, LocalMachine) weisen widersprüchliche Richtlinien auf.

Ursache: Eine strengere Richtlinie auf einer höheren Ebene (wie MachinePolicy) setzt eine permissivere Richtlinie auf einer niedrigeren Ebene (wie LocalMachine) außer Kraft.

Lösung: Überprüfen Sie die Richtlinien für alle Bereiche mit folgendem Cmdlet:

      Get-ExecutionPolicy -List
      

Sobald Sie diese Informationen haben, können Sie die Richtlinie im entsprechenden Bereich ändern oder Skripte in einer Sitzung mit einer weniger restriktiven Richtlinie ausführen.

„Die Ausführungsrichtlinie kann nicht geändert werden, da sie durch ein Gruppenrichtlinienobjekt (GPO) gesteuert wird“

Dieses Problem tritt auf, wenn die Ausführungsrichtlinie durch Gruppenrichtlinien erzwungen wird, was lokale Änderungen verhindert.

Lösung: Konsultieren Sie Ihren Systemadministrator, um die Gruppenrichtlinie zu ändern. Für eine schnelle Lösung können Sie die Richtlinie jedoch vorübergehend umgehen.

„Policy scope not recognized“

Es kann eine Fehlermeldung erscheinen wie:

Set-ExecutionPolicy: Der angegebene Bereich wird nicht erkannt.

Ursache: Ein Tippfehler im Bereichsnamen.

Lösung: Stellen Sie sicher, dass der Umfang korrekt als einer dieser festgelegt ist.

Unerwartetes Verhalten in verschiedenen PowerShell-Versionen

Ältere PowerShell-Versionen, wie 2.0, behandeln Ausführungsrichtlinien anders oder verfügen nicht über bestimmte Funktionen.

Lösung: Aktualisieren Sie auf die neueste Version von PowerShell.

Als blockiert markierte Skripte

Sie könnten eine Fehlermeldung erhalten wie:

Die Datei kann nicht geladen werden. Die Datei ist nicht digital signiert oder wurde aus dem Internet heruntergeladen und ist blockiert.

Ursache: Das Skript ist als blockiert markiert, weil es aus dem Internet heruntergeladen wurde.

Lösung: Entsperren Sie das Skript mit folgendem Cmdlet:

      Unblock-File -Path C:\Temp\Script.ps1
      

Fazit: Die richtige PowerShell-Ausführungsrichtlinie wählen

Sie müssen diese Faktoren berücksichtigen, wenn Sie eine effektive Ausführungsrichtlinie wählen.

  • Identifizieren Sie die Umgebung, bevor Sie eine Ausführungsrichtlinie wählen, da verschiedene Umgebungen unterschiedliche Richtlinien erfordern. Zum Beispiel ist für Produktionsserver AllSigned oder RemoteSigned am besten, um eine gewisse Ebene der Skriptverifizierung durchzusetzen.
  • Sie sollten auch Ihre Sicherheitsanforderungen bewerten und entsprechend entscheiden. Verwenden Sie beispielsweise AllSigned, wenn Sie über einen robusten Code-Signaturprozess verfügen und eine strenge Kontrolle über die Skriptausführung durchsetzen möchten. Oder verwenden Sie Restricted für Systeme, die keine Skripte ausführen sollten.
  • Bedenken Sie Ihre Automatisierungsanforderungen. Es wäre einfacher, die Bypass-Richtlinie in Umgebungen zu verwenden, in denen Skripte automatisch von vertrauenswürdigen Prozessen ausgeführt werden.
  • Abschließend bewerten Sie die Herkunft der Skripte. Wenn Skripte intern erstellt und vertrauenswürdig sind, bietet RemoteSigned eine Balance zwischen Benutzerfreundlichkeit und Sicherheit. Und wenn Skripte eine Mischung aus internen und externen sind, ziehen Sie AllSigned für erhöhte Sicherheit in Betracht.

FAQs

Was ist die Variable $env:psexecutionpolicypreference?

Die Umgebungsvariable $env:PSExecutionPolicyPreference wird in PowerShell verwendet, um die Ausführungsrichtlinie vorübergehend für eine einzelne Sitzung zu überschreiben, ohne die systemweiten oder benutzerspezifischen Ausführungsrichtlinien zu ändern. Wenn Sie die Sitzung schließen, geht die Änderung verloren.

Sie können $env:psexecutionpolicypreference auf folgende Weisen verwenden:

  • Weisen Sie einen Wert zu $env:PSExecutionPolicyPreference um die Ausführungsrichtlinie vorübergehend zu ändern, wie unten gezeigt:

$env:PSExecutionPolicyPreference = „Bypass“

Danach werden Skripte für die Dauer der Sitzung ohne Einschränkungen ausgeführt.

  • Überprüfen Sie den aktuellen Wert dieser Variablen, wie unten gezeigt:

$env:PSExecutionPolicyPreference

  • Entfernen Sie die temporäre Richtlinie und kehren Sie zum Standardverhalten zurück, wie unten gezeigt:

Remove-Item Env:PSExecutionPolicyPreference

Teilen auf

Erfahren Sie mehr

Über den Autor

Asset Not Found

Jonathan Blackwell

Leiter der Softwareentwicklung

Seit 2012 hat Jonathan Blackwell, ein Ingenieur und Innovator, eine führende Rolle in der Ingenieurskunst übernommen, die Netwrix GroupID an die Spitze des Gruppen- und Benutzermanagements für Active Directory und Azure AD Umgebungen gebracht hat. Seine Erfahrung in Entwicklung, Marketing und Vertrieb ermöglicht es Jonathan, den Identity-Markt und die Denkweise der Käufer vollständig zu verstehen.