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-Key: 328249

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

Printed on: May 6, 2024 at 07:05 o'clock

Mitglied: 132272
132272 Feb 02, 2017 updated at 13:39:13 (UTC)
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ß
Member: michi-ffm
michi-ffm Feb 02, 2017 at 14:40:35 (UTC)
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
Mitglied: 132272
132272 Feb 02, 2017 updated at 14:47:41 (UTC)
Goto Top
Doch geht hier einwandfrei.
Wenn du keine Zeilenumbrüche siehst nutzt du keine HTML-Ansicht!
Member: michi-ffm
michi-ffm Feb 02, 2017 at 14:48:46 (UTC)
Goto Top
HTML Ansicht benutze ich, beim alten Code habe ich die Zeilenumbrüche in dem neuen Code nicht
Mitglied: 132272
Solution 132272 Feb 02, 2017 updated at 14:50:20 (UTC)
Goto Top
Siehst du doch hier Jüngling ...
Powershell - Zeilenumbruch in Mail
Member: michi-ffm
michi-ffm Feb 02, 2017 at 14:51:05 (UTC)
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
Member: michi-ffm
michi-ffm Feb 02, 2017 at 14:56:12 (UTC)
Goto Top
<br /> hat funktioniert Trotzdem vielen Dank nochmal
Mitglied: 132272
Solution 132272 Feb 02, 2017 updated at 14:57:01 (UTC)
Goto Top
Dann hast du die falsche Version kopiert...

geht, ich bin wech.
Member: michi-ffm
michi-ffm Feb 02, 2017 updated at 15:11:21 (UTC)
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
Mitglied: 132272
132272 Feb 02, 2017 updated at 15:35:43 (UTC)
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
Member: michi-ffm
michi-ffm Feb 03, 2017 at 10:42:38 (UTC)
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
Mitglied: 132272
Solution 132272 Feb 03, 2017 updated at 11:04:42 (UTC)
Goto Top
Member: michi-ffm
michi-ffm Feb 03, 2017 at 11:13:01 (UTC)
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%'}"  
Mitglied: 132272
132272 Feb 03, 2017 updated at 11:35:53 (UTC)
Goto Top
Na also geht doch wenn man sich etwas anstrengt face-smile
Member: michi-ffm
michi-ffm Feb 03, 2017 at 11:47:52 (UTC)
Goto Top
Vielen Dank!

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