none
Hashtable Value und key einzeln ausgeben RRS feed

  • Frage

  • Hallo zusammen

    ich habe das problem ich habe eine Hashtable und jetzt will ich die die Keys mit den zugehörigen Values einzeln ausgeben, um sie in einem E-Mail zu verschicken.

    Das Hashtable:

    Der Code

    $emailFrom = "ix@x.com"
    $emailTo = "x.x@x.com"
    $smtpServer = "b.com"
    $subject = "Dies ist eine automatisch generierte Mail mit dem Link zur aktuellen ActiveSyncStatistik CSV Datei"
    $emailbody = foreach($bodykey in $iPhoneHashiOS.Keys){}
    $smtp = new-object Net.Mail.SmtpClient($smtpServer)
    $msg = new-object Net.Mail.MailMessage($emailFrom, $emailTo, $subject, $emailbody)
    $smtp.send($msg)

    würde mich auf eine rasche Antwort freuen-

    Gruss Dominique


    Dominique Hofmann

    Montag, 28. April 2014 13:17

Antworten

  • Hallo Dominique!

    Jedes Element in einer Hashtable ist ein Objekt vom Typ DictionaryEntry!
    Siehe: http://msdn.microsoft.com/de-de/library/system.collections.dictionaryentry%28v=vs.110%29.aspx

    $iPhoneHashiOS = @{"iOS 6.0*" = 0; "iOS 6.1*" = 0; "iOS 6.1.1*" = 0; "iOS 6.1.2*" = 0; "iOS 6.1.3*" = 0; "iOS 7.0*" = 0; "iOS 7.0.2*" = 0; "iOS 7.0.3*" = 0; "iOS 7.0.4*" = 0; "iOS 7.1*" = 0}
    
    ForEach($Element in $iPhoneHashiOS.GetEnumerator()) {
    $Element | Get-Member
    break
    }

    Dein Code müsste so gehen:

    $iPhoneHashiOS = @{"iOS 6.0*" = 0; "iOS 6.1*" = 0; "iOS 6.1.1*" = 0; "iOS 6.1.2*" = 0; "iOS 6.1.3*" = 0; "iOS 7.0*" = 0; "iOS 7.0.2*" = 0; "iOS 7.0.3*" = 0; "iOS 7.0.4*" = 0; "iOS 7.1*" = 0}
    
    
    # Array Erstellen mit den Key = Value einträgen
    $Liste = ForEach($Key in $iPhoneHashiOS.Keys) {
        "$Key =  $($iPhoneHashiOS.$Key)"
    }
    
    $emailFrom = "ix@x.com"
    $emailTo = "x.x@x.com"
    $smtpServer = "b.com"
    $subject = "Dies ist eine automatisch generierte Mail mit dem Link zur aktuellen ActiveSyncStatistik CSV Datei"
    
    # $OFS ist das Ausgabetrennzeichen.
    # Diese Variable gibt das Zeichen an, das die Elemente
    # eines Arrays trennt, wenn das Array in eine Zeichenfolge
    # konvertiert wird.
    # `n ist das Zeichen für einen Zeilen Umbruch 
    $OFS = "`n"
    
    $emailbody = [String]$Liste
    
    # $OFS zurücksetzen auf Standardvorgabe (Leerzeichen)
    $OFS = ' '
    
    $smtp = new-object Net.Mail.SmtpClient($smtpServer)
    $msg = new-object Net.Mail.MailMessage($emailFrom, $emailTo, $subject, $emailbody)
    $smtp.send($msg)


    PowerShell Artikel, Buchtipps und kostenlose PowerShell Tutorials + E-Books
    auf der deutschsprachigen PowerShell Community

    Mein 21 Teiliger PowerShell Video Grundlehrgang
    Deutsche PowerShell Videos auf Youtube
    Folge mir auf:
    Twitter | Facebook | Google+

    • Als Antwort markiert coolmanii Montag, 28. April 2014 14:18
    • Bearbeitet Peter Kriegel Montag, 28. April 2014 14:26
    • Tag als Antwort aufgehoben coolmanii Montag, 28. April 2014 14:42
    • Als Antwort markiert coolmanii Montag, 28. April 2014 15:03
    Montag, 28. April 2014 14:15
  • Im E-Mail Body sind alle Key = Value als Text mit Zeilenumbruch drin!

    Führe mal nur diesen Code aus und du wirst das sehen!

    $iPhoneHashiOS = @{"iOS 6.0*" = 0; "iOS 6.1*" = 0; "iOS 6.1.1*" = 0; "iOS 6.1.2*" = 0; "iOS 6.1.3*" = 0; "iOS 7.0*" = 0; "iOS 7.0.2*" = 0; "iOS 7.0.3*" = 0; "iOS 7.0.4*" = 0; "iOS 7.1*" = 0}
    
    # Array Erstellen mit den Key = Value einträgen
    $Liste = ForEach($Key in ($iPhoneHashiOS.Keys | Sort-Object -Descending)) {
        "$Key =  $($iPhoneHashiOS.$Key)"
    }
    
    $Liste
    
    # $OFS ist das Ausgabetrennzeichen.
    # Diese Variable gibt das Zeichen an, das die Elemente
    # eines Arrays trennt, wenn das Array in eine Zeichenfolge
    # konvertiert wird.
    # `n ist das Zeichen für einen Zeilen Umbruch 
    $OFS = "`n"
    
    $emailbody = [String]$Liste
    
    $OFS = ' '
    
    # E-Mail Body Anzeigen
    $emailbody




    PowerShell Artikel, Buchtipps und kostenlose PowerShell Tutorials + E-Books
    auf der deutschsprachigen PowerShell Community

    Mein 21 Teiliger PowerShell Video Grundlehrgang
    Deutsche PowerShell Videos auf Youtube
    Folge mir auf:
    Twitter | Facebook | Google+

    • Bearbeitet Peter Kriegel Dienstag, 29. April 2014 08:35
    • Als Antwort markiert coolmanii Dienstag, 29. April 2014 09:12
    Dienstag, 29. April 2014 08:34

