Bnicola Geschrieben 10. Dezember 2018 Geschrieben 10. Dezember 2018 Hallo, aus einer CSV-Datei sollen die Datensätze ausgeben werden, deren Tag- und Monatsangaben mit dem aktuellen Tags-und Monatsangaben übereinstimmen. Übereinstimmende Datensätze sollen dann in einer E-Mail geschrieben und versendet werden. Leider bekomme ich das nicht hin. $NameKunde = (Import-CSV 'c:\temp\kundenstamm.csv' -delimiter ',')| ?{(get-date $_.TagMonat).Date -eq (get-date).Date} If ($NameKunde){Send-Mailmessage -From @-to @ -Subject "Kundeheute" -Body $NameKunde -BodyAsHtml -Encoding UTF8 -SMTPServer -UseSSL -Credential $creds } Wie verwende ich den Get-Date.Day und Get-Date.Month um nur den Vergleich über den Tag und Monat laufen zu lassen.
äymm Geschrieben 11. Dezember 2018 Geschrieben 11. Dezember 2018 Naja, momentan vergleichst du ja (get-date $_.TagMonat).Date -eq (get-date).Date Wenn du nur einzelne Komponenten vergleichen willst, dann vergleich halt nur mir (get-date $_.TagMonat).Month -eq (get-date).Month Das dann nochmal für den Tag und dann und-verknüpfen
Bnicola Geschrieben 11. Dezember 2018 Autor Geschrieben 11. Dezember 2018 Hi äymm, dank für deinen Hinweis, war irgendwie blind. Genau so funktioniert es jetzt. $NameKunde = (Import-CSV 'c:\temp\Kundenstamm.csv' -delimiter ',')| ?{(get-date $_.heute).Day -eq (get-date).Day -and (get-date $_.heute).Month -eq (get-date).Month} If ($NameKunde){Send-Mailmessage -from @ -to @ -Subject "Kunden Heute" -Body $NameKunde -BodyAsHtml -Encoding UTF8 -SMTPServer -UseSSL -Credential $creds } vielen Dank
Bnicola Geschrieben 12. Dezember 2018 Autor Geschrieben 12. Dezember 2018 Hallo hab jetzt noch etwas an meinen Code verändert. $SMTPServer = " " $From = " " $Subject = " Kunden die heute etwas bestellt haben " $MailAddress= “ “ $NameKunde = (Import-CSV '\\xx\SAPexport\ZD406ECD1C3CA86DEB7352D.csv' -delimiter ';')| ?{(get-date $_heute).Day -eq (get-date).Day -and (get-date $_.heute).Month -eq (get-date).Month} If ($NameKunde){Send-MailMessage -SmtpServer $SMTPServer -To $MailAddress -From $From -Body $NameKunde -BodyAsHtml -Subject $Subject -encoding ([System.Text.Encoding]::UTF8)} so weit funktioniert alles, nur die Ausgabe von $NameKunde ist etwas unvorteilhaft geraten. @{Vorname=Achim; Nachname=Mustermann; Kundennummer= 2134556; Bestelldatum=12.12.2018; E-Mail =#} Es soll in etwa so aussehen, wobei die E-Mail nicht erscheinen soll: Vorname Nachname Kundennummer Bestelldatum Achim Mustermann 2134556 12.12. 2018 Hab es schon mit | ConvertTo-HTML -Fragment versucht, aber da bekomme ich eine String - Fehlermeldung. Bräuchte eure Hilfe. Danke
äymm Geschrieben 14. Dezember 2018 Geschrieben 14. Dezember 2018 Zwei Kleinigkeiten: Verwende keine Bindestriche in Property-Namen ("E-Mail" ist ungünstig, nimm lieber EMail). und was soll "=#" bedeuten?
Bnicola Geschrieben 14. Dezember 2018 Autor Geschrieben 14. Dezember 2018 Die Zeilen aus der CSV-Datei , die ich auslese, sehen so aus. Vorname;Nachname ;Kundennummer;Bestelldatun;E-Mail xxxx;xxxxx;0123452;12.12.1969;# xxxx;xxxxx;0123376;11.01.1992;# xxxx;xxxxx;2343234;11.05.1963; xxx@xxxxx.xx leider wird diese ausmatisch erstellt und ich kann deswegen auch die Spaltenbezeichnung nicht ändern. Wenn ich nun das Powsershell -Script ausführe bekomme ich folgene Ausgabe: @{Vorname=Achim; Nachname=Mustermann; Kundennummer= 2134556; Bestelldatum=12.12.2018; E-Mail =#} Das ist sehr schlecht leserlich, dieshalb bräuchte ich diesen String etwas mehr geordet, in etwa so: Vorname Nachname Kundennummer Bestelldatum Achim Mustermann 2134556 12.12. 2018
MamaSchlumpf Geschrieben 15. Dezember 2018 Geschrieben 15. Dezember 2018 $NameKunde ist ja auch jeweils die ganze Zeile. Was du da bekommst, ist also der Hash mit den Zeilenwerten. Du kannst auf die einzelnen Items zugreifen, indem du sie separat angibst, z.B. $NameKunde.Vorname ergibt dann Achim. Wird dann halt ein wenig umständlicher, aber damit kannst du dir die Ausgabe dann hinbasteln, wie du sie brauchst.
Bnicola Geschrieben 17. Dezember 2018 Autor Geschrieben 17. Dezember 2018 Hi MamaSchlumpf, habe mit den einzelnen Items probiert, funktioniert zwar auch, aber sobald ich mehr als nur eine Zeile ausgeben möchte, Vorname Nachname Kundennummer Bestelldatum Achim Mustermann 2134556 12.12. 2018 Klaus Mustermann 2144447 12.12.2018 bekommte ich die Werte in den Items hintereinander ausgegeben. Beispiel: $NameKunde.Vorname Ausgabe: Achim Klaus $NameKunde.Nachname Ausgabe: Mustermann Mustermann usw. Leider weiß ich nicht, wie ich dies in tabellarischer Form dargestellt hinbekomme.
MamaSchlumpf Geschrieben 17. Dezember 2018 Geschrieben 17. Dezember 2018 Versuchs mal mit ForEach: ForEach($Kunde in $NameKunde) { Write-Host -Object $Kunde.vorname }
Empfohlene Beiträge
Erstelle ein Benutzerkonto oder melde Dich an, um zu kommentieren
Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können
Benutzerkonto erstellen
Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!
Neues Benutzerkonto erstellenAnmelden
Du hast bereits ein Benutzerkonto? Melde Dich hier an.
Jetzt anmelden