Benutzer mit den meisten Antworten
Powershell mehrere Pfade einbinden

Frage
-
Hallo zusammen,
leider sind meine Kentnisse zu Powershell fast 0.
Dieses Skript funktioniert einwandfrei:
@echo off & setlocal set "SMTP=*****" set "SUBJECT=******" set "FROM=Powershell@%computername%" set "TO=******" powershell -Executionpolicy ByPass -Command "
$report = (gci '\\192.168.85.70\testordner1\*' -Include '1111.xls','2222.xls','3333.xls' |
%%{\"Datum für $($_.Name) : $(@{$true='OK';$false='FEHLER'}[$_.LastWriteTime.Date -eq (get-date).Date])\"})
-join [environment]::Newline; Send-MailMessage -To '%TO%' -Subject '%SUBJECT%' -Body $report -SmtpServer '%SMTP%'
-From '%FROM%'"
Jedoch möchte ich nun mehrere Pfade einbinden/prüfen lassen!
Wie kann ich diese Pfade noch hinzufügen:
\\192.168.85.70\testordner1\*' -Include '1111.xls','2222.xls','3333.xls'
\\192.168.85.71\testordner2\*' -Include '1111.xls','2222.xls','3333.xls'
\\192.168.85.72\testordner3\*' -Include '1111.xls','2222.xls','3333.xls'
\\192.168.85.73\testordner4\*' -Include '1111.xls','2222.xls','3333.xls'
- Bearbeitet michi-ffm Dienstag, 17. Januar 2017 15:44
Antworten
-
Könnten Sie mir evtl sagen wie?
Da ich leider kaum Kenntnisse habe!
Hast Du es überhaupt einmal versucht?
$SMTP="*****" $SUBJECT="******" $FROM="Powershell@"+$env:COMPUTERNAME $TO="******" $paths = @('\\192.168.85.70\testordner1\*','\\192.168.85.70\testordner2\*','\\192.168.85.70\testordner3\*','\\192.168.85.70\testordner4\*') foreach($path in $paths) { $report = (gci $path -Include '1111.xls','2222.xls','3333.xls' | %%{\"Datum für $($_.Name) : $(@{$true='OK';$false='FEHLER'}[$_.LastWriteTime.Date -eq (get-date).Date])\"}) -join [environment]::Newline; Send-MailMessage -To $TO -Subject $SUBJECT -Body $report -SmtpServer $SMTP -From $FROM }
Evtl. noch die ExecutionPolicy anpassen:
https://technet.microsoft.com/de-de/library/ee176961.aspx?f=255&MSPPError=-2147217396
Freundliche Grüße
Sandro
MCSA: Windows Server 2012
Fachinformatiker Fachrichtung Systemintegration (IHK, 07/2013)
- Als Antwort vorgeschlagen SandroReiter Donnerstag, 19. Januar 2017 14:23
- Als Antwort markiert Denniver ReiningMVP, Moderator Freitag, 20. Januar 2017 12:38
Alle Antworten
-
Hallo Michi,
meinst Du so?
@echo off & setlocal set "SMTP=*****" set "SUBJECT=******" set "FROM=Powershell@%computername%" set "TO=******" powershell -Executionpolicy ByPass -Command " $paths = @('\\192.168.85.70\testordner1\*','\\192.168.85.70\testordner2\*','\\192.168.85.70\testordner3\*','\\192.168.85.70\testordner4\*') foreach($path in $paths) { $report = (gci $path -Include '1111.xls','2222.xls','3333.xls' | %%{\"Datum für $($_.Name) : $(@{$true='OK';$false='FEHLER'}[$_.LastWriteTime.Date -eq (get-date).Date])\"}) -join [environment]::Newline; Send-MailMessage -To '%TO%' -Subject '%SUBJECT%' -Body $report -SmtpServer '%SMTP%' -From '%FROM%' } "
Freundliche Grüße
Sandro
MCSA: Windows Server 2012
Fachinformatiker Fachrichtung Systemintegration (IHK, 07/2013)
- Bearbeitet SandroReiter Dienstag, 17. Januar 2017 16:38
-
Hallo Michi,
meinst Du so?
@echo off & setlocal set "SMTP=*****" set "SUBJECT=******" set "FROM=Powershell@%computername%" set "TO=******" powershell -Executionpolicy ByPass -Command " $paths = @('\\192.168.85.70\testordner1\*','\\192.168.85.70\testordner2\*','\\192.168.85.70\testordner3\*','\\192.168.85.70\testordner4\*') foreach($path in $paths) { $report = (gci $path -Include '1111.xls','2222.xls','3333.xls' | %%{\"Datum für $($_.Name) : $(@{$true='OK';$false='FEHLER'}[$_.LastWriteTime.Date -eq (get-date).Date])\"}) -join [environment]::Newline; Send-MailMessage -To '%TO%' -Subject '%SUBJECT%' -Body $report -SmtpServer '%SMTP%' -From '%FROM%' } "
Leider sagt er mir das $paths entweder falsch geschrieben ist oder kann dieses nicht finden, ebenso mit foreach!
Diesen Code habe ich in eine Batch Datei, vermute das es daran liegt!
- Bearbeitet michi-ffm Dienstag, 17. Januar 2017 17:21
-
Diesen Code habe ich in eine Batch Datei, vermute das es daran liegt!
Freundliche Grüße
Sandro
MCSA: Windows Server 2012
Fachinformatiker Fachrichtung Systemintegration (IHK, 07/2013)
-
>starte das Skript als .ps1
>> Könnten Sie mir evtl sagen wie?
>> leider sind meine Kentnisse zu Powershell fast 0.
Michi, auf dem "fast 0" - Niveau ist es schwierig mit Aufgaben zu helfen, die "mindestens 1-2"-Niveau erfordern. ;-)Wenn du hier sinnvoll weiterkommen willst, wirst du nicht umhin kommen, dich mal etwas mit den Powershell Grundlagen zu befassen. Diese lassen sich in einem Forum nur sehr schlecht vermitteln. Für die Gundlagen siehe z.B. hier und hier.
Grüße, DenniverBlog: http://bytecookie.wordpress.com
Neu: Powershell Code Manager v5 ! Link
(Schneller, besser + komfortabler scripten.)
Hilf mit und markiere hilfreiche Beiträge mit dem "Abstimmen"-Button (links) und Beiträge die eine Frage von dir beantwortet haben, als "Antwort" (unten).
Warum das Ganze? Hier gibts die Antwort.
-
Könnten Sie mir evtl sagen wie?
Da ich leider kaum Kenntnisse habe!
Hast Du es überhaupt einmal versucht?
$SMTP="*****" $SUBJECT="******" $FROM="Powershell@"+$env:COMPUTERNAME $TO="******" $paths = @('\\192.168.85.70\testordner1\*','\\192.168.85.70\testordner2\*','\\192.168.85.70\testordner3\*','\\192.168.85.70\testordner4\*') foreach($path in $paths) { $report = (gci $path -Include '1111.xls','2222.xls','3333.xls' | %%{\"Datum für $($_.Name) : $(@{$true='OK';$false='FEHLER'}[$_.LastWriteTime.Date -eq (get-date).Date])\"}) -join [environment]::Newline; Send-MailMessage -To $TO -Subject $SUBJECT -Body $report -SmtpServer $SMTP -From $FROM }
Evtl. noch die ExecutionPolicy anpassen:
https://technet.microsoft.com/de-de/library/ee176961.aspx?f=255&MSPPError=-2147217396
Freundliche Grüße
Sandro
MCSA: Windows Server 2012
Fachinformatiker Fachrichtung Systemintegration (IHK, 07/2013)
- Als Antwort vorgeschlagen SandroReiter Donnerstag, 19. Januar 2017 14:23
- Als Antwort markiert Denniver ReiningMVP, Moderator Freitag, 20. Januar 2017 12:38
-
Vielen Dank für die Antworten habe es nun so gelöst:
@echo off & setlocal set "SMTP=*******" set "SUBJECT=Mini01-04 Excel" set "FROM=Powershell@%computername%" set "TO=******" powershell -Executionpolicy ByPass -Command "$report = (gci '\\192.168.00.1\excel\*','\\192.168.00.2\excel\*','\\192.168.00.3\excel\*','\\192.168.00.4\excel\*' -Include '18277.xls','19012.xls','19291.xls' | %%{\"Datum fur $($_.Fullname) : $(@{$true='OK';$false='FEHLER'}[$_.LastWriteTime.Date -eq (get-date).Date])`n\"}) -join [environment]::Newline; Send-MailMessage -To '%TO%' -Subject '%SUBJECT%' -Body $report -SmtpServer '%SMTP%' -From '%FROM%'"
Besteht die Möglichkeit, den output in der Mail farbig zu gestalten?
D.h. Wenn Fehler dann Rot anzeigen und bei Ok grün anzuzeigen, ist das möglich?
Ausgabe :
Datum fur \\192.168.00.1\excel\18277.xls : OK
Datum fur \\192.168.00.1\excel\19012.xls : OK
Datum fur \\192.168.00.1\excel\19291.xls : OK
Datum fur \\192.168.00.2\excel\18277.xls : OK
Datum fur \\192.168.00.2\excel\19012.xls : OK
Datum fur \\192.168.00.2\excel\19291.xls : OK
Datum fur \\192.168.00.3\excel\18277.xls : OK
Datum fur \\192.168.00.3\excel\19012.xls : OK
Datum fur \\192.168.00.3\excel\19291.xls : OK
Datum fur \\192.168.00.4\excel\18277.xls : OK
Datum fur \\192.168.00.4\excel\19012.xls : OK
Datum fur \\192.168.00.4\excel\19291.xls : OK -
Besteht die Möglichkeit, den output in der Mail farbig zu gestalten?
Hi,
ja, das geht Send-MailMessage kennt anstelle des Parameters -Body auch -BodyAsHtml. Wenn du denn nutzt kannst Du deine Information einfärben, formatieren usw. wenn Du eben entsprechenden HTML Code einfügst.
Kleines Beispiel für den Parameter-BodyAsHtml "<font size='8' color='red'><b>Test</b>"
weil -BodyAsHtml den body nicht ersetzt sondern lediglich ein Switch Parameter sst muesste man es eingenlich so schreiben.
-BodyAsHtml -Body "<font size='8' color='red'><b>Test</b>"
Beste Gruesse
brima
- Bearbeitet brima Freitag, 20. Januar 2017 16:00
-
Hi,
das liegt hier dran ... </b>" $report ... das musst du wenn schon so schreiben ... </b> $report " ... aber so wird dein Report nicht farbig wie du dir das vorstellst, sondern du muss dann eigentlich den Inahlt von $report mit HTML "verkleiden". Such mal über Google nach send-mailmessage und bodyashtml da solltest du schon Beiträge mit Beispielen finden wie man das so macht.
Click
- Bearbeitet brima Freitag, 20. Januar 2017 16:17