Wie automatisieren Sie die Registrierung einer geplanten Aufgabe über GPO mit PowerShell?

689
vulcan raven

Ich kann das folgende Cmdlet manuell auf 10 Knoten in AD ausführen, um eine geplante Aufgabe zu registrieren:

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

Ich habe nach Möglichkeiten gesucht, sie auf AD-Ebene zu automatisieren (vorzugsweise ohne WinRM zu nutzen.)

Gemäß diesem Artikel und der Liste der verfügbaren GroupPolicy-Cmdlets scheint die einzige Möglichkeit zum Konfigurieren von GPO (mithilfe von PowerShell-Cmdlets) die Verwendung von Set-GPRegistryValueund Set-GPPrefRegistryValueCmdlets zu sein.

Es scheint, dass die folgenden Registrierungsschlüssel für geplante Aufgaben verfügbar sind:

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

Gibt es angesichts dieser Details eine Möglichkeit, die GPME- computer configuration -> Preferences -> Control Panel Settings -> Scheduled Tasks -> New -> Scheduled TasksAktion automatisch auszuführen $inlinePowershellScript, $myTaskTriggerund $myTaskPrincipal?

Wie automatisieren Sie die Registrierung einer geplanten Aufgabe über GPO mit PowerShell?

0

1 Antwort auf die Frage

0
postanote

Sie machen das zu kompliziert.

Zeitplanaufgaben sind nur XML-Dateien. Erstellen Sie eine Aufgabe manuell, exportieren Sie sie und importieren Sie sie mithilfe der geplanten Task-Cmdlets auf andere Server.

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  ... 

Beispiel:

# 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' } 

Verwenden Sie einfach eine Liste von Servern in einer Schleife der Registrierung