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

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

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

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

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

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

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

1) Планировщик заданий (только для запуска, опция выключения отсутствует)

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

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

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

Проблема в разрешениях? Откуда мне это знать?

Проблема в том, что «это выглядит как запланированное, но на самом деле это не так»?

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

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

решение1

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

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

  1. Скрипты не отправляют почту. Мне нужен smtp-реле моего провайдера, но его слишком сложно найти.
  2. Я тестирую на Win10 preview, а не на 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!

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

решение2

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

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

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

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

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

решение3

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

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

Связанный контент