Wie plane ich die Ausführung einer Batchdatei beim Starten oder Herunterfahren?

Wie plane ich die Ausführung einer Batchdatei beim Starten oder Herunterfahren?

Ich habe zwei Batchdateien, die E-Mails senden, die über das Herunterfahren oder Starten eines Servers informieren sollen. Die Batchdateien rufen eine EXE mit einem einzigen Argument auf, nämlich der zu sendenden Nachricht. Die EXE stammt aus einem vb.net-Programm, das system.net.mail verwendet.

Die Batchdateien funktionieren ordnungsgemäß über eine Eingabeaufforderung und E-Mails werden empfangen.

Jetzt möchte ich, dass diese Batchdateien automatisch beim Starten und Herunterfahren des Betriebssystems ausgeführt werden, ohne dass sich ein Benutzer anmelden muss.

Ich habe versucht, dies auf einem Win 8.1-Rechner zu testen, der meiner Meinung nach genauso funktionieren sollte wie auf Server 2012 R2. Wenn dies eine falsche Annahme ist, geben Sie mir bitte einen Hinweis.

Folgendes habe ich versucht:

1) Taskplaner (aber nur für den Start, es gibt keine Option zum Herunterfahren)

2) Lokaler Gruppenrichtlinien-Editor > Computerkonfiguration > Windows-Einstellungen > Skripts (Start/Herunterfahren)

In beiden Fällen schien die Einrichtung ziemlich unkompliziert, aber die E-Mails wurden nie gesendet.

Kann mir jemand Ideen zu Überlegungen geben, an die ich offensichtlich nicht denke?

Liegt das Problem an den Berechtigungen? Woher soll ich das wissen?

Liegt das Problem darin, dass es „geplant aussieht, es aber nicht ist“?

Liegt das Problem darin, dass Batchdateien nicht auf diese Weise verwendet werden können?

Da ich das zum ersten Mal mache, bin ich ziemlich sicher, dass ich etwas Grundlegendes übersehe.

Antwort1

Aufgrund der beiden unten aufgeführten Einschränkungen ist dies eigentlich keine Antwort, aber es ist zu lang für einen Kommentar, also …

Ich habe einen einfachen Test mit den folgenden zwei Mängeln durchgeführt:

  1. Die Skripte senden keine E-Mails. Ich brauche das SMTP-Relay meines ISPs, aber es ist zu umständlich, es zu finden.
  2. Ich teste auf einer Win10-Vorschau, nicht auf Win8.1. Das ist alles, was ich heute Abend habe.

Darin Local Group Policy Editor > Computer Configuration > Windows Settings > Scripts (Startup/Shutdown)habe ich ein Powershell-Startskript startupund ein Powershell-Shutdownskript in das shutdownVerzeichnis gelegt.

Powershell ScriptsIch habe besonders darauf geachtet, die Skripte unter der Registerkarte in jedem der Start- und Herunterfahrrichtlinienknoten hinzuzufügen .

Ich habe sichergestellt, dass ich ein Verzeichnis mit dem Namen habe, c:\tempda ich zu faul war, es per Skript zu erstellen.

Ich habe außerdem sichergestellt, dass Powershell-Skripte zulässig sind, indem ich Folgendes ausgeführt habe:

Set-ExecutionPolicy -ExecutionPolicy RemoteSigned

Hier ist das Startskript:

if (!(Test-Path c:\temp\log.txt)) {New-Item -ItemType file -Path c:\temp\log.txt}
$timestamp = get-date 
$string = "$timestamp UP!"
$string | Out-File -FilePath c:\temp\log.txt -Append -NoClobber

Hier ist das Shutdown-Skript:

if (!(Test-Path c:\temp\log.txt)) {New-Item -ItemType file -Path c:\temp\log.txt}
$timestamp = get-date 
$string = "$timestamp DOWN!"
$string | Out-File -FilePath c:\temp\log.txt -Append -NoClobber

Anschließend habe ich den Computer neugestartet. Hier ist der Inhalt der c:\temp\log.txtDatei:

06/01/2015 00:07:45 DOWN!
06/01/2015 00:08:10 UP!

Ich würde dasselbe Ergebnis erwarten, wenn es eine E-Mail sendet, aber man kann sich natürlich nicht sicher sein, bis man es tatsächlich versucht.

Antwort2

Das Studium und die Verwendung aller Kommentare und Antworten half mir tatsächlich, mein Problem zu lösen, aber wie das manchmal der Fall ist, war das eigentliche Problem etwas anders. Daher fühle ich mich verpflichtet, das zu posten, was sich für mich als das eigentliche Problem herausgestellt hat, falls jemand anderes in die gleiche Falle tappt.

Während des Skripttestsschienbequemer, auf meinem Win 8.1-Rechner zu arbeiten; es stellte sich heraus, dass es das nicht war. Ich hattevermutetmeine Win 8.1-Maschine würde tatsächlich identisch mit Server 2012 R2 funktionieren; meine Annahme war falsch.

Sobald ich alles auf meine 2012 R2-Server verschoben habe, funktionierten die Skripte einwandfrei und tun dies seitdem. Ich kann nicht erklären, warum die Win 8.1-Maschine anders reagierte, es war einfach so.

Meine Lösung bestand also darin, zum Testen von Start-/Herunterfahrskripten keinen Win 8- oder 8.1-Computer mehr zu verwenden, sondern dies einfach auf dem Zielserver durchzuführen.

(Entschuldigen Sie die verspätete Antwort, ich war auf einer längeren Reise außerhalb der Stadt)

Antwort3

Gehen Sie zur Ereignisanzeige, suchen Sie nach Sicherheitsereignissen beim An- und Abmeldevorgang, klicken Sie mit der rechten Maustaste darauf und fügen Sie für dieses Ereignis eine Aufgabe hinzu, die eine E-Mail sendet.

Das ist der beste Weg.

verwandte Informationen