Hallo Zusammen,
ich suche mir seit Stunden einen Wolf, aber irgendwie ist die passende Antwort nie dabei, oder ich bin nicht pfiffig genug diese zu erkennen (vermutlich letzteres). Worum es geht:
Auf einem SBS2011 verwende ich die Exchange Module um Mailboxitems auszulesen und weiter zu verarbeiten. Das klappt alles soweit einwandfrei.
Das Object der Mailbody sieht etwa so aus:
<send_mail>
<recipient>charliehotel</recipient>
<sender>charliehotel</sender>
<sender_phone>+49 123456</sender_phone>
<sender_mail>charliehotel@charliehotel.de</sender_mail>
<sender_subject>Diese Testmail mit zwei Zeilen</sender_subject>
<mailbody>das ist die 1. Zeile
das ist die 2. Zeile
</mailbody>
</send_mail>
Konzentrieren wir uns auf den Part des Scriptes:
=================================================================
$arr_body = @{}
$pattern_usradm_create = 'recipient', 'sender','sender_phone','sender_mail','sender_subject','mailbody'
foreach($str_pattern in $pattern_usradm_create)
{
$str_pat = "<" + $str_pattern + ">(?<text>.*?)</" + $str_pattern + ">"
if($mailbody -match $str_pat)
{
$arr_body.Add($str_pattern, $matches.text)
}
}
$msg = New-Object -TypeName Microsoft.Exchange.WebServices.Data.EmailMessage -ArgumentList $service
$str_nickname = $arr_body.recipient
$str_mail = Get-ADObject -Filter {(mailNickname -like $str_nickname) -and (ObjectClass -eq "contact")} -properties mail
$msg.Subject = $arr_body.sender_subject
$str_body = "Diese Nachricht wurde über die Webseite blabla.de gesendet."
$str_body = $str_body + "<br> Absender: " + $arr_body.sender
$str_body = $str_body + "<br> Telefon: " + $arr_body.sender_phone
$str_body = $str_body + "<br> Mail: " + $arr_body.sender_mail
$str_body = $str_body + "<br>"
$str_body = $str_body + "<br>" + $arr_body.mailbody
=============================================================================
Das Script funktioniert tadellos, bis auf eine kleine Stelle. Sobald der <mailbody> mehrere Zeilen enthält wird der über die -match Methode (ich hoffe es ist richtig, dass ich Methode gesagt habe) gefunden.
Eine Zeile funktioniert und der Text wird hinzugefügt. Mehrere Zeilen funktionieren nicht, der Text wird nicht mehr gefunden.
Ich habe die Add-Content & Write-Host Befehle der besseren Übersicht heraus genommen. Diese schreiben nur in eine Log-Datei und machen ein Bildschirmausgabe.
Wie bringe ich mein Powershellscript nun dazu über mehrere Zeilen das Ergebnis zu liefern?
gruss
Charlie Hotel