Запуск PowerShell на основе журнала событий - PullRequest
0 голосов
/ 12 декабря 2018

У меня есть скрипт аргумента командной строки, написанный на PowerShell, который принимает имя сервера из планировщика задач.Однако мое требование состоит в том, чтобы выполнить сценарий при перезапуске сервера SQL, поэтому я прикрепил сценарий PowerShell к событию 17069. Но я не могу динамически передать источник события, который в этом случае будет именем сервера.

Ниже приведен раздел с аргументами задания планировщика задач.

-Command "& 'D:\SQLJobs\PS\readErrorLogFile.ps1' '$(Source)'"

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

Screengrabfrom event viewer

Как указано в комментариях, я обновил свою работу планировщика задач с помощью приведенного ниже XMLответвление

<ValueQueries>
<Value name="server">Source</Value>
</ValueQueries>

Вышеуказанный скрипт был вставлен в <EventTrigger> Branch.

Ниже приведен сценарий ввода строки PowerShell CMD.

 param (
    [string]$server
 )

Пожалуйста, дайте мне знать, чтонеобходимо упомянуть в разделе аргументов задания планировщика задач, так как $(server) отображает в сценарии ноль.

Ответы [ 2 ]

0 голосов
/ 13 декабря 2018

Альтернативным решением может быть создание задания в агенте SQL Server и настройка расписания для запуска при запуске сервера.Таким образом, вам вообще не нужно читать из журналов событий.

0 голосов
/ 12 декабря 2018

Я думаю, что то, что вы ищете, описано здесь:

После того, как вы создали задачу из события, вам нужнощелкните его правой кнопкой мыши в планировщике задач и выполните команду Экспорт .., чтобы сохранить его в формате XML.Затем измените XML, включив в него запросы значений для значений, которые вы хотите отправить в свой сценарий (в разделе <EventTrigger>).

Например, чтобы получить источник события, который вы добавляете:

<ValueQueries>
  <Value name="eventSource">Event/System/Provider/@Name</Value>
</ValueQueries>

Теперь удалите задачу и воссоздайте ее, импортировав измененный XML-файл.

Теперь вы можете настроить Действие задачи для запуска PowerShell.exe и вашего сценария, а затем сослаться на любые имена, которые вы использовали для приведенных выше запросов значения, каквходные параметры для вашего скрипта.Например:

powershell.exe .\TriggerScript.ps1 -eventSource $(eventSource)

Конечно, тогда ваш сценарий просто должен поддерживать эти входные данные с помощью блока param() вверху, например:

param($eventSource)
...