none
Emailadressen in Variablen speichern RRS feed

  • Frage

  • Hallo,

    leider bekomme ich bei der Variable $result ein Ergebnis mit @{Alias=y.xxx} doch ich brauche nur die Emailadresse y.xxx@zzz.ww ansonsten funktioniert die Abfrage nicht. Wie bekomme ich nur die Emailadresse aus der Variable?


    $results=Get-Mailbox -ResultSize Unlimited |Select-Object alias
    foreach ($result in $results){
     
    $receive = $hubs | get-messagetrackinglog -Recipient $result -Start $Start -End $End -EventID "RECEIVE" -ResultSize Unlimited | select Sender,RecipientCount,TotalBytes,Recipients
    $send = $hubs | get-messagetrackinglog -Sender $result" -Start $Start -End $End -EventID "SEND" -ResultSize Unlimited | select Sender,RecipientCount,TotalBytes

    Liebe Grüße,

    Christian Köbler


    Dienstag, 25. März 2014 16:45

Antworten

  • Moin,

    das steh oben so aber nicht in Deinem Script.

    -Recipient $result.alias"@xxx.at"

    Oben erwähnst Du das in Anführungszeichen nicht.

    So kannst Du natürlich nicht verketten. Eine Verkettung könnte so aussehen (sind alles Alternativen)

    $result.alias + "@xxx.at" (siehe Hinweis 1)

    "$($result.alias)@xxx.at" (siehe Hinweis 2)

    "{0}@xxx.at" -f $result.alias (siehe Hinweis 1 und 2)

    Hinweis 1: Damit das innerhalb eines CMDLETs als Parameter-Übergabe funktioniert, muss es in Klammern gesetzt werden, also -Recipient ($result.alias + "@xxx.at").

    Hinweis 2: Unbedingt die richtige Reihenfolge der $ und die korrekten Klammern beachten!

    ABER: Warum nutzt Du nicht gleich die E-Mail-Adresse?

    $results=Get-Mailbox -ResultSize Unlimited | Select-Object PrimarySmtpAddress

    und später: -Recipient $result.PrimarySmtpAddress


    Gruesse aus Berlin schickt Robert - MVP Exchange Server

    Mittwoch, 26. März 2014 10:34

Alle Antworten

  • Moin,

    willkommen in der OOP! ;)

    Müsste dann so aussehe (ist nur ein Teil): -Recipient $result.Alias


    Gruesse aus Berlin schickt Robert - MVP Exchange Server

    Dienstag, 25. März 2014 17:27
  • Danke für die Antwort.

    Doch leider ist das Ergebnis das gleiche.

    Wenn ich $result.alias verwende ist in -Recipient $result wieder der String mit @{Alias=y.xxx}.

    Hier nochmal der ganze Code:

    $hubs = Get-TransportServer
     
    # Get the start date for the tracking log search
    $Start = (Get-Date -Hour 00 -Minute 00 -Second 00).AddDays(-1)
     
    # Get the end date for the tracking log search
    $End = (Get-Date -Hour 23 -Minute 59 -Second 59).AddDays(-1)
     
    $Datum = $Start.ToShortDateString()


    #$results=get-mailbox -resultsize unlimited | select Name -expand emailadresses | select smtpaddress

    $results=Get-Mailbox -ResultSize Unlimited |Select-Object alias
    foreach ($result in $results){


    $receive = $hubs | get-messagetrackinglog -Recipient $result.alias"@xxx.at" -Start $Start -End $End -EventID "RECEIVE" -ResultSize Unlimited | select Sender,RecipientCount,TotalBytes,Recipients
    $send = $hubs | get-messagetrackinglog -Sender $result.alias"@xxx.at" -Start $Start -End $End -EventID "SEND" -ResultSize Unlimited | select Sender,RecipientCount,TotalBytes
    $mreceive = $receive | Measure-Object TotalBytes -maximum -minimum -average -sum
    $msend = $send | Measure-Object TotalBytes -maximum -minimum -average -sum
     
    $anzahl = $mreceive.count + $msend.count
    $volumen = ($mreceive.sum + $msend.sum) / (1024 * 1024)
     
    $volumen = "{0:N2}" -f $volumen + " MB"
     
    $msendmb = $msend.sum / (1024 * 1024)
    $vsend = "{0:N2}" -f $msendmb + " MB"
     
    $mreceivemb = $mreceive.sum / (1024 * 1024)
    $vreceive = "{0:N2}" -f $mreceivemb + " MB"
     
    $obj = new-object psObject
     
    $obj |Add-Member -MemberType noteproperty -Name "Datum" -Value $Datum
    $obj |Add-Member -MemberType noteproperty -Name "Anzahl Gesendete E-Mails" -Value $msend.Count
    $obj |Add-Member -MemberType noteproperty -Name "Volumen Gesendete E-Mails" -Value $vsend
    $obj |Add-Member -MemberType noteproperty -Name "Anzahl Empfangene E-Mails" -Value $mreceive.Count
    $obj |Add-Member -MemberType noteproperty -Name "Volumen Empfangene E-Mails" -Value $vreceive
    $obj |Add-Member -MemberType noteproperty -Name "Gesamtanzahl" -Value $anzahl
    $obj |Add-Member -MemberType noteproperty -Name "Volumen Gesamt" -Value $volumen
     
    $out = $Datum + ";" + $msend.count + ";" + $vsend + ";" + $mreceive.count + ";" + $vreceive + ";" + $anzahl + ";" + $volumen
    $out | out-file c:\daily.csv -append -encoding default
     
    function sendmail($body)
    {
    $SmtpClient = new-object system.net.mail.smtpClient
    $MailMessage = New-Object system.net.mail.mailmessage
    $SmtpClient.Host = "mail.cwi.at"
    $mailmessage.from = "yyy@xxx.at"
    $mailmessage.To.add("zzz@xxx.at")
    #$mailmessage.CC.add("recipient@domain.tld")
    $mailmessage.Subject = “$Datum Exchange daily report for $result ”
    $MailMessage.IsBodyHtml = $false
    $mailmessage.Body = $body
     
    $smtpclient.Send($mailmessage)
    }
     
    $obj = $obj -replace("@{","")
    $obj = $obj -replace("=",":`t")
    $obj = $obj -replace("; ","`n")
    $obj = $obj -replace("}","`n")
     
    sendmail $obj

    }

    Im Mail Subject wir mir der Inhalt der Variable übermittelt. Wenn ich eine SMTP-Adresse fix vergebe beim durchsuchen des MessageLogs funktioniert es, aber sobald ich die Emailadresse automatisch auslese und einfügen möchte, ist das Ergebnis in der Variable immer dieses: @{Alias=y.xxx} und so @{Alias=y.xxx}@xxx.at funktioniert die Suche im Log nicht.

    Mittwoch, 26. März 2014 10:11
  • Moin,

    das steh oben so aber nicht in Deinem Script.

    -Recipient $result.alias"@xxx.at"

    Oben erwähnst Du das in Anführungszeichen nicht.

    So kannst Du natürlich nicht verketten. Eine Verkettung könnte so aussehen (sind alles Alternativen)

    $result.alias + "@xxx.at" (siehe Hinweis 1)

    "$($result.alias)@xxx.at" (siehe Hinweis 2)

    "{0}@xxx.at" -f $result.alias (siehe Hinweis 1 und 2)

    Hinweis 1: Damit das innerhalb eines CMDLETs als Parameter-Übergabe funktioniert, muss es in Klammern gesetzt werden, also -Recipient ($result.alias + "@xxx.at").

    Hinweis 2: Unbedingt die richtige Reihenfolge der $ und die korrekten Klammern beachten!

    ABER: Warum nutzt Du nicht gleich die E-Mail-Adresse?

    $results=Get-Mailbox -ResultSize Unlimited | Select-Object PrimarySmtpAddress

    und später: -Recipient $result.PrimarySmtpAddress


    Gruesse aus Berlin schickt Robert - MVP Exchange Server

    Mittwoch, 26. März 2014 10:34
  • Ergänzung:

    Und natürlich wir Dir im Mail-Subject der falsche Wert übermittelt. Da steht:

    $mailmessage.Subject = “$Datum Exchange daily report for $result

    Es müsste aber heißen:

    $mailmessage.Subject = “$Datum Exchange daily report for " +$result.alias

    -> da fehlt die Eigenschaft!


    Gruesse aus Berlin schickt Robert - MVP Exchange Server

    Mittwoch, 26. März 2014 10:47
  • Vielen Dank!

    Jetzt funktioniert es mit PrimarySmtpAddress, hatte es schon versucht, aber keine Werte bekommen. Jetzt funktionierts.

    Danke!"

    Mittwoch, 26. März 2014 11:25