michi-ffm
Goto Top

Nach PDF suchen und aktuelle per Mail senden

Hallo Zusammen,

kann mir evtl jemand dieses Skript erweitern/ändern?

@echo off & setlocal
set "SMTP=+++++"  
set "SUBJECT=Mini01-04 Excel prüfen"  
set "FROM=Powershell@%computername%"  
set "TO=skript@domain.de"  

powershell -Executionpolicy ByPass -Command "$report = (gci '\\192.168.74.70\excel\*' -Include '*****.pdf'' | %%{$result = @{$true='OK';$false='FEHLER'}[$_.LastWriteTime.Date -eq (get-date).Date]; \"Datum fur $($_.Fullname) : ^<span style="color:$(@{'OK'='green';'FEHLER'='red'}[$result])"^> ^<strong^>$result ^</strong^>^</span^>^<br^>^<br^>\"}) -join [environment]::Newline; Send-MailMessage -To '%TO%' -Subject '%SUBJECT%' -BodyAsHtml -Body $report -SmtpServer '%SMTP%' -From '%FROM%'"  


Dieser Skript soll mir sämtliche PDF Dateien nach Änderungsdatum suchen und mir per mail die Aktuellen auflisten.
Ist das möglich?

Content-ID: 328249

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

Ausgedruckt am: 25.11.2024 um 16:11 Uhr

132272
132272 02.02.2017 aktualisiert um 14:39:13 Uhr
Goto Top
@echo off & setlocal
set "SMTP=+++++"  
set "SUBJECT=Mini01-04 Excel prüfen"  
set "FROM=Powershell@%computername%"  
set "TO=skript@domain.de"  

powershell -Executionpolicy ByPass -Command "$report = (gci '\\192.168.74.70\excel\*' -Include '*.pdf' | ?{$_.LastWriteTime.Date -eq (get-date).Date} | %%{\"Datum fuer '$($_.Fullname)' ist aktuell.\"}) -join '<br>'; Send-MailMessage -To '%TO%' -Subject '%SUBJECT%' -BodyAsHtml -Body $report -SmtpServer '%SMTP%' -From '%FROM%'"  
Wie wärs sich erst mal mit "purem Powershell" zu beschäftigen anstatt diesem Batch-Mix? Der macht es dir nicht gerade einfach für den Anfang!
Schreib dem PS Code ordentlich in eine PS1 und starte das Skript per powershell -File script.ps1

Gruß
michi-ffm
michi-ffm 02.02.2017 um 15:40:35 Uhr
Goto Top
Vielen Dank hat funktioniert nur wäre es vorteilhaft, wenn in der Mail Zeilenbrüche erscheinen.
Das <br> funktioniert in diesem Fall leider nicht
132272
132272 02.02.2017 aktualisiert um 15:47:41 Uhr
Goto Top
Doch geht hier einwandfrei.
Wenn du keine Zeilenumbrüche siehst nutzt du keine HTML-Ansicht!
michi-ffm
michi-ffm 02.02.2017 um 15:48:46 Uhr
Goto Top
HTML Ansicht benutze ich, beim alten Code habe ich die Zeilenumbrüche in dem neuen Code nicht
132272
Lösung 132272 02.02.2017 aktualisiert um 15:50:20 Uhr
Goto Top
Siehst du doch hier Jüngling ...
Powershell - Zeilenumbruch in Mail
michi-ffm
michi-ffm 02.02.2017 um 15:51:05 Uhr
Goto Top
Hier einen Auszug aus der Main
Zudem zeigt der mir die an, was mich sehr wundert

\Users\Michael\Desktop\test8\1 - Kopie (13).pdf' ist aktuell.^Datum fuer 'C:\Users\Michael\Desktop\test8\1 - Kopie (14).pdf' ist aktuell.^Datum fuer 'C:\Users\Michael\Desktop\test8\1 - Kopie (2).pdf' ist aktuell.^Datum fuer 'C:\Users\Michael\Desktop\test8\1 - Kopie (3).pdf' ist aktuell.^Datum fuer 'C:\Users\Michael\Desktop\test8\1 - Kopie (4).pdf' ist aktuell.^Datum fuer 'C:\Users\Michael\Desktop\test8\1 - Kopie (5).pdf' ist aktuell.^Datum fuer 'C:\Users\Michael\Desktop\test8\1 - Kopie (6).pdf' ist aktuell.^Datum fuer 'C:\Users\Michael\Desktop\test8\1 - Kopie (7).pdf' ist aktuell.^Datum fuer 'C:\Users\Michael\Desktop\test8\1 - Kopie (8).pdf' ist aktuell.^Datum fuer 'C:\Users\Michael\Desktop\test8\1 - Kopie (9).pdf' ist aktuell.^Datum fuer 'C:\Users\Michael\Desktop\test8\1 - Kopie.pdf' ist aktuell.^Datum fuer 'C:\Users\Michael\Desktop\test8\1.pdf' ist aktuell.

Zudem zeigt der mir die
an, was mich sehr wundert
michi-ffm
michi-ffm 02.02.2017 um 15:56:12 Uhr
Goto Top
<br /> hat funktioniert Trotzdem vielen Dank nochmal
132272
Lösung 132272 02.02.2017 aktualisiert um 15:57:01 Uhr
Goto Top
Dann hast du die falsche Version kopiert...

geht, ich bin wech.
michi-ffm
michi-ffm 02.02.2017 aktualisiert um 16:11:21 Uhr
Goto Top
Jedoch, wenn die PDF älter sind und in dem Ordner keine Aktuellen Dateien sind, funktioniert der skript nicht bzw. sendet keine Mail mit keine aktuellen Dateien
132272
132272 02.02.2017 aktualisiert um 16:35:43 Uhr
Goto Top
Dann packst du einfach noch eine IF-Abfrage rein die prüft ob der report leer ist, man oh man, hier muss man echt alles vorbeten face-sad
michi-ffm
michi-ffm 03.02.2017 um 11:42:38 Uhr
Goto Top
But how,

sorry ich habe noch nie in powershell gearbeitet, dieses projekt ist eine einmalige sache.

If schleifen kann ich nur in PHP jedoch die Syntax in Powershell sind mir echt schwer face-sad
132272
Lösung 132272 03.02.2017 aktualisiert um 12:04:42 Uhr
Goto Top
michi-ffm
michi-ffm 03.02.2017 um 12:13:01 Uhr
Goto Top
Vielen Dank für den Link hat wunderbar geklappt

powershell -Executionpolicy ByPass -Command "$report = (gci 'C:\Users\Michael\Desktop\1\*' -Include '*.pdf' | ?{$_.LastWriteTime.Date -eq (get-date).Date} | %%{\"Datum fuer '^<a href=.'$($_.Fullname)'.^> ^</a^> ' ist aktuell.\"}) -join '<br/^>'; if($report){Send-MailMessage -To '%TO%' -Subject '%SUBJECT%' -BodyAsHtml -Body $report -SmtpServer '%SMTP%' -From '%FROM%'}else{Send-MailMessage -To '%TO%' -Subject '%SUBJECT%' -BodyAsHtml -Body 'Keine Aktuelle PDFS ' -SmtpServer '%SMTP%' -From '%FROM%'}"  
132272
132272 03.02.2017 aktualisiert um 12:35:53 Uhr
Goto Top
Na also geht doch wenn man sich etwas anstrengt face-smile
michi-ffm
michi-ffm 03.02.2017 um 12:47:52 Uhr
Goto Top
Vielen Dank!

Hätte nicht gedacht das es doch so leicht ist face-smile