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?
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?
Please also mark the comments that contributed to the solution of the article
Content-Key: 662336
Url: https://administrator.de/contentid/662336
Printed on: April 23, 2024 at 11:04 o'clock
10 Comments
Latest comment
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
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
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"
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
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
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
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. ...
Variablen werden hier erklärt:
https://docs.microsoft.com/de-de/powershell/module/microsoft.powershell. ...
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. ...
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/