Как мне запланировать запуск командного файла при запуске или завершении работы?

У меня есть 2 пакетных файла, которые отправляют электронные письма, предназначенные для уведомления о выключении или запуске сервера. Пакетные файлы вызывают exe-файл с одним аргументом - сообщение для отправки. Exe происходит из программы vb.net, используя system.net.mail.

Пакетные файлы работают должным образом из командной строки, и электронные письма принимаются.

Теперь я хочу, чтобы эти командные файлы запускались автоматически при запуске ОС и при ее выключении, без необходимости входа пользователя.

Я попытался протестировать это на машине с Win 8.1, которая, по моему мнению, должна работать так же, как на Server 2012 R2. Если это плохое предположение, пожалуйста, сообщите.

Итак, вот что я попробовал:

1) Task Scheduler (но только для запуска, нет опции отключения)

2) Редактор локальной групповой политики> Конфигурация компьютера> Параметры Windows> Сценарии (запуск / завершение работы)

В обоих случаях установка показалась довольно простой, но электронные письма никогда не отправлялись.

Может ли кто-нибудь дать мне идеи о соображениях, о которых я явно не думаю?

Это проблема разрешений? Откуда мне это знать?

Проблема "Это выглядит запланированной, но не"?

Проблема в том, что командные файлы не могут быть использованы таким образом?

Так как я делаю это впервые, я почти уверен, что упускаю что-то простое.

3 ответа

Решение

Изучение и использование всех комментариев и ответов на самом деле помогло решить мою проблему, но, как это иногда бывает, реальная проблема была несколько иной. Итак, я чувствую себя обязанным опубликовать то, что оказалось для меня актуальной проблемой на тот случай, если кто-то еще попадется на эту же "ошибку".

Во время тестирования скриптов работать на моей машине с Win 8.1 было удобнее; Оказывается, это не так. Я предполагал, что моя машина с Win 8.1 будет работать идентично серверу 2012 R2; мое предположение было неверным.

В тот момент, когда я перенес все на свои серверы 2012 R2, сценарии работали безупречно и с тех пор. Я не могу объяснить, почему машина Win 8.1 отреагировала по-другому, просто так.

Поэтому я решил больше не использовать компьютер с Win 8 или 8.1 для тестирования сценариев запуска / завершения работы, просто сделайте это на целевом сервере.

(Извините за задержку с ответом, я был вне города в длительной поездке)

Это действительно не ответ из-за двух ограничений, указанных ниже, но это слишком долго для комментария, так что..

Я сделал простой тест со следующими двумя недостатками:

  1. Скрипты не отправляют электронную почту. Мне нужно реле SMTP моего провайдера, но это слишком хлопотно, чтобы найти его.
  2. Я тестирую предварительный просмотр Win10, а не Win8.1. Это все, что у меня есть этим вечером.

Внутри Local Group Policy Editor > Computer Configuration > Windows Settings > Scripts (Startup/Shutdown)Я положил один сценарий запуска PowerShell в startup каталог и один сценарий PowerShell выключения в shutdown каталог.

Я приложил особые усилия, чтобы добавить сценарии под Powershell Scripts вкладка внутри каждого из узлов политики запуска и завершения работы.

Я убедился, что у меня есть каталог с именем c:\temp поскольку я был слишком ленив, чтобы написать это в жизнь.

Я также удостоверился, что сценарии powershell разрешены, выполнив:

Set-ExecutionPolicy -ExecutionPolicy RemoteSigned

Вот скрипт запуска:

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

Вот скрипт выключения:

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

Затем я перезагрузил компьютер. Вот содержание c:\temp\log.txt файл:

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

Я ожидал бы того же результата с отправкой почты, но, конечно, нельзя быть уверенным, пока кто-то не попытается..

Перейдите в окно просмотра событий, найдите события безопасности входа и выхода, щелкните правой кнопкой мыши на нем и добавьте задачу для этого события, которая отправляет электронное письмо.

Это лучший способ.

Другие вопросы по тегам