IT

PowerShell-Script ausführen (auch als Administrator)

Die Aktivierung der PowerShell-Script-Ausführung ist aus Sicherheitsgründen standardmäßig deaktiviert. Dies soll verhindern, dass bösartige Skripte ohne Zustimmung des Benutzers auf einem System ausgeführt werden. Allerdings führt die Deaktivierung der Skriptausführung natürlich auch dazu, dass auch legitime und selbst geschriebene PowerShell-Scripte nicht ausgeführt werden. Daher ist es notwendig, die Ausführung von PowerShell-Scripten in bestimmten Situationen zu aktivieren. Wie man dies macht und wie man die PowerShell-Scripte ausführt, erfährst du in diesem Artikel.

 

Ausführung von PowerShell-Scripten erlauben

Es ist recht einfach alle PowerShell-Scripte zur Ausführung auf einem Computer zuzulassen. Hierzu muss man einfach nur folgenden Befehl als Administrator in einem PowerShell-Fenster absetzen und dann bestätigen:

Neben der Option „Unrestricted“, die wirklich alle PowerShell-Scripte zulässt, hat man auch die folgenden Optionen. Hier gibt es eine Erklärung zu allen Optionen:

  1. Unrestricted:
    • Bei dieser Ausführungsrichtlinie gibt es keine Einschränkungen für die Ausführung von PowerShell-Skripten. Das bedeutet, dass alle Skripte auf Ihrem System, einschließlich nicht signierter und aus Remote-Quellen stammender Skripte, ohne jede Überprüfung oder Genehmigung ausgeführt werden können.
    • „Unrestricted“ ist die laxeste Ausführungsrichtlinie und sollte äußerst vorsichtig verwendet werden. Sie öffnet das System für erhebliche Sicherheitsrisiken, da bösartige Skripte ohne Beschränkungen ausgeführt werden können. Es ist nicht ratsam, diese Richtlinie in sicherheitskritischen Umgebungen zu verwenden, es sei denn, Sie haben sehr strenge Sicherheitsmaßnahmen auf anderen Ebenen implementiert.
    • Die Verwendung von „Unrestricted“ sollte auf Situationen beschränkt sein, in denen Sie vollständige Kontrolle über die Skriptquelle und absolute Vertrauenswürdigkeit haben. Diese Option kann in Testumgebungen oder bei Entwicklungsarbeiten nützlich sein, sollte jedoch niemals in Produktionsumgebungen oder auf Systemen mit sensiblen Daten eingesetzt werden.
  2. RemoteSigned:
    • Bei dieser Richtlinie werden lokal erstellte Skripte ohne Signatur (also nicht signierte Skripte) zugelassen, während Skripte aus Remote-Quellen (zum Beispiel aus dem Internet) signiert sein müssen. Das bedeutet, dass selbst erstellte Skripte auf Ihrem Computer ohne Probleme ausgeführt werden können, während Sie sicherstellen müssen, dass Skripte aus unsicheren Quellen signiert sind.
    • Die entsprechende Anweisung für Set-ExecutionPolicy-CMDlet lautet: „Set-ExecutionPolicy RemoteSigned“
  3. AllSigned:
    • Bei dieser Richtlinie müssen alle Skripte, sowohl lokal erstellte als auch aus Remote-Quellen, digital signiert sein. Das bietet ein höheres Maß an Sicherheit, da garantiert ist, dass alle Skripte von vertrauenswürdigen Quellen stammen.
    • Die entsprechende Anweisung für Set-ExecutionPolicy-CMDlet lautet: „Set-ExecutionPolicy AllSigned“
  4. Restricted:
    • Dies ist die restriktivste Ausführungsrichtlinie. Mit dieser Richtlinie dürfen auf Ihrem System nur interaktive Befehle in der PowerShell-Konsole ausgeführt werden, während das Ausführen von Skripten untersagt ist.
    • Die entsprechende Anweisung für Set-ExecutionPolicy-CMDlet lautet: „Set-ExecutionPolicy Restricted“
  5. Default:
    • Die Standardrichtlinie ist „Restricted“. In diesem Modus können nur interaktive Befehle in der PowerShell-Konsole ausgeführt werden. Diese Einstellung bietet ein hohes Maß an Sicherheit, indem sie die Ausführung von Skripten standardmäßig blockiert.
    • Die entsprechende Anweisung für Set-ExecutionPolicy-CMDlet lautet: „Set-ExecutionPolicy Default“
  6. Bypass:
    • Bei dieser Richtlinie werden alle Skriptausführungsbeschränkungen aufgehoben. Das bedeutet, dass alle Skripte, einschließlich nicht signierter, auf Ihrem System ohne Einschränkungen ausgeführt werden können. Diese Richtlinie sollte mit Vorsicht verwendet werden, da sie die Sicherheit gefährden kann, insbesondere wenn unsignierte Skripte von unbekannten Quellen ausgeführt werden.
    • Die entsprechende Anweisung für Set-ExecutionPolicy-CMDlet lautet: „Set-ExecutionPolicy Bypass“
  7. Undefined:
    • Diese Option gibt an, dass keine explizite Ausführungsrichtlinie festgelegt ist. Das System kann in diesem Fall auf die Standardrichtlinie zurückgreifen, die normalerweise „Restricted“ ist. Im Prinzip ist diese Option eigentlich unsinnig.

Die Wahl der richtigen ExecutionPolicy hängt von Ihren Anforderungen und den Sicherheitsrichtlinien Ihres Systems ab. Wenn Sie die Skriptausführung aktivieren oder deaktivieren, sollten Sie sicherstellen, dass dies Ihren Sicherheitsanforderungen entspricht und dass Sie verstehen, wie die verschiedenen Optionen funktionieren, um potenzielle Sicherheitsrisiken zu minimieren.

Wenn man prüfen möchte, welche ExecutionPolicy auf dem System eingestellt ist, kann man dafür ein weiteres CMDlet nutzen. Hierzu gibt man einfach folgenden Befehl in einem PowerShell-Fenster ein:

In diesem Fall ist die konfigurierte ExecutionPolicy also „Unrestricted“.

 

PowerShell-Script ausführen über die Windows-Oberfläche

Wenn die Ausführung aller PowerShell-Scripte oder zumindest des gewünschten PowerShell-Scripts erlaubt ist, kann man einfach einen Rechtsklick auf das PowerShell-Script machen und im Kontextmenü auf „Mit PowerShell ausführen“ klicken.

Das PowerShell-Script wird dann nur ausgeführt, wenn die „ExecutionPolicy“ so gesetzt ist, dass das entsprechende PowerShell-Script auch ausgeführt werden darf.

 

PowerShell-Script ausführen in PowerShell-Konsole

In der PowerShell kann man einfach, wenn man sich im richtigen Ordner befindet, einen Punkt gefolgt von einem Slash und dem Scriptnamen angeben und mit „Enter“ bestätigen um das PowerShell-Script auszuführen:

Dies funktioniert zumindest dann, wenn die „ExecutionPolicy“ entsprechend konfiguriert ist.

 

PowerShell: Ausführung von Scripts, die auf diesem System deaktiviert sind!

Was ich bis vor einigen Jahren gar nicht wusste, ist, dass man aber auch ohne Admin-Rechte jegliche PowerShell-Scripte einfach ausführen kann! Wenn das PowerShell-Script aufgrund der konfigurierten Richtlinie nicht ausgeführt werden kann, so kann man diese über den Zusatz „-ExecutionPolicy“ und die gewünschte Policy nämlich einfach übergehen. Hierzu muss man nur das PowerShell-Script wie folgt aus einer CMD-Line oder PowerShell-Konsole aufrufen:

Der Grund, aus dem die Script-Ausführung trotzdem funktioniert, ist, dass die „ExecutionPolicy“ für jede PowerShell-Sitzung neu eingestellt werden kann und das von jedem Benutzer! Hiervon machte z. B. einer unserer Software-Anbieter Gebrauch, da mir aufgefallen ist, dass die PowerShell-Scripte trotz restriktiver „ExecutionPolicy“ ausgeführt wurden.

 

PowerShell-Script ausführen über CMD

Man kann PowerShell-Scripte auch aus der CMD-Line bzw. aus Batch-Dateien aufrufen. Hierzu muss man die „PowerShell.exe“ aufrufen und den Pfad zum PowerShell-Script und eventuell andere Parameter mit übergeben. Dies geht beispielsweise so:

