Вы здесь

Как быстро скопировать задания из планировщика заданий на несколько компьютеров или серверов


Как быстро скопировать задания из планировщика заданий на несколько компьютеров или серверов

Появилась необходимость раскидать горстку заданий из Task Scheduler на горстку серверов. Помнится когда-то это можно было делать через групповые политики. И такая возможность в общем то и сейчас есть, но там теперь нельзя указывать определенную учётную запись, от имени которой должно выполняться задание, точнее УЗ с паролем (вообще то это можно обойти, вручную поправив файлы групповой политики в sysvol, но это не безопасно и топорно).

Как вы понимаете, если нужно скопировать скажем 20 заданий на 10 машин, то даже экспортируя и импортируя задания – можно сойти с ума от однотипных действий – открытия оснастки, импорта и ввода пароля. Плюс чем ближе конец этого мучения, тем больше будет вероятность что-то пропустить. А если потом задания нужно будет изменить?

Короче говоря, задача может быть выполнена при помощи небольшого скрипта PowerShell, текст которого представлен ниже:

$taskpath="\audit\"
$user="domain\scriptRunner"
$password="verysecret"
$tasks=get-ScheduledTask -taskpath $taskpath
$comps=Get-ADDomainController -filter * | Select-Object name
foreach ($comp in $comps){
    if ($comp.name -ne $env:computername){
        $comp.name
        Get-ScheduledTask -TaskPath $taskpath -CimSession $comp.name | Unregister-ScheduledTask -Confirm:$false
        foreach ($task in $tasks){
            $task.taskname
            $exported=export-scheduledtask -taskpath $taskpath -TaskName $task.taskname
            Register-ScheduledTask -Xml $exported -cimsession $comp.name -taskname $task.taskname -User $user -password $password -TaskPath $taskpath -force
        }
    }
}

Тут я для примера копирую все задачи из папки audit, на все контроллеры домена в организации.

Скрипт смотрит все задачи в указанной папке выполняет экспорт задачи в XML (без сохранения на диск), затем импортирует их поочередно на каждый из компьютеров. При импорте (командлет Register-ScheduledTask) указаны имя и пароль для учётки, от имени которой должны запускаться задания.

Также обратите внимание, на строчку

Get-ScheduledTask -TaskPath $taskpath -CimSession $comp.name | Unregister-ScheduledTask -Confirm:$false

Она отчищает указанную папку с заданиями на целевом сервере. Если вам это не надо – удалите или закомментируйте её.

Скрипт доступен на ]]>GitHub]]>.

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

4 0

Поделитесь статьей с друзьями в соц. сетях, возможно, она будет им полезна.


Если вам помогла статья, вы можете >>отблагодарить автора<<