nagus
Goto Top

Powershell Send-MailMessage Probleme mit Empfängern

So,
kämpfe aktuell mit einem idiotischen Problem und komme nicht weiter:

Ich will 'ne Anzahl emails an Personen raushauen.

 $recipient="$($temp.mail), $($manager.UserPrincipalName)"  
$Betreff="TEST: $($n.Zusammenfassung)"  
Send-MailMessage -To $recipient -cc "$CopyEmail" -From $Absender  -Subject $Betreff -BodyAsHtml $body -SmtpServer “emailservername” -Encoding UTF8  

Alles läuft, bis auf den Punkt dass er nicht an mehrere Empfänger versendet, bzw. nix versendet.

$recipient zeigt mir die korrekten Emailadressen an, getrennt durch ein Komma und ein Leerzeichen. Eine einzelne Email Adresse geht einwandfrei raus. Mehrere aber um verrecken nicht ...
Was mache ich falsch?

Thx
Nagus

Content-ID: 627181

Url: https://administrator.de/contentid/627181

Ausgedruckt am: 24.11.2024 um 19:11 Uhr

erikro
erikro 01.12.2020 aktualisiert um 21:30:03 Uhr
Goto Top
Moin,

Du brauchst ein StringArray und keinen String.

[string[]]$recipient="$($temp.mail)", "$($manager.UserPrincipalName)"  

So wie Du das machst, kommt als eine Mailadresse irgendwie sowas an

empfaenger@acme.com,[Leertaste]manager@meinedom.com

weil das innerhalb eines Anführungszeichenpaars steht. Das wird nichts. face-wink

hth

Erik
mbehrens
Lösung mbehrens 01.12.2020 um 21:40:50 Uhr
Goto Top
Zitat von @Nagus:

 $recipient="$($temp.mail), $($manager.UserPrincipalName)"  
> $Betreff="TEST: $($n.Zusammenfassung)"  
> Send-MailMessage -To $recipient -cc "$CopyEmail" -From $Absender  -Subject $Betreff -BodyAsHtml $body -SmtpServer “emailservername” -Encoding UTF8  

Alles läuft, bis auf den Punkt dass er nicht an mehrere Empfänger versendet, bzw. nix versendet.

$recipient zeigt mir die korrekten Emailadressen an, getrennt durch ein Komma und ein Leerzeichen. Eine einzelne Email Adresse geht einwandfrei raus. Mehrere aber um verrecken nicht ...
Was mache ich falsch?

Wie man der Dokumentation entnehmen kann, erwartet der Parameter -To keinen String sondern String.
Nagus
Nagus 01.12.2020 aktualisiert um 21:49:41 Uhr
Goto Top
Hi erikro,

nö - kommt richtig raus wenn ich die Variable mit $recipients prüfe. vvvv.zzzz@blabla.de, xxxx.yyyy@blabla.de
Selbst wenn ich zwei feste Adressen in der Form
$recipient="vvvv.zzzz@blabla.de, xxxx.yyyy@blabla.de"  
angebe, passiert nix ....

hier mal das ganze Skript ohne die Funktionen, wo ich den text zusammenbaue:
foreach ($n in $Data){
        
                        $temp = Get-ADUser -Filter "displayname -like '*$($n.displayname)*'" -properties * | select givenname, samaccountname, mail, manager  
                        $manager = get-aduser $temp.manager | select GivenName, UserPrincipalName
                                               
        
                        if($n.label -eq "breakfix"){  
                                                            $Betreff = $n.Zusammenfassung
                                                            $BreakeFixBody = break-fix
                                                            $BreakeFixBody
                                                          }
                        if($n.label -eq "DeviceBack"){  
                                                            $Betreff = $n.Zusammenfassung
                                                            $DeviceReturnBody = Device-return
                                                            $DeviceReturnBody
                                                          }
                        if($n.label -eq "DeviceReplace"){  
                                                            $Betreff = $n.Zusammenfassung
                                                            $DeviceReplaceBody = Device-replace
                                                            $DeviceReplaceBody
                                                          }
                        
                        $recipient="$($temp.mail), xxxx.yyyy@blabla.de"  

                        $Betreff="TEST: $($n.Zusammenfassung)"  
                        Send-MailMessage -To $recipient -cc "$CopyEmail" -From $Absender  -Subject $Betreff -BodyAsHtml $body -SmtpServer “Mailservername” -Encoding UTF8  
                      }
Nagus
Nagus 01.12.2020 aktualisiert um 21:53:34 Uhr
Goto Top
Zitat von @mbehrens:

Wie man der Dokumentation entnehmen kann, erwartet der Parameter -To keinen String sondern String.

Okay - das sagt mir nu aber nix, dazu sind meine PS Kentnisse zu mau. Kannst Du es mir kurz erklären?
Nagus
Nagus 01.12.2020 um 21:59:26 Uhr
Goto Top
okay, mit [String[]]$recipient="xxxx", "yyyy" funktioniert es.

Kann man das auch noch anders defnieren?


Thx mbehrens
mbehrens
mbehrens 01.12.2020 um 22:22:39 Uhr
Goto Top
Zitat von @Nagus:

okay, mit [String[]]$recipient="xxxx", "yyyy" funktioniert es.

Kann man das auch noch anders defnieren?

Viele Möglichkeiten, u. a.:

$recipientList = @("empfaenger1@domain1.xyz", "empfaenger2@domain2.xyz")  
$recipientList = @(
"empfaenger1@domain1.xyz"  
"empfaenger2@domain2.xyz"  
)
$recipientList = "empfaenger1@domain1.xyz", "empfaenger2@domain2.xyz"  
$recipientList = @()
$recipientList += "empfaenger1@domain1.xyz"  
$recipientList += "empfaenger2@domain2.xyz"  
Nagus
Nagus 02.12.2020 um 00:23:11 Uhr
Goto Top
Ah Danke! D.h. es ist nur ein Array. Damit habe ich schon öfters gearbeitet. Mit Strring konnte ich nix anfangen.
erikro
erikro 02.12.2020 um 18:45:11 Uhr
Goto Top
Zitat von @Nagus:

okay, mit [String[]]$recipient="xxxx", "yyyy" funktioniert es.

Kann man das auch noch anders defnieren?


Thx mbehrens

Das war das, was ich als erste Antwort geschrieben hatte. face-wink
erikro
erikro 02.12.2020 um 18:47:03 Uhr
Goto Top
Zitat von @Nagus:

Ah Danke! D.h. es ist nur ein Array. Damit habe ich schon öfters gearbeitet. Mit Strring konnte ich nix anfangen.

Steht in meiner ersten Antwort: Du brauchst ein StringArray und keinen String. Wobei ein OjectArray auch funktioniert. Das wäre dann die Lösung mit dem $var=@().