Я могу вручную запустить следующий командлет на 10 узлах в AD, чтобы зарегистрировать запланированное задание:

Register-ScheduledTask `
    -TaskName "MyTask" `
    -Action $inlinePowershellScript `
    -Trigger $myTaskTrigger `
    -Principal $myTaskPrincipal

Я искал способы автоматизировать его на уровне AD (желательно без использования WinRM ..)

Согласно этой статье и списку доступных командлетов GroupPolicy, кажется, что единственный способ настроить объект групповой политики (с помощью командлетов PowerShell) - это использовать командлеты Set-GPRegistryValue и Set-GPPrefRegistryValue .

Похоже, что следующие разделы реестра доступны для запланированной задачи:

HKLM\Software\Microsoft\Windows NT\CurrentVersion\Schedule\Taskcache\Tasks
HKLM\Software\Microsoft\Windows NT\CurrentVersion\Schedule\Taskcache\Tree

Учитывая эти детали, есть ли способ выполнить настройку компьютера GPME computer configuration -> Preferences -> Control Panel Settings -> Scheduled Tasks -> New -> Scheduled Tasks действия автоматически, используя $inlinePowershellScript , $myTaskTrigger и $myTaskPrincipal?

1 ответ1

0

Вы слишком усложнили это.

Задачи расписания - это просто XML-файлы. создайте задачу вручную, экспортируйте ее и импортируйте на другие серверы с помощью запланированных командлетов задач.

Get-Command -Name '*scheduled*' | ft -a 

CommandType Name                                         Version Source            
----------- ----                                         ------- ------            
Function    Disable-ScheduledTask                        1.0.0.0 ScheduledTasks    
Function    Enable-ScheduledTask                         1.0.0.0 ScheduledTasks    
Function    Export-ScheduledTask                         1.0.0.0 ScheduledTasks    
Function    Get-ClusteredScheduledTask                   1.0.0.0 ScheduledTasks    
Function    Get-ScheduledTask                            1.0.0.0 ScheduledTasks    
Function    Get-ScheduledTaskInfo                        1.0.0.0 ScheduledTasks 
...

Пример:

# Create your task 
$A = New-ScheduledTaskAction –Execute 'powershell' -Argument 'Hello, from task scheduler'
$T = New-ScheduledTaskTrigger -Weekly -WeeksInterval 1 -DaysOfWeek Monday,Tuesday,Wednesday,Thursday,Friday -At 8am
$S = New-ScheduledTaskSettingsSet
$D = New-ScheduledTask -Action $A -Trigger $T -Settings $S
$Task = Register-ScheduledTask 'TestTask' -InputObject $D

# View the created task XML
Get-Content -Path 'C:\Windows\System32\Tasks\TestTask'  | Out-GridView
Get-ChildItem -Path 'C:\Windows\System32\Tasks'

Export-ScheduledTask 'TestTask' | 
out-file '\\TargetServer\c$\public\TestTask.xml'

Invoke-Command -ComputerName 'TargetServer' -ScriptBlock {
    Register-ScheduledTask -Xml (Get-Content 'C:\Users\public\TestTask.xml' | out-string) -TaskName 'TestTask'
}

Просто используйте список серверов в цикле регистрации

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .