Зарегистрируйте запланированную задачу с помощью New-ScheduledTaskTrigger для идентификатора события Windows

Привет, пользователи переполнения стека. Ни MSDN, ни Google не дают результатов ...
Я настроил пару запланированных задач через скрипт Powershell. Запланированные задания запускаются в определенное время.
Это все отлично работает. Но мне нужно настроить другую запланированную задачу, которая запускается, когда в журнале событий Windows регистрируется определенный идентификатор события.
Конечно, я могу настроить это вручную, но я хочу, чтобы это было частью моего автоматизированного сценария.

Это код, который у меня есть для запланированных задач, мне нужно заменить раздел $ Trigger = New-ScheduledTaskTrigger -At 4:00 am -Daily :

        Copy-Item "\\networkDrive\Backups\scripts\Reset-Sessions.ps1" "c:\scripts\Reset-Sessions.ps1"
        $Trigger= New-ScheduledTaskTrigger -At 4:00am -Daily
        $User= 'Nt Authority\System'
        $Action= New-ScheduledTaskAction -Execute "Powershell.exe" -Argument "-executionpolicy bypass -File c:\scripts\Reset-Sessions.ps1"
        Register-ScheduledTask -TaskName "Reset-Sessions" -Trigger $Trigger -User $User -Action $Action -RunLevel Highest -Force

Я изменил некоторые из каталогов и имен файлов для онлайн-целей.

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

Я использую Powershell версии 5.1.

3
Roan 19 Авг 2019 в 11:19

2 ответа

Лучший ответ

< Сильный > Step1 : Перейдите в eventvwr, затем создайте новое запланированное задание на основе вечернего события.

< Сильный > Step2 : Откройте powershell, затем покажите запланированное задание и посмотрите способ написания.

Шаг 3 : Прикрепите и проверьте это в своем скрипте.

Я создал временную Get-ScheduledTask и запустил следующую строку: все, что вам нужно сделать, это заменить подписку, чтобы удовлетворить ваши требования.

$A = (Get-ScheduledTask "Tmp" | select -ExpandProperty Triggers)
0
Mahmood Shehab 20 Авг 2019 в 04:33

Вот еще один метод, который я использовал для решения проблемы:
Если вы пытаетесь сделать это на Windows Server до Server 2012, то, вероятно, у вас нет Get-ScheduledTask и New-ScheduledTaskTrigger и реестра -ScheduledTask модули в вашей системе Windows. Это означает, что сценарий в моем исходном вопросе и принятый ответ не будут работать.

  • Обходной путь - создать нужную запланированную задачу вручную, а затем экспортировать ее в файл XML. Вы можете редактировать этот файл, если хотите, это обычный текстовый XML.
  • Затем поместите ваш сценарий и XML-файл в один каталог.
  • Измените сценарий, чтобы он был совместим со старой версией Powershell, чтобы импортировать файл XML.
                schtasks /create /tn "Reset-Sessions" /xml "c:\scripts\Reset-Sessions.xml"

Ваше новое запланированное задание теперь должно быть зарегистрировано и активно.

0
9953-div-37 22 Авг 2019 в 03:27