none
Outputbox - Ausgabe je nach Fall farbig anpassen RRS feed

  • Frage

  • Hallo zusammen,

    ich versuche mich gerade an meinem ersten Powershell Script und das in einem GUI. Ziel ist es Benutzern das Verbinden von Netzlaufwerken zu erleichtern. Da vorher einige Prüfungen vorgenommen werden, möchte ich gerne je nach Ergebnis der Prüfung die Ausgabe in der Outputbox farbig anpassen. 

    Beispiel:

    Es wird geprüft, ob eine Verbindung zum Internet besteht:(schwarz) erfolgreich (grün) nicht erfolgreich(rot)

    Mein Code dazu, sieht wie folgt aus:

    #Testen des Internets
    $outputbox.Text = "Testen der Internetverbindung:        "
    if (test-connection -computername $google -count 1 -quiet) {$internet="erfolgreich"} ELSE {$internet="nicht erfolgreich"}
    $Outputbox.Text = $outputbox.text + "$Internet";

    nun müsste $internet je nach Fall farbig angepasst werden, ist dieses Möglich, ich habe leider nichts dazu gefunden.

    Danke 

    Sonntag, 13. Oktober 2013 08:28

Antworten

  • Hallo Milchtrinker!

    Zuerst einmal muss ich sagen PowerShell mit GUI zu lernen ist der falsche weg.
    PowerShell kann zwar alle Klassen des .NET Framework benutzen und damit auch GUIs erstellen.

    ABER PowerShell ist für die Konsole und für Remote aufgaben erdacht worden. Also quasi Fensterlos!
    Nun ja, man kann auch einen Schraubenzieher zum Dosen öffnen benutzen.....

    In PowerShell und .NET kommt es immer darauf an das man weiß welches Objekt man vor sich hat.Dein Code Ausschnitt zeigt nicht wie du welche Objekt erstellst / definierst. Das ist wichtig für uns zu wissen!

    $Outputbox ist eine  System.Windows.Forms.TextBox?
    Siehe: http://msdn.microsoft.com/de-de/library/system.windows.forms.textbox.aspx

    Möchtest du die Vordergrundfarbe (die Schrift) ändern oder die Hintergrundfarbe oder beides?

    Wenn man sich die sehr gute Dokumentation der .NET Klassen ansieht kann man mit diesen auch vernünftig arbeiten!

    Die Textbox hat die BackColor und die ForeColor Eigenschaft!

    Du hast hier im Forum die Möglichkeit Code als Code zu Posten. Nutze das Symbol mit den spitzen Klammern <> dafür !


    Meine PowerShell Artikel, Buchtipps und kostenlose PowerShell Tutorials + E-Books
    Mein deutscher PowerShell Blog
    Mein 21 Teiliger PowerShell Video Grundlehrgang
    Deutsche PowerShell Videos auf Youtube
    Folge mir auf:
    Twitter | Facebook | Google+ | Deutsches PowerShell Forum (TechNet)

    Montag, 14. Oktober 2013 06:03
  • dies Befehle rufen nur Fehler hervor :x

    Das zeigt das dir noch sehr viel Grundlagen wissen fehlt.
    PowerShell mit GUI zu lernen ist der falsche weg!

    reicht euch das?

    #Ausgabefeld$outputBox = New-Object System.Windows.Forms.RichTextBox $outputBox.Location = New-Object System.Drawing.Size(450,100) $outputBox.Size = New-Object System.Drawing.Size(300,200) $outputBox.MultiLine = $True $outputBox.ScrollBars = "Vertical" $objForm.Controls.Add($outputBox) 

    Ja ! Geht doch! ;-))

    Du benutzt also eine RichTextBox.

    Einen schon vorhandenen Text von einer RichTextBox einzufärben geht so:

    #region Assemblies laden
    $Null = [reflection.assembly]::loadwithpartialname("System.Windows.Forms")
    $Null = [reflection.assembly]::loadwithpartialname("System.Drawing")
    #endregion Assemblies laden
    
    #region Form Objekte erstellen
    $form1 = New-Object System.Windows.Forms.Form
    $richTextBox1 = New-Object System.Windows.Forms.RichTextBox
    #endregion Form Objekte erstellen
    
    #region Generated Form Code
    $form1.ClientSize = "284,262"
    $form1.Name = "form1"
    $form1.Text = "RichtextBox Demo"
    
    $richTextBox1.Location =  "12,12" 
    $richTextBox1.Name = "richTextBox1"
    $richTextBox1.Size = "260,211"
    $richTextBox1.TabIndex = 0
    
    $form1.Controls.Add($richTextBox1)
    #endregion Generated Form Code
    
    #region RichTextBox Arbeit
    $richTextBox1.Text = @"
    Franz jagt im komplett verwahrlosten Taxi quer durch Bayern.
    Falsches Üben von Xylophonmusik quält jeden größeren Zwerg.
    The quick brown fox jumps over the lazy dog.
    Der schnelle braune Fuchs springt über den faulen Hund.
    Jackdaws love my big sphinx of quartz.
    Dohlen lieben meine große Sphinx aus Quarz.
    Zwölf Boxkämpfer jagen Viktor quer über den großen Sylter Deich.
    Die heiße Zypernsonne quälte Max und Victoria ja böse auf dem Weg zur Küste.
    Fix Schwyz! quäkt Jürgen blöd vom Paß.
    "@
    
    # text finden; der Text wird automatisch selektiert
    $richTextBox1.Find("Xylophonmusik quält jeden größeren Zwerg")
    $richTextBox1.SelectionColor = [System.Drawing.color]::Gold
    $richTextBox1.SelectionBackColor = [System.Drawing.color]::Black
    $richTextBox1.DeselectAll()
    #endregion RichTextBox Arbeit
    
    # Form anzeigen
    $Null = $form1.ShowDialog()


    Meine PowerShell Artikel, Buchtipps und kostenlose PowerShell Tutorials + E-Books
    Mein deutscher PowerShell Blog
    Mein 21 Teiliger PowerShell Video Grundlehrgang
    Deutsche PowerShell Videos auf Youtube
    Folge mir auf:
    Twitter | Facebook | Google+ | Deutsches PowerShell Forum (TechNet)


    Donnerstag, 17. Oktober 2013 07:09

