Wie ist es möglich, ein PowerShell- Skript auszuführen, ohne dem Benutzer ein Fenster oder ein anderes Zeichen anzuzeigen?
Mit anderen Worten, das Skript sollte leise im Hintergrund ausgeführt werden, ohne dass der Benutzer ein Zeichen dafür hat.
Zusätzliches Guthaben für eine Antwort, bei der keine Komponenten von Drittanbietern verwendet werden :)
windows
powershell
scripting
batch-file
silent
Thomas Bratt
quelle
quelle
Antworten:
Sie können es entweder so ausführen (dies zeigt jedoch für eine Weile ein Fenster):
Oder Sie verwenden eine von mir erstellte Hilfsdatei, um das Fenster PsRun.exe zu vermeiden, das genau das tut. Sie können die Quell- und Exe-Datei herunterladen. Geplante Aufgaben mit der WinForm-Benutzeroberfläche in PowerShell ausführen . Ich benutze es für geplante Aufgaben.
Bearbeitet: Wie Marco bemerkte, ist dieser Parameter im Fensterstil nur für V2 verfügbar.
quelle
-WindowStyle Hidden
dass die AufgabeRun whether user is logged on or not
auf der Registerkarte Allgemein im Abschnitt "Sicherheitsoptionen" festgelegt ist.Ich hatte das gleiche Problem. Ich fand heraus , wenn Sie unterwegs Aufgabe in Taskplaner , der das läuft powershell.exe Skript, können Sie „klicken Run , ob Benutzer angemeldet ist oder nicht “ , und das wird nie die Powershell - Fenster zeigen , wenn die Aufgabe ausgeführt wird .
quelle
Sie können die PowerShell-Community-Erweiterungen verwenden und Folgendes tun:
Sie können dies auch mit VBScript tun:
http://blog.sapien.com/index.php/2006/12/26/more-fun-with-scheduled-powershell/Versteckte PowerShell-Aufgaben planen (Internetarchiv)
Mehr Spaß mit geplanter PowerShell (Internet Archive)
(Über diesen Forenthread .)
quelle
Hier ist ein Ansatz, für den keine Befehlszeilenargumente oder ein separater Starter erforderlich sind. Es ist nicht vollständig unsichtbar, da beim Start vorübergehend ein Fenster angezeigt wird. Aber es verschwindet dann schnell. Wo das in Ordnung ist, ist dies meiner Meinung nach der einfachste Ansatz, wenn Sie Ihr Skript durch Doppelklicken im Explorer oder über eine Verknüpfung zum Startmenü (einschließlich natürlich des Untermenüs Start) starten möchten. Und ich mag es, dass es Teil des Codes des Skripts selbst ist, nicht etwas Äußeres.
Fügen Sie dies an die Vorderseite Ihres Skripts ein:
quelle
Hier ist ein Einzeiler:
Obwohl es möglich ist, dass ein Fenster sehr kurz blinkt, sollte dies selten vorkommen.
quelle
Ich hatte dieses Problem beim Ausführen von c #. Unter Windows 7 wurde der Dienst "Interactive Services Detection" angezeigt, wenn ein verstecktes Powershell-Fenster als SYSTEM-Konto ausgeführt wurde.
Durch die Verwendung des Parameters "CreateNoWindow" wurde verhindert, dass der ISD-Dienst seine Warnung anzeigt.
quelle
Ich denke, dass der beste Weg, den Konsolenbildschirm der PowerShell auszublenden, wenn Sie ein Hintergrundskript ausführen, dieser Code ist ( Antwort " Bluecakes ").
Ich füge diesen Code am Anfang aller meiner PowerShell-Skripts hinzu, die ich im Hintergrund ausführen muss.
quelle
ps1 im Taskplaner und auch in der Verknüpfung ausgeblendet
quelle
Ich habe ein kleines Tool erstellt, das den Aufruf an jedes Konsolentool weiterleitet, das Sie fensterlos bis zur Originaldatei starten möchten:
https://github.com/Vittel/RunHiddenConsole
Benennen Sie die ausführbare Datei nach dem Kompilieren einfach in "<targetExecutableName> w.exe" um (fügen Sie ein "w" hinzu) und platzieren Sie sie neben der ursprünglichen ausführbaren Datei. Sie können dann eG Powershellw.exe mit den üblichen Parametern aufrufen und es wird kein Fenster geöffnet.
Wenn jemand eine Idee hat, wie er überprüfen kann, ob der erstellte Prozess auf Eingaben wartet, kann ich Ihnen gerne Ihre Lösung hinzufügen :)
quelle
MessageBox
ohne jeden Blitz des Fensters beim Start (erfordert eine EXE - Datei kompiliert als winexe, nicht eine Konsolenanwendung und erfordert Taskplaner werden auf „Run nur , wenn der Benutzer angemeldet ist on "So werden Dialoge in der aktuellen Desktop-Sitzung angezeigt.) Vielen Dank für die Implementierung. Powershellw.exe ist seit Jahren auf meiner Wunschliste!Hier ist eine funktionierende Lösung in Windows 10, die keine Komponenten von Drittanbietern enthält. Es funktioniert, indem das PowerShell-Skript in VBScript eingeschlossen wird.
Schritt 1: Wir müssen einige Windows-Funktionen ändern, damit VBScript PowerShell ausführen und standardmäßig .ps1-Dateien mit PowerShell öffnen kann.
-go ausführen und "regedit" eingeben. Klicken Sie auf OK und lassen Sie es dann laufen.
- Fügen Sie diesen Pfad "HKEY_CLASSES_ROOT \ Microsoft.PowerShellScript.1 \ Shell" ein und drücken Sie die Eingabetaste.
-Nun öffne den Eintrag rechts und ändere den Wert auf 0.
-Öffnen Sie PowerShell als Administrator und geben Sie "Set-ExecutionPolicy -ExecutionPolicy RemoteSigned" ein, drücken Sie die Eingabetaste und bestätigen Sie die Änderung mit "y" und geben Sie dann ein.
Schritt 2: Jetzt können wir mit dem Umschließen unseres Skripts beginnen.
-Speichern Sie Ihr Powershell-Skript als .ps1-Datei.
- Erstellen Sie ein neues Textdokument und fügen Sie dieses Skript ein.
- Ändern Sie jetzt den Dateipfad an den Speicherort Ihres .ps1-Skripts und speichern Sie das Textdokument.
- Klicken Sie jetzt mit der rechten Maustaste auf die Datei und benennen Sie sie um. Ändern Sie dann die Dateinamenerweiterung in .vbs, drücken Sie die Eingabetaste und klicken Sie auf OK.
GETAN! Wenn Sie jetzt die .vbs öffnen, sollte kein Konsolenfenster angezeigt werden, während Ihr Skript im Hintergrund ausgeführt wird.
Stellen Sie sicher, dass Sie positiv stimmen, wenn dies für Sie funktioniert hat!
quelle
Hier ist eine unterhaltsame Demo zur Steuerung der verschiedenen Zustände der Konsole, einschließlich Minimieren und Ausblenden.
quelle