none
Nachrichtenfenster ausgeben aber nicht warten RRS feed

  • Frage

  • Hallo,

    wie kann ich eine Nachricht ausgeben ohne auf ein "OK" klick zu warten?

    Ich möchte den Benutzer über ein anstehendes Event (Neustart) informieren ohne das das ausgeführte Script stehen bleibt.

    Ein weiteres Script PS Script zu starten wäre eine Möglichkeit, aber vielleicht gibt es noch etwas besseres?

    [System.Windows.Forms.MessageBox]::Show("Noch 3 Std. bis zum Neustart","Neustartmeldung",0)

    Liebe Grüße

    Norbert


    IT Berater

    Donnerstag, 24. August 2017 14:23

Antworten

  • Am einfachsten ist wohl die gute alte MSG.exe

    Aber es spricht auch nichts dagegen, einfach eine neue Powershell-Instanz zu starten:

     $NewPS = [PowerShell]::Create().AddScript({  
     	[void][System.Reflection.Assembly]::LoadWithPartialName("System.Windows.Forms")
    	[System.Windows.Forms.MessageBox]::Show("Noch 3 Std. bis zum Neustart","Neustartmeldung",0) 
    })
    [Void]$NewPS.BeginInvoke()
     

    Grüße, Denniver


    Blog: http://bytecookie.wordpress.com

    Kostenloser Powershell Code Manager v5: Link
    (u.a. Codesnippets verwalten + komplexe Scripte graphisch darstellen)

    Hilf mit und markiere hilfreiche Beiträge mit dem "Abstimmen"-Button (links) und Beiträge die eine Frage von dir beantwortet haben, als "Antwort" (unten).
    Warum das Ganze? Hier gibts die Antwort.

    Donnerstag, 24. August 2017 22:02
    Moderator

Alle Antworten

  • Vom Standard her gibt es nichts. Da man aber durchaus .NET/COM-Klassen aurufen kann, kannst du nach entsprechenden Projekten mit "MessageBox timeout" suchen.
    Donnerstag, 24. August 2017 15:17
  • ...  ich weiß, 's is auch wieder Gefrickel und es hat auch eigentlich nix mit Powershell zu tun, aber manchmal hat man eben keinen Kreuzschlitzschraubendreher zur Hand und haut die Schraube mit'm Hammer ins Brett.  ;-) :-D

    Du kannst mit AutoIt oder Autohotkey eine MessageBox als ausführbares, kompiliertes Script erzeugen, welches Du dann von Powershell aus mit Start-Prozess starten kannst.

    In AutoHotkey würde Deine MessageBox von oben so aussehen:

    MsgBox , 0, Neustartmeldung, Noch 3 Stunden bis zum Neustart

    Kompiliert zu einer Datei "MsgBox.exe" kannst Du sie dann so starten:

    Start-Process -FilePath '<Pfad>\MsgBox.exe'

    ... ohne den Paramter -Wait wird der Process gestartet, ohne das seine Beendigung abgewartet wird und das Script läuft quasi asynchron weiter.

    Nicht unerwähnt lassen möchte ich, dass ein kompiliertes AutoHotkey-Script ca 200 kb groß ist - nicht viel, aber manchen stört's.


    Grüße - Best regards

    PS:> (79,108,97,102|%{[char]$_})-join''

    Donnerstag, 24. August 2017 19:52
  • Am einfachsten ist wohl die gute alte MSG.exe

    Aber es spricht auch nichts dagegen, einfach eine neue Powershell-Instanz zu starten:

     $NewPS = [PowerShell]::Create().AddScript({  
     	[void][System.Reflection.Assembly]::LoadWithPartialName("System.Windows.Forms")
    	[System.Windows.Forms.MessageBox]::Show("Noch 3 Std. bis zum Neustart","Neustartmeldung",0) 
    })
    [Void]$NewPS.BeginInvoke()
     

    Grüße, Denniver


    Blog: http://bytecookie.wordpress.com

    Kostenloser Powershell Code Manager v5: Link
    (u.a. Codesnippets verwalten + komplexe Scripte graphisch darstellen)

    Hilf mit und markiere hilfreiche Beiträge mit dem "Abstimmen"-Button (links) und Beiträge die eine Frage von dir beantwortet haben, als "Antwort" (unten).
    Warum das Ganze? Hier gibts die Antwort.

    Donnerstag, 24. August 2017 22:02
    Moderator
  • Vielen Dank, funktioniert prima.

    IT Berater

    Freitag, 25. August 2017 05:22