我找不到任何允许我编辑GPO内计划任务的日期/时间的PowerShell cmdlet。我要求确认此类cmdlet不存在,或者(我希望)有人知道自动完成此任务的方法。非常感谢
igetnqfo1#
最后,介绍了一种使用PowerShell修改GPO中的计划任务的方法。基本上,这是关于选择GPO在sysvol文件夹中保存计划任务的xml文件,在xml linq库的帮助下编辑该文件以选择正确的命名空间,然后将xml保存回其文件夹:
Add-Type -AssemblyName 'System' Add-Type -AssemblyName 'System.Linq' Add-Type -AssemblyName 'System.Xml.Linq' #vars $domain = 'domainName' $ADcreds = PSCreds $gpo = Get-GPO -Name 'GPO-Name' -Domain $domain New-PSDrive -Name "S" -Root "\\$domain\SYSVOL\$domain\Policies\{$($gpo.Id)}\Machine\Preferences\ScheduledTasks" -PSProvider "FileSystem" -Credential $ADcreds $inputFilename = "$((Get-PSDrive 'S').Root)\ScheduledTasks.xml" $outputFilename = "$((Get-PSDrive 'S').Root)\ScheduledTasksNew.xml" $reader = [System.IO.StreamReader]::new($inputFilename) # skip first line with utf-8 $reader.ReadLine() $xDoc = [System.Xml.Linq.XDocument]::Load($reader) $today = [DateTime]::Now $tasksV2 = $xDoc.Descendants().Where({$_.Name.LocalName -eq "TaskV2"}) foreach($taskV2 in $tasksV2.Where({$_.Attribute('name').Value -ne 'wsus-extraMaintenance'})) { $startBoundary = $taskV2 = $xDoc.Descendants().Where( {$_.Name.LocalName -eq "StartBoundary"}) $todayStr = $today.ToString("yyyy-MM-ddTHH:mm:ss") $startBoundary.SetValue($todayStr) } $xDoc.Save($outputFilename) Get-ChildItem -Path 'S:\ScheduledTasks.xml' | Remove-Item -Confirm:$false Get-ChildItem -Path 'S:\ScheduledTasksNew.xml' | Rename-Item -NewName 'ScheduledTasks.xml' -Confirm:$false
1条答案
按热度按时间igetnqfo1#
最后,介绍了一种使用PowerShell修改GPO中的计划任务的方法。基本上,这是关于选择GPO在sysvol文件夹中保存计划任务的xml文件,在xml linq库的帮助下编辑该文件以选择正确的命名空间,然后将xml保存回其文件夹: