Jump to content

Powershell Variable leeren?


Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Empfohlene Beiträge

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
}
Link zu diesem Kommentar

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"

Link zu diesem Kommentar

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üße
g2sm

Link zu diesem Kommentar
Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Schreibe einen Kommentar

Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung jetzt entfernen

  Only 75 emoji are allowed.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor-Fenster leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

×
×
  • Neu erstellen...