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

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

Printed on: April 23, 2024 at 11:04 o'clock

Member: em-pie
em-pie Mar 13, 2021 updated at 16:35:34 (UTC)
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
Member: nrw1040
nrw1040 Mar 13, 2021 at 16:50:52 (UTC)
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?
Member: em-pie
em-pie Mar 13, 2021 at 17:47:30 (UTC)
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
Member: nrw1040
nrw1040 Mar 13, 2021 at 18:20:37 (UTC)
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
Member: em-pie
em-pie Mar 13, 2021 at 18:40:30 (UTC)
Goto Top
Bei der Powershell musst du ja auch den Add-Content-Teil nutzen...
Member: nrw1040
nrw1040 Mar 13, 2021 at 19:06:56 (UTC)
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
Member: nrw1040
nrw1040 Mar 13, 2021 at 19:18:43 (UTC)
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?
Member: em-pie
em-pie Mar 13, 2021 at 19:33:25 (UTC)
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. ...
Member: em-pie
em-pie Mar 14, 2021 updated at 10:05:30 (UTC)
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/
Member: nrw1040
nrw1040 Mar 15, 2021 at 19:35:57 (UTC)
Goto Top
Super, vielen Dank!