Wie man ein PowerShell-Skript ausführt, ohne ein Fenster anzuzeigen
-
Verwenden Sie den
-WindowStyle Hidden
Parameter von PowerShell, um ein PowerShell-Skript ohne Anzeige eines Fensters auszuführen - Verwenden Sie den Taskplaner, um ein PowerShell-Skript ohne Anzeige eines Fensters auszuführen
- Verwenden Sie Drittanbieter-Tools, um ein PowerShell-Skript ohne Anzeige eines Fensters auszuführen
- Fazit

PowerShell von Microsoft ist ein Tool, das standardmäßig mit Windows-Betriebssystemen geliefert wird und Windows-Nutzern Automatisierungsfunktionen basierend auf Kommandozeilenschnittstellen und -befehlen ermöglicht.
PowerShell ist ein Skripting-Tool und ein Automatisierungs-Tool; daher muss manchmal die Anwendung im Hintergrund lautlos ausgeführt werden. In diesem Artikel werden wir sehen, wie man die PowerShell-Anwendung lautlos im Hintergrund ausführt und Befehle im Hintergrund ausführt.
Es gibt Drittanbietertools, die man mit PowerShell-Tools kombinieren kann, um die verborgene Funktionalität von PowerShell zu erreichen. Es gibt jedoch einfache Möglichkeiten, dies nur mit PowerShell zu tun.
Verwenden Sie den -WindowStyle Hidden
Parameter von PowerShell, um ein PowerShell-Skript ohne Anzeige eines Fensters auszuführen
Eine einfache Möglichkeit, das Skriptfenster zu verstecken, besteht darin, den Typ hidden
als Fensterstil zu verwenden. Ein PowerShell-Fenster im Fensterstil würde zu Beginn kurz angezeigt werden und dann während der Skriptausführung verborgen sein.
Der -WindowStyle
Parameter in PowerShell ermöglicht es Ihnen, das Erscheinungsbild des PowerShell-Fensters zu steuern. Der -WindowStyle Hidden
Parameter, wenn angewendet, stellt sicher, dass das PowerShell-Fenster während der Skriptausführung nicht angezeigt wird.
Dies ist besonders nützlich für Aufgaben, die Automatisierung ohne Benutzerinteraktion erfordern oder wenn Sie den Arbeitsablauf des Benutzers nicht unterbrechen möchten.
Das Ausführen eines PowerShell-Skripts mit dem -WindowStyle Hidden
Parameter ist unkompliziert. Öffnen Sie ein PowerShell-Fenster und verwenden Sie den folgenden Befehl:
PowerShell.exe -WindowStyle Hidden { Script you want to execute.. }
Hier ist, was jeder Teil des Befehls tut:
PowerShell.exe
: Initiiert einen neuen PowerShell-Prozess.-WindowStyle Hidden
: Setzt den Fensterstil auf hidden und verhindert, dass das PowerShell-Fenster angezeigt wird.- Das Skript, das Sie ausführen möchten, ist in geschweifte Klammern
{}
eingeschlossen.
Die Ausführung von PowerShell für den obigen Befehl ist im Bild unten dargestellt.
Sobald eingegeben, verschwindet das Fenster, trotzdem wird die Anwendung im Hintergrund ausgeführt. Wie im Bild unten der Hintergrundprozesse gezeigt, läuft PowerShell als Hintergrundprozess.
In dieser Methode würde der Benutzer zu Beginn PowerShell sehen. Daher ist es den Endbenutzern nicht wirklich verborgen. Selbst wenn die Aufgabe zuvor geplant wurde, würde das Fenster aufpoppen und schnell verborgen werden.
Verwenden Sie eine Batch-Datei
Wenn Sie es mit einem komplexeren Skript zu tun haben oder planen, es mehrere Male auszuführen, könnte diese Methode (Batch-Datei mit PowerShell-Befehl) besser organisiert und effizienter sein.
Erstellen Sie eine Batch-Datei (z.B. run_script.bat
) mit folgendem Inhalt:
@echo off
powershell -WindowStyle Hidden -File "C:\path\to\script.ps1"
@echo off
: Dieser Befehl verhindert, dass die Batch-Datei ihre Befehle im Konsolenfenster anzeigt.powershell -WindowStyle Hidden -File "C:\path\to\script.ps1"
: Diese Zeile ruft PowerShell mit den notwendigen Parametern und dem Pfad zum Skript auf.
Beide obigen Codes erreichen dasselbe Ziel, ein PowerShell-Skript ohne Anzeige eines Fensters auszuführen, verwenden jedoch leicht unterschiedliche Ansätze. Es gibt jedoch auch andere einfache Methoden, um die echte verborgene Funktionalität von PowerShell zu erreichen.
Verwenden Sie den Taskplaner, um ein PowerShell-Skript ohne Anzeige eines Fensters auszuführen
Der Taskplaner ist ein Windows-Dienstprogramm, das Ihnen ermöglicht, Aufgaben zu bestimmten Zeiten oder Ereignissen zu automatisieren. Es bietet eine Vielzahl von Anpassungsoptionen und ist ein vielseitiges Tool zur Verwaltung verschiedener Aufgaben auf Ihrem Computer.
Erstellen einer neuen Aufgabe
- Öffnen Sie den Taskplaner: Sie können dies tun, indem Sie nach “Task Scheduler” im Windows-Startmenü suchen.
- Navigieren Sie zu “Aktionen”: Klicken Sie im rechten Bereich auf “Aufgabe erstellen”.
Konfigurieren der Aufgabe
- Benennen Sie die Aufgabe: Geben Sie Ihrer Aufgabe einen Namen und eine Beschreibung. Dies sollte etwas Beschreibendes sein, das widerspiegelt, was die Aufgabe tut.
- Wählen Sie den Aufgabentrigger: Wählen Sie, wie Sie die Aufgabe auslösen möchten. Optionen sind täglich, wöchentlich, monatlich, beim Anmelden usw. Wählen Sie den Trigger, der am besten zu Ihren Bedürfnissen passt.
Einrichten von Triggern
- Wählen Sie Triggerdetails: Abhängig von dem Trigger, den Sie wählen, müssen Sie zusätzliche Details angeben. Wenn Sie beispielsweise “Täglich” wählen, geben Sie die Uhrzeit und Frequenz an.
- Erweiterte Einstellungen: Sie können mehr erweiterte Optionen einstellen, indem Sie auf “Erweiterte Einstellungen” klicken. Dies ermöglicht Ihnen, weiter zu konfigurieren, wann und wie oft die Aufgabe ausgeführt wird.
Spezifizierung von Aktionen
- Wählen Sie Aktion: Im Schritt “Aktionen” wählen Sie “Neu” > “Ein Programm starten”, da wir ein PowerShell-Skript ausführen werden.
- Programm/Skript: Durchsuchen Sie Ihr System und wählen Sie
powershell.exe
aus. - Fügen Sie Argumente hinzu (optional): Geben Sie Folgendes ein:
-WindowStyle Hidden -File "C:\path\to\script.ps1"
Ersetzen Sie "C:\path\to\your\script.ps1"
durch den tatsächlichen Pfad zu Ihrem PowerShell-Skript.
Aktivieren von Sicherheitsoptionen
Aktivieren Sie das Kästchen, das sagt “Mit höchsten Privilegien ausführen”. Dies stellt sicher, dass das Skript mit Administratorrechten ausgeführt wird, falls erforderlich.
Sie können auch auf “Unabhängig davon, ob der Benutzer angemeldet ist oder nicht ausführen” klicken, wodurch das PowerShell-Fenster bei der Ausführung der Aufgabe niemals angezeigt wird.
Abschluss und Test der Aufgabe
Überprüfen Sie die Zusammenfassung der Aufgabe und klicken Sie auf “OK”, um sie zu erstellen.
Sie können die Aufgabe testen, indem Sie mit der rechten Maustaste darauf im Taskplaner klicken und “Ausführen” auswählen. Dadurch wird die Aufgabe sofort entsprechend den von Ihnen festgelegten Triggern ausgeführt.
Der Taskplaner ermöglicht es Ihnen, Aufgaben zu festgelegten Intervallen oder Ereignissen zu automatisieren. Indem Sie ihn verwenden, um PowerShell mit den entsprechenden Argumenten auszulösen, können Sie Skripte lautlos ausführen.
Diese Methode kann jedoch die Funktionalität einiger Skripte, die Sie verwenden möchten, beeinträchtigen. Daher können Sie auch Drittanbietertools oder Community-Erweiterungen für PowerShell verwenden.
Verwenden Sie Drittanbieter-Tools, um ein PowerShell-Skript ohne Anzeige eines Fensters auszuführen
Drittanbieter-Tools erweitern die Fähigkeiten von PowerShell, indem sie zusätzliche Funktionen und Merkmale bieten. Wenn es darum geht, PowerShell-Skripte ohne Anzeige eines Fensters auszuführen, spielen diese Tools eine entscheidende Rolle bei der nahtlosen Automatisierung von Aufgaben.
Verwenden Sie PSExec
PSExec
ist ein vielseitiges Tool von Sysinternals
(jetzt Teil von Microsoft), das es ermöglicht, Prozesse remote auszuführen. Es kann verwendet werden, um PowerShell-Skripte lautlos auszuführen.
psexec -d -s powershell -WindowStyle Hidden -File "C:\path\to\script.ps1"
psexec
: Initiieren vonPSExec
.-d
: WeistPSExec
an, nicht auf den Abschluss des Befehls zu warten.-s
: Führt den Befehl mit Systemberechtigungen aus.powershell -WindowStyle Hidden -File "C:\path\to\script.ps1"
: Führt das PowerShell-Skript lautlos aus.
Verwenden Sie NSSM (Non-Sucking Service Manager)
NSSM
ist ein Dienstmanager für Windows, der es Ihnen ermöglicht, jede Anwendung als Dienst auszuführen. Dies kann besonders nützlich sein, um Skripte lautlos im Hintergrund auszuführen.
- Laden Sie NSSM von der offiziellen Website herunter und installieren Sie es.
- Öffnen Sie eine Eingabeaufforderung mit Administratorrechten.
- Führen Sie den folgenden Befehl aus, um einen neuen Dienst zu erstellen:
nssm install <ServiceName> "C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe" "-NoLogo -NonInteractive -ExecutionPolicy Bypass -File C:\path\to\script.ps1"
nssm install <ServiceName>
: Installiert einen neuen Dienst mit dem angegebenen Namen."C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe"
: Gibt den Pfad zur PowerShell-Exe an."-NoLogo -NonInteractive -ExecutionPolicy Bypass -File C:\path\to\script.ps1"
: Übergibt Parameter an PowerShell, die ihm anweisen, das Skript lautlos auszuführen.
Fazit
PowerShell ist ein leistungsfähiges Automatisierungstool für Windows-Benutzer, das umfangreiche Kommandozeilenfähigkeiten bietet. In Szenarien, in denen eine lautlose Hintergrundausführung notwendig ist, stehen mehrere Methoden zur Verfügung.
- Verwendung des
-WindowStyle Hidden
Parameters: Dies ermöglicht eine kurzzeitige Sichtbarkeit des PowerShell-Fensters, bevor es während der Skriptausführung verborgen wird. Es ist geeignet für Aufgaben, die Automatisierung ohne Benutzerinteraktion erfordern. - Batch-Dateien: Organisiert zum Ausführen komplexer oder wiederholter Skripte. Batch-Dateien rufen PowerShell mit den notwendigen Parametern auf.
- Taskplaner: Bietet Automatisierung zu bestimmten Zeiten oder Ereignissen. Durch die Konfiguration, PowerShell mit den richtigen Parametern auszuführen, können Skripte lautlos ausgeführt werden.
- Drittanbietertools (z.B.
PSExec
,NSSM
): Erweitern die Fähigkeiten von PowerShell und ermöglichen die fensterlose Skriptausführung.
Wählen Sie die Methode, die am besten zu Ihren spezifischen Bedürfnissen und Arbeitsabläufen passt.
Nimesha is a Full-stack Software Engineer for more than five years, he loves technology, as technology has the power to solve our many problems within just a minute. He have been contributing to various projects over the last 5+ years and working with almost all the so-called 03 tiers(DB, M-Tier, and Client). Recently, he has started working with DevOps technologies such as Azure administration, Kubernetes, Terraform automation, and Bash scripting as well.