nrw1040
Goto Top

Batch-Datei mit Aufgabenplanung ausführen

Hallo,
ich möchte bei meinen Server eine Benachrichtigungen kommen, wenn diese neu starten oder herunterfahren.
Ich nutze Windows Server 2019.
Folgende Umsetzung habe ich realisiert:
Ich habe die folgende Batch-Datei erstellt (siehe Anhang).
Wenn ich diese so durch Doppelklick ausführe klappt auch alles wunderbar.
In der Aufgabenplanung habe ich es so eingestellt, dass die Datei ausgeführt werden soll bei dem Ereignis ID 1074, welches ja bei einem Neustart herausgegeben wird.
Starte ich die Aufgabe manuell klappt auch alles. Starte ich jedoch dann den Server neu wird die Aufgabe nicht ausgeführt, vielmehr steht dann dort "Die letzte Ausführung dieser Aufgabe wurde durch den Benutzer beendet".
Was mache ich falsch?
2021-03-13 17_09_13-wn-srv02 - wn-srv02 - remotedesktopverbindung
2021-03-13 17_10_15-wn-srv02 - wn-srv02 - remotedesktopverbindung
2021-03-13 17_03_57-wn-srv02 - wn-srv02 - remotedesktopverbindung
2021-03-13 17_09_26-wn-srv02 - wn-srv02 - remotedesktopverbindung
2021-03-13 17_10_34-wn-srv02 - wn-srv02 - remotedesktopverbindung
2021-03-13 17_10_25-wn-srv02 - wn-srv02 - remotedesktopverbindung

Content-ID: 662336

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

Ausgedruckt am: 22.11.2024 um 05:11 Uhr

em-pie
em-pie 13.03.2021 aktualisiert um 17:35:34 Uhr
Goto Top
Moin,

verschiebe das Script mal vom Deskop deines Admins nach z.B. C:\scripte
Anschließend den Task dahingehend anpassen, dass das Systemkonto die Mail versendet.


Ferner ist es eigentlich unnötig, eine batch zu starten, die wiederum ein PS-Script beinhaltet.
Erstelle eine info_mail.ps1 und lasse die starten. der TaskScheduler kann ja auch mit Powershell-Scripten umgehen bzw. kann man ja auch
powershell.exe -ExecutionPolicy Bypass -File "C:\scripte\info_mail.ps1"  
ausführen lassen.


Edit: Zudem können Fehler beim Send-MailMessage innerhalb eines PS-Scripte besser abgefangen werden.
Wenn du den Befehl aus der BAtch heraus ausführst, ist es mitunter etwas schwieriger...


Gruß
em-pie
nrw1040
nrw1040 13.03.2021 um 17:50:52 Uhr
Goto Top
Danke für deine Tips!
Mit dem Konto SYSTEM hatte ich es schon probiert-leider ohne Erfolg. Gleiches gilt auch für den Speicherort direkt auf c:\
Wie genau erstelle ich denn ein PS-Script?
em-pie
em-pie 13.03.2021 um 18:47:30 Uhr
Goto Top
Zitat von @nrw1040:
Wie genau erstelle ich denn ein PS-Script?
Genauso wie eine batch-Datei erstellt wird. Nur, dass sie nicht *.bat oder *.cmd lautet, sondern *.ps1
Aufruf ist dann wie oben skizziert.


Prüfe mal, ob das Skript überhaupt gestartet wird.
Zu beginn einfach mal echo Ich wurde gestartet>>c:\test.txt in die batch schreiben und auf c:\ nach der test.txt schauen
Kommt die Powershell zum Einsatz, dann Add-Content c:\output.txt "Ich wurde gestartet" -Append
nrw1040
nrw1040 13.03.2021 um 19:20:37 Uhr
Goto Top
Also ich habe jetzt eine ganz einfache ps1 erstellt nur mit dem ersten Befehl - aber eine txt-Datei wird nicht ausgegeben.
Wo mache ich den Fehler?
2021-03-13 19_19_31-wn-srv02 - wn-srv02 - remotedesktopverbindung
em-pie
em-pie 13.03.2021 um 19:40:30 Uhr
Goto Top
Bei der Powershell musst du ja auch den Add-Content-Teil nutzen...
nrw1040
nrw1040 13.03.2021 um 20:06:56 Uhr
Goto Top
Ah ok,
also manuell klappt es wenn ich das Skript starte in der Aufgabenplanung.
Jedoch beim Neustart des Rechners passiert wieder nichts.
Es kommt wieder die Meldung bei der Aufgabe:
"Die letzte Ausführung dieser Anwendung wurde durch den Benutzer beendet"
2021-03-13 20_04_41-wn-srv02 - wn-srv02 - remotedesktopverbindung
nrw1040
nrw1040 13.03.2021 um 20:18:43 Uhr
Goto Top
Ah,
Fehler gefunden! Jetzt klappt es auch beim Neustart! Super!
Wie bekomme ich denn jetzt noch das mit dem Mailversand in das Skript? 1:1 vom Batch kann ich es ja nicht übernehmen oder?
em-pie
em-pie 13.03.2021 um 20:33:25 Uhr
Goto Top
Den eigentlich powershell-Befehl hast du ja schon. Send-MailMessage

Variablen werden hier erklärt:
https://docs.microsoft.com/de-de/powershell/module/microsoft.powershell. ...
em-pie
em-pie 14.03.2021 aktualisiert um 11:05:30 Uhr
Goto Top
Zitat von @em-pie:

Den eigentlich powershell-Befehl hast du ja schon. Send-MailMessage

Variablen werden hier erklärt:
https://docs.microsoft.com/de-de/powershell/module/microsoft.powershell. ...

Hier einmal (ungetestet) eine Mögliche Variante:
## SendMail

$computer = Get-ChildItem env:COMPUTERNAME
$SMTPServer = "myServer"  

$SMTPFrom = "ich@contoso.tld"  
$SMTPTo = "du@contoso.tld"  
$SMTPSubject = "[INFO] $computer neugestartet"  
$SMTPBody = "$computer: Neustart benötigt für Updates"  

Send-MailMessage -SmtpServer $SMTPServer -From $SMTPFrom -To $SMTPTo -Subject $SMTPSubject -Body $SMTPBody

## NOTES
## Send-Mailmessage gilt als nicht sicher. Besser wäre es, MailKit einzusetzen:
## https://adamtheautomator.com/powershell-email/
nrw1040
nrw1040 15.03.2021 um 20:35:57 Uhr
Goto Top
Super, vielen Dank!