Wenn Sie mit der PowerShell-Skriptsprache noch nicht vertraut sind und lernen möchten, wie Sie ein PowerShell-Skript ausführen, sind Sie bei uns genau richtig Blog-Post. Dieser Blog wird ein Tutorial sein, das gängige Methoden zum Ausführen von Skripten und einige Probleme behandelt, die auftreten können.
Inhaltsverzeichnis
Voraussetzungen
In diesem Artikel erfahren Sie, wie Sie PowerShell auf Ihrem lokalen Computer ausführen. Wenn Sie folgen möchten, stellen Sie bitte sicher, dass Sie über die folgenden Voraussetzungen verfügen, bevor Sie mit diesem Artikel beginnen.
- Ein Windows 10-Computer mit Administratorrechten.
- Windows PowerShell Version 5 oder höher. Sie können auch PowerShell v7 verwenden. Dieses Tutorial konzentriert sich auf Windows PowerShell, da das Windows-Betriebssystem es bereits hat.
- Beliebiger Textdatei-Editor
Umgang mit der Ausführungsrichtlinie
Wenn Sie zum ersten Mal versuchen, ein Windows PowerShell-Skript auszuführen, tritt möglicherweise ein häufiges Problem auf. PowerShell gibt wahrscheinlich eine Fehlermeldung zurück, die besagt, dass ein Skript „nicht geladen werden kann, da laufende Skripte auf diesem System deaktiviert sind“.
PS> .\GetServices.ps1 File C:\Temp\GetServices.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 .\GetServices.ps1 ~~~~~ CategoryInfo : SecurityError: (:) , PSSecurityException FullyQualifiedErrorId : UnauthorizedAccess
PowerShell gibt die obige Fehlermeldung zurück, wenn Sie versuchen, eine PowerShell mit der Ausführungsrichtlinie Restricted, Remote Signed oder All Signed auszuführen.
Eingeschränkt
Eingeschränkt ist die Standardrichtlinie für Windows-Clientcomputer. Wenn Sie PowerShell zum ersten Mal verwenden, ist Ihre Standardrichtlinie wahrscheinlich so eingestellt, dass alle Skripte eingeschränkt werden.
Sie können weiterhin einzelne Befehle in einem Terminal ausführen, jedoch keine Skriptdatei. Die Einschränkung umfasst alle Dateien, die mit .ps1xml
, .psm1
oder .ps1
enden.
Uneingeschränkt
Uneingeschränkt ermöglicht es Ihnen, jedes Skript auszuführen, warnt Sie jedoch vor der Ausführung, wenn das Skript aus dem Internet heruntergeladen wird. Diese Richtlinie ist normalerweise die Standardeinstellung für alle Nicht-Windows-Geräte.
Remote Signed
Mit der Remote Signed-Richtlinie können Sie jedes Skript ausführen, das entweder (a) digital signiert oder (b) auf Ihrem lokalen Computer mit oder ohne Signatur geschrieben wurde.
Wenn ein Skript aus dem Internet heruntergeladen und nicht signiert wird, müssen Sie die Datei entsperren. Sie können dies tun, indem Sie mit der rechten Maustaste auf die Datei klicken und Eigenschaften auswählen. Sie können auch das PowerShell-Cmdlet Unblock-File
für diese bestimmte Skriptdatei verwenden.
Die Verwendung einer remote signierten Richtlinie wäre eine ideale Option, wenn Sie ein aus dem Internet heruntergeladenes Skript ausführen.
Alle signiert
Alle signiert erfordert, dass alle Skripte von einem vertrauenswürdigen Herausgeber digital signiert werden. Dazu gehören die aus dem Internet heruntergeladenen und lokal auf Ihrem Computer geschriebenen Skripte.
Ändern der PowerShell-Ausführungsrichtlinie
Ändern der Ausführungsrichtlinie:
- Öffnen Sie Windows PowerShell mit Als Administrator ausführen, um sicherzustellen, dass Sie über die höchste Berechtigung zum Vornehmen der Richtlinienänderungen verfügen.
2. Führen Sie beim Öffnen den folgenden PowerShell-Befehl aus, um die Ausführungsrichtlinie Ihres Computers festzulegen. Die Ausführungsrichtlinie kann, wie oben beschrieben, einer von drei verschiedenen Typen sein. Dieses Tutorial verwendet eine nützliche und dennoch sichere Ausführungsrichtlinie von RemoteSigned.
Da in diesem Lernprogramm davon ausgegangen wird, dass Sie die Skriptdatei GetServices.ps1 aus dem Internet heruntergeladen haben, legen Sie die Ausführungsrichtlinie auf RemoteSigned fest.
PS> Set-ExecutionPolicy RemoteSigned
Die RemoteSigned-Ausführungsrichtlinie zwingt Sie, jedes aus dem Internet heruntergeladene PowerShell-Skript kryptografisch zu signieren, bevor PowerShell es auf Ihrem System ausführt.
3. Sie sollten eine Ausgabe sehen, in der Sie aufgefordert werden, die Aktion zu bestätigen. Geben Sie Y ein und drücken Sie die Eingabetaste, um die Richtlinienänderung zu bestätigen.
Execution Policy Change The execution policy helps protect you from scripts that you do not trust. Changing the execution policy might expose you to the security risks described in the about_Execution_Policies help topic at https:/go.microsoft.com/fwlink/?LinkID=135170. Do you want to change the execution policy? Yes Yes to All No No to All Suspend Help (default is "N"):
Befolgen Sie an dieser Stelle die nächsten Schritte, um verschiedene Methoden zum Ausführen des PowerShell-Skripts auf Ihrem Computer zu untersuchen.
Ausführen eines PowerShell-Skripts
Um die Ausführung eines PowerShell-Skripts zu demonstrieren, benötigen Sie tatsächlich eine Skriptdatei zum Ausführen! Wenn Sie keine zur Hand haben, laden Sie diese ZIP-Datei herunter und extrahieren Sie die PS1-Datei darin. Sie finden darin eine einfache Skriptdatei namens GetServices.ps1.
Write-Output "Listing Computer Services"Get-Service
Jedes PowerShell-Skript sollte mit einer Erweiterung
.ps1
enden.
Verwenden der Konsole
Sobald Sie ein Skript bereit haben, können Sie eine PowerShell-Skriptdatei auf verschiedene Arten ausführen. Eine der gebräuchlichsten Methoden ist die PowerShell-Konsole.
Dazu:
- Öffnen Sie die PowerShell-Konsole wie oben gezeigt.
2. Navigieren Sie mit dem PowerShell-Cmdlet Set-Location
oder dem Alias cd
zum Speicherort des Dateisystems, an dem sich Ihr Skript befindet. Das Skript dieses Tutorials finden Sie in der C:\Temp verzeichnis.
PS> cd C:\Temp\
3. Führen Sie das Skript mit einer Punktnotation (.
) aus. PowerShell ist eine Shell, die auch nach Befehlsnamen sucht. Um zwischen einem PowerShell-Befehl und einem Skript zu unterscheiden, müssen Sie dem Skript einen Punkt voranstellen. Dieser Punkt repräsentiert das aktuelle Verzeichnis.
PS> .\GetServices.ps1
Ausführen eines PowerShell-Skripts von der Befehlszeile über den PowerShell-Speicherort
Wenn Sie Skripts nicht über die PowerShell-Konsole ausführen können oder möchten, können Sie dies auch mit der guten alten Befehlszeile (Eingabeaufforderung) tun.
Um Skripte über die Eingabeaufforderung auszuführen, müssen Sie zuerst die ausführbare PowerShell-Datei (powershell.exe), mit dem PowerShell-Speicherort C:\Program Files\WindowsPowerShell\powershell.exe
und übergeben Sie dann den Skriptpfad als Parameter.
Sie können Skripte mit Parametern in jedem Kontext ausführen, indem Sie sie einfach angeben, während Sie die ausführbare PowerShell-Datei wie
powershell.exe -Parameter 'Foo' -Parameter2 'Bar'
ausführen.
Sobald Sie cmd öffnen.exe, können Sie ein PowerShell-Skript wie unten ausführen. In diesem Beispiel wird die Engine ausgeführt und der Skriptpfad von übergeben C:\Temp\GetServices.ps1 .
Beachten Sie, dass im folgenden Beispiel der PowerShell-Speicherortpfad zum Ausführen des Skripts verwendet wird. Sie müssen dies tun, wenn sich der Ordner nicht irgendwo in Ihrem PFAD befindet.
CMD> C:\Program Files\WindowsPowerShell\powershell.exe "C:\Temp\GetServices.ps1"
Der PowerShell-Speicherort für PowerShell 7 verwendet eine andere ausführbare Datei mit dem Namen pwsh.exe befindet sich typischerweise in C:\Program Dateien\PowerShell\7\pwsh.exe.
Unten ist ein praktisches YouTube-Video, das die Ausführung eines Skripts über eine Batch-Datei abdeckt, die die cmd.exe wird ausgeführt.
Verwenden der PowerShell ISE
Wenn Sie Ihre eigenen Skripte erstellen oder die anderer bearbeiten, verwenden Sie wahrscheinlich einen Skripteditor wie die PowerShell ISE oder möglicherweise Visual Studio (VS) -Code. Da die ISE mit Windows geliefert wird, konzentrieren wir uns in diesem Lernprogramm auf diese Methode.
So rufen Sie ein Skript über die ISE auf:
- Navigieren Sie zum Startmenü, suchen Sie nach PowerShell ISE und öffnen Sie es.
2. Klicken Sie auf Datei → Öffnen und suchen Sie Ihr Skript.
3. Klicken Sie bei geöffnetem Skript auf die grüne Schaltfläche Ausführen, um das Skript auszuführen. Diese Schaltfläche ruft das Skript im integrierten PowerShell-Terminal unten auf.
Die Ausgabe des Beispielskripts
Ein PowerShell-Skript kann manchmal die Ausgabe zurückgeben. Dies geschieht, wenn das von Ihnen ausgeführte Skript so erstellt wird, dass Objekte zurückgegeben werden, was eine grundlegende Komponente von PowerShell ist.
Wenn Sie das Beispielskript GetServices.ps1 ausführen, wird Folgendes angezeigt. Dieses Skript führt das Cmdlet Get-Service
aus, das alle auf Ihrem lokalen Windows-Computer installierten Dienste zurückgibt.
PS> .\GetScripts.ps1Listing Computer ServicesStatus Name DisplayName------ ---- -----------Running aakore Acronis Agent Core ServiceStopped AarSvc_1b668d Agent Activation Runtime_1b668dRunning AcronisActivePr... Acronis Active Protection ServiceRunning AcronisCyberPro... Acronis Cyber Protection ServiceRunning AcrSch2Svc Acronis Scheduler2 ServiceRunning AdobeARMservice Adobe Acrobat Update ServiceRunning AdobeUpdateService AdobeUpdateServiceRunning AGMService Adobe Genuine Monitor ServiceRunning AGSService Adobe Genuine Software Integrity Se...----Truncated----
Ausführen eines PowerShell-Skripts in einem Skript
Angenommen, Sie haben zwei Skripte und möchten, dass eines das andere aufruft. Möglicherweise haben Sie ein Skript namens getUser.ps1 und eines namens ResetPassword.ps1 . Innerhalb des Skripts getUser.ps1 möchten Sie ResetPassword.ps1 ausführen, um ein Benutzerkennwort zurückzusetzen.
Innerhalb des aufrufenden Skripts (getUser.ps1) fügen Sie eine Zeile hinzu, um das andere Skript auszuführen, genau wie Sie das Skript über die Befehlszeile aufrufen würden.
Sie können unten sehen, dass Sie ein paar Optionen haben. Sie sollten das andere Skript normalerweise innerhalb derselben Sitzung oder desselben Bereichs ausführen, um die Dinge zu vereinfachen, es sei denn, Sie haben einen bestimmten Grund, das Skript in einer anderen PowerShell-Sitzung auszuführen.
## To run the other script in a new sessionpowershell.exe .\ResetPassword.ps1## To run the other script in the same session.\ResetPassword.ps1