Общее·количество·просмотров·страницы

среда, 10 декабря 2014 г.

Запустить скрипт PowerShell как задание

Все ниже написанное применимо только для PowerShell 3.0. Execution Policy должна быть настроена на возможность выполнения скриптов в системе. Вот заметка на эту тему.

Итак, узнаем версию PowerShell...
$PSVersionTable
Если 3.0 продолжаем, если нет то ставим 3.0

Пользоваться будем командлетами
Register-ScheduledJob http://technet.microsoft.com/en-us/library/hh849755.aspx
New-JobTrigger http://technet.microsoft.com/en-us/library/hh849759.aspx
New-ScheduledJobOption http://technet.microsoft.com/en-us/library/hh849767.aspx
Get-Credential http://technet.microsoft.com/ru-ru/library/hh849815.aspx

Несколько слов о командлетах.

New-JobTrigger командлет создает триггер для выполнения задания. Триггером может быть точное время, временной интервал и т.д.
На официальных страницах документации внушительное количество примеров, поэтому я ограничусь одним.

Создадим тригер который будет активироваться каждую среду и субботу в 23:00
$trig = New-JobTrigger -Weekly -DaysOfWeek 3,6 -At "23:00"
- Weekly - недельный интервал
- DaysOfWeek - дни недели, нумерация начинается с 0, причем 0 это воскресенье 6 соответственно суббота.
- At - Время выполнения можно использовать англоязычный формат времени "11:00 PM"

Get-Credential позволяет получить учетные данные пользователя и сохранить их в переменную/файл.
$cred = Get-Credential

New-ScheduledJobOption устанавливает параметры для задания. Воспользуемся только одним параметром -RubElevated выполнять задание с повышенными правами.
$options = New-ScheduledJobOption -RunElevated

Register-ScheduledJob - создает задание в системе.
Register-ScheduledJob -Name sync -FilePath C:\temp\test_connection.ps1 -Trigger $trig -Credential $cred -ScheduledJobOption $options

В общем код имеет вид:

$trig = New-JobTrigger -Weekly -DaysOfWeek 3,6 -At "23:00"
$cred = Get-Credential
$options = New-ScheduledJobOption -RunElevated
Register-ScheduledJob -Name sync -FilePath C:\temp\test_connection.ps1 -Trigger $trig -Credential $cred -ScheduledJobOption $options
Пример достаточно простой, почитав документацию можно делать поизвилистей ))

ВАЖНО! Не забываем про необходимые права для учетки от имени которой выполняется задание.

Комментариев нет:

Отправить комментарий