ich habe mir mal ein kurzes Skript in PowerShell geschrieben, um Dateien ein wenig zu bearbeiten. Was genau das Skript macht ist eigentlich nicht wichtig...
Um das Ausführen des Skripts benutzerfreundlicher zu machen, habe ich im regedit zum Kontextmenü für Dateien einen Button hinzugefügt, der wenn ich diesen klicke das Skript mit 2 Argumenten ausführt. Dazu habe ich unter dem command-Schlüssel in der Zeichenfolge (Standard) folgenden Wert festgelegt:
"[Pfad der powershell.exe Datei]" -File "[Pfad des Skripts]" "[Argument1]" "[Argument2]"
Es funktioniert auch alles wunderbar, jedoch kommt jedes mal wenn ich auf den Kontextmenü Button klicke ein nerviges blaues Fenster. Ich denke das hängt mit dem Start von PowerShell zusammen, man sieht auch kurz die Befehle des Skripts durchflitzen, was jetzt nicht stört, da das Skript sowieso fast ein Einzeiler ist, das Fenster im gesamten nervt jedoch schon .
Interessant ist, wenn ich denselben Befehl (Wert des command-Schlüssels) in die CMD eingebe, dann wird das Skript ausgeführt ohne dieses Fenster (ich denke weil die CMD ja dann das PowerShell Fenster ist, da wenn man PowerShell über die CMD startet öffnet sich auch kein extra Fenster, sondern PS läuft dann über die CMD).
Ich habe schon bei meinen Suchen im Netz ein paar Beiträge gefunden, bei einem davon war die Lösung das Skript einfach via Batch-Datei auszuführen, was ich jedoch nicht sehr elegant finde.... Auch folgenden Befehl einfach ans Anfang des Skripts zu kopieren hilft nicht, da er das PowerShell-Fenster schließt wenn man es mit diesem ausführt, jedoch wird mir beim ausführen des Skripts über das Kontextmenü trotzdem das Fenster angezeigt, da ich ja PowerShell auch dafür erstmal starten muss:
$window = Add-Type -memberDefinition @"
[DllImport("user32.dll")]
public static extern bool ShowWindow(IntPtr hWnd, int nCmdShow);
"@ -name "Win32ShowWindowAsync" -namespace Win32Functions -passThru
Kann ich meinem Wert für den command-Schlüssel noch irgendwie Argumente mitgeben um diesen PowerShell-Start unsichtbar zu machen? Habe es schon probiert mit:
"[Pfad der powershell.exe Datei]" -WindowsStyle Hidden -File "[Pfad des Skripts]" "[Argument1]" "[Argument2]"
"[Pfad der powershell.exe Datei]" -ExecutionPolicy Bypass -File "[Pfad des Skripts]" "[Argument1]" "[Argument2]"
da ich diese Befehle auch gelesen hatte. Auch dies war aber leider Erfolglos....
Frage
michi.wtr
Hallo zusammen,
ich habe mir mal ein kurzes Skript in PowerShell geschrieben, um Dateien ein wenig zu bearbeiten. Was genau das Skript macht ist eigentlich nicht wichtig...
Um das Ausführen des Skripts benutzerfreundlicher zu machen, habe ich im regedit zum Kontextmenü für Dateien einen Button hinzugefügt, der wenn ich diesen klicke das Skript mit 2 Argumenten ausführt. Dazu habe ich unter dem command-Schlüssel in der Zeichenfolge (Standard) folgenden Wert festgelegt:
"[Pfad der powershell.exe Datei]" -File "[Pfad des Skripts]" "[Argument1]" "[Argument2]"
Es funktioniert auch alles wunderbar, jedoch kommt jedes mal wenn ich auf den Kontextmenü Button klicke ein nerviges blaues Fenster. Ich denke das hängt mit dem Start von PowerShell zusammen, man sieht auch kurz die Befehle des Skripts durchflitzen, was jetzt nicht stört, da das Skript sowieso fast ein Einzeiler ist, das Fenster im gesamten nervt jedoch schon .
Interessant ist, wenn ich denselben Befehl (Wert des command-Schlüssels) in die CMD eingebe, dann wird das Skript ausgeführt ohne dieses Fenster (ich denke weil die CMD ja dann das PowerShell Fenster ist, da wenn man PowerShell über die CMD startet öffnet sich auch kein extra Fenster, sondern PS läuft dann über die CMD).
Ich habe schon bei meinen Suchen im Netz ein paar Beiträge gefunden, bei einem davon war die Lösung das Skript einfach via Batch-Datei auszuführen, was ich jedoch nicht sehr elegant finde.... Auch folgenden Befehl einfach ans Anfang des Skripts zu kopieren hilft nicht, da er das PowerShell-Fenster schließt wenn man es mit diesem ausführt, jedoch wird mir beim ausführen des Skripts über das Kontextmenü trotzdem das Fenster angezeigt, da ich ja PowerShell auch dafür erstmal starten muss:
$window = Add-Type -memberDefinition @"
[DllImport("user32.dll")]
public static extern bool ShowWindow(IntPtr hWnd, int nCmdShow);
"@ -name "Win32ShowWindowAsync" -namespace Win32Functions -passThru
$window::ShowWindow((Get-Process –id $pid).MainWindowHandle, 0)
Kann ich meinem Wert für den command-Schlüssel noch irgendwie Argumente mitgeben um diesen PowerShell-Start unsichtbar zu machen? Habe es schon probiert mit:
"[Pfad der powershell.exe Datei]" -WindowsStyle Hidden -File "[Pfad des Skripts]" "[Argument1]" "[Argument2]"
"[Pfad der powershell.exe Datei]" -ExecutionPolicy Bypass -File "[Pfad des Skripts]" "[Argument1]" "[Argument2]"
da ich diese Befehle auch gelesen hatte. Auch dies war aber leider Erfolglos....
Vielen lieben Dank schonmal im Voraus,
Micha
Link zu diesem Kommentar
Auf anderen Seiten teilen
2 Antworten auf diese Frage
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.