我可以在 AD 中的 10 个节点上手动运行以下 cmdlet 来注册计划任务:
Register-ScheduledTask `
-TaskName "MyTask" `
-Action $inlinePowershellScript `
-Trigger $myTaskTrigger `
-Principal $myTaskPrincipal
我正在寻找在 AD 级别上实现自动化的方法(最好不要利用 WinRM..)
根据本文和可用的 GroupPolicy cmdlet 列表,似乎配置 GPO(使用 PowerShell cmdlet)的唯一方法是使用Set-GPRegistryValue
和Set-GPPrefRegistryValue
cmdlet。
它似乎以下注册表项可用于计划任务:
HKLM\Software\Microsoft\Windows NT\CurrentVersion\Schedule\Taskcache\Tasks
HKLM\Software\Microsoft\Windows NT\CurrentVersion\Schedule\Taskcache\Tree
鉴于这些细节,有没有办法使用、和computer configuration -> Preferences -> Control Panel Settings -> Scheduled Tasks -> New -> Scheduled Tasks
自动执行 GPME 的操作?$inlinePowershellScript
$myTaskTrigger
$myTaskPrincipal
答案1
你把这件事想得太复杂了。
计划任务只是 xml 文件。手动创建任务,将其导出并使用计划任务 cmdlet 将其导入到其他服务器。
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'
}
只需使用循环中的服务器列表进行注册