Oder, wenn man die „ExecutionPolicy“ anpassen muss, dann z. B. so:

Achtung: Die Reihenfolge hier ist besonders wichtig und das auszuführende PowerShell-Script muss am Ende des Befehls stehen!

PowerShell-Script als Admin ausführen

Um ein PowerShell-Script mit Administratorrechten auszuführen, kann man entweder eine PowerShell-Konsole, eine CMD-Line oder ein Terminal-Fenster mit Administratorrechten öffnen. Dort ruft man das gewünschte PowerShell-Script dann mit den bereits gezeigten Befehlen zum Aufrufen eines PowerShell-Scripts auf.

PowerShell als Administrator öffnen:

  • Klicken Sie mit der rechten Maustaste auf das PowerShell-Symbol im Startmenü und wählen Sie „Als Administrator ausführen“. Dadurch erhalten Sie die erforderlichen Berechtigungen, um Systemeinstellungen zu ändern.

Wenn man das PowerShell-Script per Rechtsklick über die Windows-Oberfläche als Admin ausführen möchte, kann man dies leider nur erreichen indem man im auszuführenden PowerShell-Script als erste Zeile folgendes einfügt:

Dadurch holt sich die PowerShell bei der Ausführung des Scripts per Dialog die Erlaubnis ein, das Script mit Adminrechten zu starten. Nach einem Klick auf „Ja“ wird dann ein neues PowerShell-Fenster geöffnet.

 

PowerShell-Script in der Aufgabenplanung oder als Anmeldeskript ausführen

Insbesondere bei älteren Windows-Versionen, in denen die PowerShell nur ein Randprojekt war, gab es kleine bis große Hürden bei der Nutzung von PowerShell-Scripten in der Aufgabenplanung bzw. dem Task Scheduler von Windows. Ebenso musst man bei Anmeldeskripten für die Benutzeranmeldung in einer Windows-Domäne etwas kreativ werden, wenn man hier auf PowerShell-Scripte zurückgreifen möchte. Denn ein PowerShell-Script konnte hier oft nicht direkt ausgeführt werden. Hier hatte Microsoft in der Vergangenheit wohl nicht an die PowerShell gedacht! Dazu kann man aber natürlich einfach eine Batch-Datei als Container nutzen, welche dann wie in diesem Artikel gezeigt, das entsprechende PowerShell-Script aufruft.

Hierzu gibt es mehr Informationen in diesen beiden etwas älteren Artikeln zu Anmeldeskripten und einem PowerShell-Script für das Nachstarten von Windows-Diensten:

PowerShell-Skript als Benutzer-Anmeldeskript in einer Domäne nutzen?

Windows-Dienste starten und stoppen mit PowerShell und CMD

 

Macht die ExecutionPolicy für PowerShell-Scripte überhaupt Sinn?

Da ein Standard-Benutzer sowieso nicht weiß, was ein PowerShell-Script ist und dass man dieses per Kontextmenü ausführen kann, spricht meiner Meinung nach in vielen Fällen nicht unbedingt etwas dagegen die „ExecutionPolicy“ auf „Unrestricted“ zu setzen. Schützen kann sie ja sowieso nicht wirklich, wenn jeder Benutzer oder ein Schadprogramm, das im Benutzer-Kontext ausgeführt wird, sie durch den Zusatz „-ExecutionPolicy Unrestricted“ ganz einfach aushebeln kann. Das einzige, was dann wirklich schützt, wäre ein komplettes Deaktivieren von PowerShell-Scripten für bestimmte Benutzergruppen.

 

Tobias Langner

Tobias Langner

Ich arbeite seit mehreren Jahren als Software-Release-Manager, zuvor als IT-Administrator, bin ausgebildeter Fachinformatiker für Systemintegration und Studium-"Pausierer" an der FernUni Hagen. Achtung: Für die Richtigkeit der zur Verfügung gestellten Informationen, Skripte, etc. übernehme ich keine Gewähr. Deren Nutzung geschieht ausdrücklich auf eigene Gefahr!

Alle Beiträge ansehen von Tobias Langner →

Schreibe einen Kommentar

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