Назад | Перейти на главную страницу

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Во время тестирования скрипта это казалось удобнее работать на моей машине 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!

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

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

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