Alle Antworten

  • Hallo Dominique!

    Jedes Element in einer Hashtable ist ein Objekt vom Typ DictionaryEntry!
    Siehe: http://msdn.microsoft.com/de-de/library/system.collections.dictionaryentry%28v=vs.110%29.aspx

    $iPhoneHashiOS = @{"iOS 6.0*" = 0; "iOS 6.1*" = 0; "iOS 6.1.1*" = 0; "iOS 6.1.2*" = 0; "iOS 6.1.3*" = 0; "iOS 7.0*" = 0; "iOS 7.0.2*" = 0; "iOS 7.0.3*" = 0; "iOS 7.0.4*" = 0; "iOS 7.1*" = 0}
    
    ForEach($Element in $iPhoneHashiOS.GetEnumerator()) {
    $Element | Get-Member
    break
    }

    Dein Code müsste so gehen:

    $iPhoneHashiOS = @{"iOS 6.0*" = 0; "iOS 6.1*" = 0; "iOS 6.1.1*" = 0; "iOS 6.1.2*" = 0; "iOS 6.1.3*" = 0; "iOS 7.0*" = 0; "iOS 7.0.2*" = 0; "iOS 7.0.3*" = 0; "iOS 7.0.4*" = 0; "iOS 7.1*" = 0}
    
    
    # Array Erstellen mit den Key = Value einträgen
    $Liste = ForEach($Key in $iPhoneHashiOS.Keys) {
        "$Key =  $($iPhoneHashiOS.$Key)"
    }
    
    $emailFrom = "ix@x.com"
    $emailTo = "x.x@x.com"
    $smtpServer = "b.com"
    $subject = "Dies ist eine automatisch generierte Mail mit dem Link zur aktuellen ActiveSyncStatistik CSV Datei"
    
    # $OFS ist das Ausgabetrennzeichen.
    # Diese Variable gibt das Zeichen an, das die Elemente
    # eines Arrays trennt, wenn das Array in eine Zeichenfolge
    # konvertiert wird.
    # `n ist das Zeichen für einen Zeilen Umbruch 
    $OFS = "`n"
    
    $emailbody = [String]$Liste
    
    # $OFS zurücksetzen auf Standardvorgabe (Leerzeichen)
    $OFS = ' '
    
    $smtp = new-object Net.Mail.SmtpClient($smtpServer)
    $msg = new-object Net.Mail.MailMessage($emailFrom, $emailTo, $subject, $emailbody)
    $smtp.send($msg)


    PowerShell Artikel, Buchtipps und kostenlose PowerShell Tutorials + E-Books
    auf der deutschsprachigen PowerShell Community

    Mein 21 Teiliger PowerShell Video Grundlehrgang
    Deutsche PowerShell Videos auf Youtube
    Folge mir auf:
    Twitter | Facebook | Google+

    • Als Antwort markiert coolmanii Montag, 28. April 2014 14:18
    • Bearbeitet Peter Kriegel Montag, 28. April 2014 14:26
    • Tag als Antwort aufgehoben coolmanii Montag, 28. April 2014 14:42
    • Als Antwort markiert coolmanii Montag, 28. April 2014 15:03
    Montag, 28. April 2014 14:15
  • Danke für die rasche Antwort

    Nur noch eine Frage ewas müsste ich machen damit ich es in diesem Format darstellen könnte:

    iOS 7.1* = 1
    iOS 7.1.1* = 1
    iOS 6.1.3 = 1

    Gruss Dominique


    Dominique Hofmann

    Montag, 28. April 2014 15:10
  • Welches Format ?

    Du meinst sicher die Sortierung von großen Zahlen absteigend?

    $iPhoneHashiOS = @{"iOS 6.0*" = 0; "iOS 6.1*" = 0; "iOS 6.1.1*" = 0; "iOS 6.1.2*" = 0; "iOS 6.1.3*" = 0; "iOS 7.0*" = 0; "iOS 7.0.2*" = 0; "iOS 7.0.3*" = 0; "iOS 7.0.4*" = 0; "iOS 7.1*" = 0}
    
    
    # Array Erstellen mit den Key = Value einträgen
    $Liste = ForEach($Key in ($iPhoneHashiOS.Keys | Sort-Object -Descending)) {
        "$Key =  $($iPhoneHashiOS.$Key)"
    }
    
    $Liste


    PowerShell Artikel, Buchtipps und kostenlose PowerShell Tutorials + E-Books
    auf der deutschsprachigen PowerShell Community

    Mein 21 Teiliger PowerShell Video Grundlehrgang
    Deutsche PowerShell Videos auf Youtube
    Folge mir auf:
    Twitter | Facebook | Google+

    Dienstag, 29. April 2014 05:57
  • Tut mir leid für die unverständliche Formulierung...

    Ich meinte mit dem Script oben wird in der gesendeten E-Mail nur 1 Key mit zugehörigen Value angezeigt und meine Frage wäre wie könnte man das Script, das du geschrieben hast, so abändern das es alle keys mit dem zugehörigen Value auf einmal anzeigt ?

    Grüsse Dominique


    Dominique Hofmann

    Dienstag, 29. April 2014 07:14
  • Im E-Mail Body sind alle Key = Value als Text mit Zeilenumbruch drin!

    Führe mal nur diesen Code aus und du wirst das sehen!

    $iPhoneHashiOS = @{"iOS 6.0*" = 0; "iOS 6.1*" = 0; "iOS 6.1.1*" = 0; "iOS 6.1.2*" = 0; "iOS 6.1.3*" = 0; "iOS 7.0*" = 0; "iOS 7.0.2*" = 0; "iOS 7.0.3*" = 0; "iOS 7.0.4*" = 0; "iOS 7.1*" = 0}
    
    # Array Erstellen mit den Key = Value einträgen
    $Liste = ForEach($Key in ($iPhoneHashiOS.Keys | Sort-Object -Descending)) {
        "$Key =  $($iPhoneHashiOS.$Key)"
    }
    
    $Liste
    
    # $OFS ist das Ausgabetrennzeichen.
    # Diese Variable gibt das Zeichen an, das die Elemente
    # eines Arrays trennt, wenn das Array in eine Zeichenfolge
    # konvertiert wird.
    # `n ist das Zeichen für einen Zeilen Umbruch 
    $OFS = "`n"
    
    $emailbody = [String]$Liste
    
    $OFS = ' '
    
    # E-Mail Body Anzeigen
    $emailbody




    PowerShell Artikel, Buchtipps und kostenlose PowerShell Tutorials + E-Books
    auf der deutschsprachigen PowerShell Community

    Mein 21 Teiliger PowerShell Video Grundlehrgang
    Deutsche PowerShell Videos auf Youtube
    Folge mir auf:
    Twitter | Facebook | Google+

    • Bearbeitet Peter Kriegel Dienstag, 29. April 2014 08:35
    • Als Antwort markiert coolmanii Dienstag, 29. April 2014 09:12
    Dienstag, 29. April 2014 08:34