g2sm 17 Geschrieben 30. Oktober 2014 Melden Teilen Geschrieben 30. Oktober 2014 Hallo Zusammen, ich habe mir ein Powershell Script geschrieben, welches mir Daten aus einer MSSQL DB holt und diese per Mail versenden soll. Hier bei handelt es sich immer um unterschiedliche Datensätze und E-Mail Empfänger. Das funktioniert soweit auch, jedoch immer wieder mit kleineren und einem großen Problem. 1. Wenn ich über über die Powershell ISE etwas im Script änder, die Änderungen abspeicher und das Script ausführe, werden die Änderungen beim durchlaufen nicht übernommen und es wird so durchgeführt, als wenn ich nichts geändert hätte. Ist dieses Verhalten normal? 2. Der Großteil des Scripts läuft über eine foreach schleife. Um das Verhalten aus Punkt 1. zu unterdrücken, ich ich die Idee, dass ich nach jedem Schleifen Durchgang, die angesprochenen Variablen leere. Leider scheint das nicht zu funktionieren bzw. ich verstehe es einfach falsch :) Wenn ich zb die Variable $ Variable mit dem Inhalt "Test" habe und dann"Clear-Variable $Variable" ausführe, kommt die Fehlermeldung die Variable Test (also der Inhalt der $Variable), sei nicht vorhanden. Auch logisch soweit, da es die Variable Test ja nicht gibt. Wie müsste ich das richtig machen, so dass die Variable dann wirklich leer ist und beim nächsten Durchgang neu befüllt wird? Und 3. Anstatt die E-Mail Adresse auszutauschen, wird die neue Einfach "dran gehangen": Sprich. beim ersten Durchlauf geht es nur an mail@to.de beim zweiten mal an mail@to.de mail@to.de und beim letzten mal das gleiche 5 mal (bei 5 Datensätzen). Ich denke mal das könnte ich mit Punkt 2 auch lösen, aber vllt liegt es ja an was anderem. WÄre über Tipps Dankbar, solltet ihr noch was von mir brauchen, sollte dies das kleinste Problem sein :) Vielen Dank, g2sm foreach ($row in $DataSet.Tables[0].Rows) { $MailTo = "mail@to.de" $KundenNr = $row[0].ToString().Trim() $MA = $row[1].ToString().Trim() $Datum = $row[2].ToString().Trim() $Anrede = $row[3].ToString().Trim() $Mail = $row[4].ToString().Trim() $Mitarbeiter = $row[5].ToString().Trim() $MAAnrede = $row[6].ToString().Trim() $Body = "Mail Boddy" $MailMessage.To.add($MailTo) $MailMessage.Body = $Body $MailMessage.IsBodyHTML = $true #Send Mail $SMTPClient.Send($MailMessage) Clear-Variable $XXXXXX } Zitieren Link zu diesem Kommentar
Cybquest 36 Geschrieben 30. Oktober 2014 Melden Teilen Geschrieben 30. Oktober 2014 Hi, zu 1 kann ich nix sagen. Das Verhalten hab ich hier nicht. zu 2: Variablen leeren brauchst nicht, die werden in jedem Schleifendurchgang ja neu befüllt. Da "Clear-Variable" kannst Dir also schenken zu 3: Deine Variable $MailMessage.To bekommt ja mittels "Add" immer nen Eintrag hinzugefügt. Ersetze das durch "$MailMessage.To = $MailTo" Zitieren Link zu diesem Kommentar
g2sm 17 Geschrieben 31. Oktober 2014 Autor Melden Teilen Geschrieben 31. Oktober 2014 HI, vielen Dank für deine Antwort. zu 1. Schade, wäre mal interessant gewesen ob es andere auch haben. zu 2. Interessant, wieder was dazu gelernt. danke! zu 3. Geht so leider nicht, zumindest habe ich auch mit freund google keine Lösung dazu gefunden. Ich nutze die System.Net.Mail.MailMessage Methode. Habe es nun einfach so gelöst, dass ich in der Foreach schleife immer wieder die Methode aufrufe und somit komplett alles überschrieben wird. Passt also für meine Bedürfnisse :) Vielen Dank und viele Grüßeg2sm Zitieren Link zu diesem Kommentar
Empfohlene Beiträge
Schreibe einen Kommentar
Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.