Alle Antworten

  • Hallo Milchtrinker!

    Zuerst einmal muss ich sagen PowerShell mit GUI zu lernen ist der falsche weg.
    PowerShell kann zwar alle Klassen des .NET Framework benutzen und damit auch GUIs erstellen.

    ABER PowerShell ist für die Konsole und für Remote aufgaben erdacht worden. Also quasi Fensterlos!
    Nun ja, man kann auch einen Schraubenzieher zum Dosen öffnen benutzen.....

    In PowerShell und .NET kommt es immer darauf an das man weiß welches Objekt man vor sich hat.Dein Code Ausschnitt zeigt nicht wie du welche Objekt erstellst / definierst. Das ist wichtig für uns zu wissen!

    $Outputbox ist eine  System.Windows.Forms.TextBox?
    Siehe: http://msdn.microsoft.com/de-de/library/system.windows.forms.textbox.aspx

    Möchtest du die Vordergrundfarbe (die Schrift) ändern oder die Hintergrundfarbe oder beides?

    Wenn man sich die sehr gute Dokumentation der .NET Klassen ansieht kann man mit diesen auch vernünftig arbeiten!

    Die Textbox hat die BackColor und die ForeColor Eigenschaft!

    Du hast hier im Forum die Möglichkeit Code als Code zu Posten. Nutze das Symbol mit den spitzen Klammern <> dafür !


    Meine PowerShell Artikel, Buchtipps und kostenlose PowerShell Tutorials + E-Books
    Mein deutscher PowerShell Blog
    Mein 21 Teiliger PowerShell Video Grundlehrgang
    Deutsche PowerShell Videos auf Youtube
    Folge mir auf:
    Twitter | Facebook | Google+ | Deutsches PowerShell Forum (TechNet)

    Montag, 14. Oktober 2013 06:03
  • Hallo Alex,

    sorry für die späte Rückmeldung, ja bin bisher nicht weiter zu gekommen an dem GUI weiter zu arbeiten. Also ich möchte die Vordergrundfarbe ändern.

    Hier mal meine Funktion:


    $google = "8.8.8.8"
    
    #Testen des Internets
    $outputbox.Text = "Testen der Internetverbindung:        ";
    if (test-connection -computername $google -count 2 -quiet) {$internet = "erfolgreich"} ELSE {$internet = "nicht erfolgreich"}
    $Outputbox.Text = $outputbox.text + "$Internet"
    
    
    
    #Auslesen des Benutzernamens
    $User = $Inputbox.Text;
    $outputbox.text = $outputbox.text + "`nBenutzername:    dpz\$user `nTeamlaufwerk:   $LW";
    }
    


    Was ich nun erreichen möchte, dass die Benachrichtigung, ob die Internetverbindung erfolgreich ist oder auch nicht farbig hervorgehoben wird. Der Rest der "Outputbox" soll schwarz wiedergegeben werden. Die Gesamte "Outputbox" farbig anzuzeigen hatte ich geschafft. Also müsste nach meinem Verständnis hier die Farbe angepasst werden:

    $Outputbox.Text = $outputbox.text + **Forecolor** "$Internet"

    Danke 


    Mittwoch, 16. Oktober 2013 16:42
  • Wie ich oben schon geschrieben habe fehlt die wichtigste Information.

    In PowerShell und .NET kommt es immer darauf an das man weiß welches Objekt man vor sich hat.Dein Code Ausschnitt zeigt nicht wie du welche Objekt erstellst / definierst. Das ist wichtig für uns zu wissen!

    Von welchem Objekt Typ ist die $outputbox?

    Ohne diese Information können wir dir nicht weiterhelfen!

    Bitte mach mal folgendes und Poste die Ergebnisse:

    $outputbox.GetType()
    
    # oder 
    
    $outputbox | Get-Member


    Meine PowerShell Artikel, Buchtipps und kostenlose PowerShell Tutorials + E-Books
    Mein deutscher PowerShell Blog
    Mein 21 Teiliger PowerShell Video Grundlehrgang
    Deutsche PowerShell Videos auf Youtube
    Folge mir auf:
    Twitter | Facebook | Google+ | Deutsches PowerShell Forum (TechNet)

    Donnerstag, 17. Oktober 2013 05:33
  • dies Befehle rufen nur Fehler hervor :x

    reicht euch das?

    #Ausgabefeld$outputBox = New-Object System.Windows.Forms.RichTextBox $outputBox.Location = New-Object System.Drawing.Size(450,100) $outputBox.Size = New-Object System.Drawing.Size(300,200) $outputBox.MultiLine = $True $outputBox.ScrollBars = "Vertical" $objForm.Controls.Add($outputBox) 

    Donnerstag, 17. Oktober 2013 06:05
  • dies Befehle rufen nur Fehler hervor :x

    Das zeigt das dir noch sehr viel Grundlagen wissen fehlt.
    PowerShell mit GUI zu lernen ist der falsche weg!

    reicht euch das?

    #Ausgabefeld$outputBox = New-Object System.Windows.Forms.RichTextBox $outputBox.Location = New-Object System.Drawing.Size(450,100) $outputBox.Size = New-Object System.Drawing.Size(300,200) $outputBox.MultiLine = $True $outputBox.ScrollBars = "Vertical" $objForm.Controls.Add($outputBox) 

    Ja ! Geht doch! ;-))

    Du benutzt also eine RichTextBox.

    Einen schon vorhandenen Text von einer RichTextBox einzufärben geht so:

    #region Assemblies laden
    $Null = [reflection.assembly]::loadwithpartialname("System.Windows.Forms")
    $Null = [reflection.assembly]::loadwithpartialname("System.Drawing")
    #endregion Assemblies laden
    
    #region Form Objekte erstellen
    $form1 = New-Object System.Windows.Forms.Form
    $richTextBox1 = New-Object System.Windows.Forms.RichTextBox
    #endregion Form Objekte erstellen
    
    #region Generated Form Code
    $form1.ClientSize = "284,262"
    $form1.Name = "form1"
    $form1.Text = "RichtextBox Demo"
    
    $richTextBox1.Location =  "12,12" 
    $richTextBox1.Name = "richTextBox1"
    $richTextBox1.Size = "260,211"
    $richTextBox1.TabIndex = 0
    
    $form1.Controls.Add($richTextBox1)
    #endregion Generated Form Code
    
    #region RichTextBox Arbeit
    $richTextBox1.Text = @"
    Franz jagt im komplett verwahrlosten Taxi quer durch Bayern.
    Falsches Üben von Xylophonmusik quält jeden größeren Zwerg.
    The quick brown fox jumps over the lazy dog.
    Der schnelle braune Fuchs springt über den faulen Hund.
    Jackdaws love my big sphinx of quartz.
    Dohlen lieben meine große Sphinx aus Quarz.
    Zwölf Boxkämpfer jagen Viktor quer über den großen Sylter Deich.
    Die heiße Zypernsonne quälte Max und Victoria ja böse auf dem Weg zur Küste.
    Fix Schwyz! quäkt Jürgen blöd vom Paß.
    "@
    
    # text finden; der Text wird automatisch selektiert
    $richTextBox1.Find("Xylophonmusik quält jeden größeren Zwerg")
    $richTextBox1.SelectionColor = [System.Drawing.color]::Gold
    $richTextBox1.SelectionBackColor = [System.Drawing.color]::Black
    $richTextBox1.DeselectAll()
    #endregion RichTextBox Arbeit
    
    # Form anzeigen
    $Null = $form1.ShowDialog()


    Meine PowerShell Artikel, Buchtipps und kostenlose PowerShell Tutorials + E-Books
    Mein deutscher PowerShell Blog
    Mein 21 Teiliger PowerShell Video Grundlehrgang
    Deutsche PowerShell Videos auf Youtube
    Folge mir auf:
    Twitter | Facebook | Google+ | Deutsches PowerShell Forum (TechNet)


    Donnerstag, 17. Oktober 2013 07:09
  • Vielen Dank für die Hilfe :)
    Freitag, 18. Oktober 2013 15:15