none
Konsole unterdrücken RRS feed

  • Frage

  • Hi Leute!

    Ich habe ein Powershell-Script für eine Windows-Form geschrieben.
    Funktiniert alles wunderbar ;-)

    Wenn ich das Script ausführe (rechte Maustaste, mit Powershell ausführen) öffnet sich allerdings neben dem Windows-Fester auch die PS-Konsole. Dies finde ich ein wenig unschön.

    Gibt es eine Möglichkeit die Konsole zu unterdrücken? Habe bereits im Forum gesucht doch keinen entsprechenden Eintrag gefunden.

    Besten Dank und freundliche Grüsse
    Reto

    Donnerstag, 8. Dezember 2011 05:26

Antworten

  • Vollständig unterdrücken geht leider nicht. Zumindest beim Start poppt das Fenster kurz auf. Danach kann man es verstecken:

    1. Da kannst das Skript mit dem Parameter  -WindowStyle Hidden starten:

    C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -WindowStyle Hidden &'D:\test.ps1'
    


    2. Oder aus dem Script heraus mit folgendem Code:

    $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) 
    

    Für den ShowWindow-Wert am Ende nach MainWindowshandle gibt es verschiedene Möglichkeiten, siehe hier.

    Grüße, Denniver

     

     


    Blog: http://bytecookie.wordpress.com

    Hilf mit und markiere hilfreiche Beiträge als "Hilfreich" und Beiträge die deine Frage ganz oder teilweise beantwortet haben als "Antwort".



    Donnerstag, 8. Dezember 2011 09:50
    Moderator

Alle Antworten

  • Vollständig unterdrücken geht leider nicht. Zumindest beim Start poppt das Fenster kurz auf. Danach kann man es verstecken:

    1. Da kannst das Skript mit dem Parameter  -WindowStyle Hidden starten:

    C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -WindowStyle Hidden &'D:\test.ps1'
    


    2. Oder aus dem Script heraus mit folgendem Code:

    $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) 
    

    Für den ShowWindow-Wert am Ende nach MainWindowshandle gibt es verschiedene Möglichkeiten, siehe hier.

    Grüße, Denniver

     

     


    Blog: http://bytecookie.wordpress.com

    Hilf mit und markiere hilfreiche Beiträge als "Hilfreich" und Beiträge die deine Frage ganz oder teilweise beantwortet haben als "Antwort".



    Donnerstag, 8. Dezember 2011 09:50
    Moderator
  • HI Denniver

    Besten Dank! Hast mir sehr geholfen.
    Das war alles was ich wollte!

    Gruss, Reto

    Donnerstag, 8. Dezember 2011 10:14
  • Hallo Denniver!

    Ich muss den Thread nochmal hochholen; denn ich stehe vor genau demselben Problem. Ich habe einige Windows.Forms-GUIs gebaut und finde es einfach unschön, wenn über die ganze Dauer ein blaues Feld im Hintergrund zu sehen ist.

    Dein oben geposteter Code funktioniert bei mir leider nicht.

    Google brachte mich zu verschiedenen Ansätzen wie die o.g. Option Nr.1, das Script extern aufzurufen, ein VB-Script zu schreiben, etc. Ich möchte das jedoch intern, im Skript selbst, regeln. Kann ich dort dafür sorgen, dass das Konsolenfenster nicht erscheint, unterdrückt wird, oder wieder fix automatisch verschwindet?

    Über weitere Hilfe wäre ich sehr dankbar.

    Scriptex




    • Bearbeitet Scriptex Donnerstag, 26. Juli 2012 10:42
    Dienstag, 24. Juli 2012 11:47
  • Sorry hatte deinen Post übersehen, ist die Frage noch aktuell?

    Grundsätzlich: hole bitte keinen alten, bereits beantworteten Threads wieder hoch. Übersieht man zu leicht.

    Grüße, Denniver


    Blog: http://bytecookie.wordpress.com

    Hilf mit und markiere hilfreiche Beiträge als "Hilfreich" und Beiträge die deine Frage ganz oder teilweise beantwortet haben als "Antwort".

    Sonntag, 5. August 2012 12:56
    Moderator