PowerShell для управления хранилищем и файловой системой (часть 12)

Опубликовано: 18 Марта, 2023

  • PowerShell для управления хранилищем и файловой системой (часть 2)
  • PowerShell для управления хранилищем и файловой системой (часть 3)
  • PowerShell для управления хранилищем и файловой системой (часть 4)
  • PowerShell для управления хранилищем и файловой системой (часть 5)
  • PowerShell для управления хранилищем и файловой системой (часть 6)
  • PowerShell для управления хранилищем и файловой системой (часть 7)
  • PowerShell для управления хранилищем и файловой системой (часть 8)

Нельзя отрицать, что это была действительно длинная и утомительная серия статей, но это заключительная часть. В этой серии статей я показал вам, как создать сценарий, который выявляет различные типы проблем с работоспособностью хранилища, а затем отправляет оповещение по электронной почте в случае обнаружения проблемы. Самое смешное, что, несмотря на то, что я потратил год на написание этой конкретной серии (по одной части каждый месяц), я даже не дошел до разговора о диагностике на уровне файловой системы. Это может быть другой темой для другой серии. Однако прямо сейчас у нас есть работа. Моя цель в этой статье — показать вам, как автоматизировать созданный нами сценарий.

Так зачем автоматизировать скрипт? Что ж, иметь сценарий, который может выполнять проверки работоспособности хранилища, — это здорово, но на самом деле этот сценарий практичен только в том случае, если его можно запускать автоматически. В противном случае администратор должен будет не забыть запустить его. По большому счету, администраторы, скорее всего, расценят это как задачу с низким приоритетом, которую, скорее всего, пропустят. Однако после автоматизации сценарий запускается сам по себе без вмешательства администратора. Администратор подключается только при обнаружении проблемы.

Итак, сказав это, давайте приступим к работе. Насколько мне известно, не существует такого понятия, как механизм уровня PowerShell для планирования запуска сценариев в заранее определенное время. Тем не менее, диспетчер задач Windows отлично справится с этой задачей. Планировщик заданий Windows уже много лет является частью операционной системы Windows. Есть только одна проблема… Планировщик заданий Windows никогда не был предназначен для запуска сценариев PowerShell.

С точки зрения операционной системы запуск задачи из диспетчера задач Windows практически аналогичен запуску задачи из командной строки «Выполнить» на сервере. Чтобы понять, почему это проблема, попробуйте запустить сценарий PowerShell из командной строки «Выполнить». Если вы просто введете имя сценария в строке «Выполнить», Windows запустит «Блокнот». Если вы вставите./ перед именем файла сценария, Windows выдаст сообщение об ошибке, в котором говорится, что сценарий не найден. Помимо этих вопросов, есть также разрешения для рассмотрения.

К счастью, использование планировщика заданий Windows для запуска сценария PowerShell по расписанию проще, чем вы могли ожидать. Чтобы начать процесс, откройте диспетчер серверов и выберите пункт «Планировщик заданий» в меню «Инструменты». Когда откроется планировщик заданий, щелкните ссылку «Создать задание» на панели «Действия». После этого Windows отобразит диалоговое окно «Создать задачу», которое вы можете видеть на рисунке A.

Изображение 4622
Рисунок A: Windows отображает диалоговое окно «Создать задачу».

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

Следующее, что вам нужно сделать, это ввести набор учетных данных безопасности. Этот шаг может быть очень простым (вы даже можете использовать значения по умолчанию) или сложным. Причина, по которой я говорю это, заключается в том, что планировщик задач Windows ничего не знает о вашем сценарии PowerShell. Планировщик заданий Windows просто запрашивает набор учетных данных, которые можно использовать для запуска задания. Имея это в виду, рассмотрим, как работает наш сценарий PowerShell. Он запускает код локально (чего и ожидает планировщик заданий Windows), но также выполняет вызовы к удаленным системам. Таким образом, вам нужно будет убедиться, что ваш сценарий PowerShell имеет все необходимые ему разрешения.

Если все удаленные системы, запрашиваемые сценарием, существуют в том же домене Active Directory, что и сервер, на котором будет инициирован сценарий, то процесс будет простым. Вы можете использовать учетную запись администратора домена, как показано на рисунке выше, и эта учетная запись должна иметь необходимые разрешения для каждой из удаленных систем. Однако если ваш сценарий запрашивает системы из других лесов Active Directory или серверов, не присоединенных к домену, все становится сложнее. В такой ситуации вам нужно будет предоставить планировщику заданий Windows учетную запись, у которой есть разрешение на запуск сценария, но вам придется пересмотреть сценарий PowerShell, чтобы получить альтернативные учетные данные, которые можно использовать для запроса удаленных систем. Хорошая новость заключается в том, что для этого нужно использовать технику, которую вы уже изучили. Когда я показал вам, как генерировать оповещения по электронной почте, я также показал вам, как написать код для извлечения сохраненных учетных данных.

Следующим шагом в этом процессе является настройка триггера задачи. Это причудливый способ сказать, что вам нужно определить, когда должен запускаться сценарий. Просто перейдите на вкладку «Триггеры» и нажмите кнопку «Создать». Это приведет к тому, что Windows отобразит диалоговое окно «Новый триггер», которое позволит вам запланировать сценарий (существует также много других типов триггеров). Вы можете увидеть, как выглядит это диалоговое окно на рисунке B.

Изображение 4623
Рисунок B: Вам нужно будет определить расписание для запуска вашего скрипта.

Следующим шагом является определение действия. В данном случае действием является запуск скрипта. Для этого перейдите на вкладку «Действия» и нажмите кнопку «Создать». Это приведет к тому, что Windows отобразит диалоговое окно «Новое действие». Убедитесь, что для параметра «Действие» установлено значение «Запустить программу».

Теперь нам нужно выяснить, как запустить скрипт PowerShell. Как упоминалось ранее, простой ввод имени сценария не работает. Вместо ввода имени сценария введите PowerShell.exe в качестве имени программы. Затем вы можете ввести переключатель –File, а затем указать путь и имя файла в поле «Добавить аргументы». Вы можете увидеть, как это выглядит на рисунке C.

Изображение 4624
Рисунок C: Вы можете указать сценарий PowerShell в качестве аргумента.

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

Вывод

Теперь мы создали сценарий, который проверяет работоспособность диска, генерирует предупреждения при необходимости и запускается автоматически. Между прочим, запланированные сценарии PowerShell обычно автоматически закрываются после запуска. Если вы хотите сохранить результаты на экране, вы можете использовать переключатель PowerShell –NoExit. Вы можете получить полный синтаксис PowerShell.exe, введя powershell.exe /? в командной строке.

  • PowerShell для управления хранилищем и файловой системой (часть 2)
  • PowerShell для управления хранилищем и файловой системой (часть 3)
  • PowerShell для управления хранилищем и файловой системой (часть 4)
  • PowerShell для управления хранилищем и файловой системой (часть 5)
  • PowerShell для управления хранилищем и файловой системой (часть 6)
  • PowerShell для управления хранилищем и файловой системой (часть 7)
  • PowerShell для управления хранилищем и файловой системой (часть 8)
  • PowerShell для управления хранилищем и файловой системой (часть 11)