用于禁用GPO的计算机或用户部分的Powershell脚本
我正在寻找一个powershell代码snippit来禁用Active Directory GPO的计算机或用户部分 我已经提取了相关GPO的GUI,只需要找到一种方法来禁用计算机或用户部分,而不是整个GPO 目标是禁用GPO的计算机部分(如果为空),反之亦然 谢谢。像这样(您只需更改用于禁用GPO的计算机或用户部分的Powershell脚本,powershell,active-directory,gpo,Powershell,Active Directory,Gpo,我正在寻找一个powershell代码snippit来禁用Active Directory GPO的计算机或用户部分 我已经提取了相关GPO的GUI,只需要找到一种方法来禁用计算机或用户部分,而不是整个GPO 目标是禁用GPO的计算机部分(如果为空),反之亦然 谢谢。像这样(您只需更改DC=mydom、DC=adds和mydom。添加字符串以匹配您的域): 您应该在运行此操作之前关闭gpmc.msc以避免错误(gpmc加载GPO的状态,当它们以这种方式更改时,它会检测到不一致性,但事实并非如此)
DC=mydom、DC=adds
和mydom。添加字符串以匹配您的域):
您应该在运行此操作之前关闭gpmc.msc以避免错误(gpmc加载GPO的状态,当它们以这种方式更改时,它会检测到不一致性,但事实并非如此),您可以在之后运行它以验证:)
更多信息
标志=0:全部启用
标志=3:全部禁用
或者最好将它们统统管理:
Get-ChildItem "AD:\CN=Policies,CN=System,DC=mydom,DC=adds" | Select -ExpandProperty Name | ForEach-Object {
$flags = 0
if (-not (Get-ChildItem \\mydom.adds\SYSVOL\mydom.adds\Policies\$_\MACHINE))
{
$flags = 2
}
if (-not (Get-ChildItem \\mydom.adds\SYSVOL\mydom.adds\Policies\$_\USER))
{
# Disable all if both are empty, and user only otherwise
$flags += 1
}
Set-ADObject "CN=$_,CN=Policies,CN=System,DC=mydom,DC=adds" -Replace @{flags=$flags}
}
这需要有“干净”的GPO。我的意思是,如果您有一个没有机器配置的GPO,例如,在组策略编辑器中,您转到机器策略的Windows设置部分,而不执行任何操作,编辑器将向GPO添加脚本文件夹结构,因此Get ChildItem\\mydom.adds\SYSVOL\mydom.adds\Policies\$\uMachine)
将不会返回$null
,$flags
也不会相应地设置为2。只需多一点代码,就可以很容易地清理这些空结构;)
:
如果只需要特殊列表,请将其保存在以下格式的文本文件中:
{GUID1}
{GUID2}
...
并将{Get ChildItem“AD:\CN=Policies,CN=System,DC=mydom,DC=adds”替换为Get Content C:\GPOsDatas\List.txt
(用正确的文件路径替换)如下(您只需更改DC=mydom,DC=adds
和mydom.adds
字符串以匹配您的域):
您应该在运行此操作之前关闭gpmc.msc以避免错误(gpmc加载GPO的状态,当它们以这种方式更改时,它会检测到不一致性,但事实并非如此),您可以在之后运行它以验证:)
更多信息
标志=0:全部启用
标志=3:全部禁用
或者最好将它们统统管理:
Get-ChildItem "AD:\CN=Policies,CN=System,DC=mydom,DC=adds" | Select -ExpandProperty Name | ForEach-Object {
$flags = 0
if (-not (Get-ChildItem \\mydom.adds\SYSVOL\mydom.adds\Policies\$_\MACHINE))
{
$flags = 2
}
if (-not (Get-ChildItem \\mydom.adds\SYSVOL\mydom.adds\Policies\$_\USER))
{
# Disable all if both are empty, and user only otherwise
$flags += 1
}
Set-ADObject "CN=$_,CN=Policies,CN=System,DC=mydom,DC=adds" -Replace @{flags=$flags}
}
这需要“干净”GPO。我的意思是,例如,如果您有一个没有机器配置的GPO,那么在组策略编辑器中,您转到机器策略的Windows设置部分,而不执行任何操作,编辑器将向GPO添加脚本文件夹结构,因此Get ChildItem\\mydom.adds\SYSVOL\mydom.adds\Policies\$\uMachine)
将不会返回$null
和$flags
将不会相应地设置为2。只需多一点代码,就可以很容易地清理这些空结构;)
:
如果只需要特殊列表,请将其保存在以下格式的文本文件中:
{GUID1}
{GUID2}
...
并将{Get ChildItem“AD:\CN=Policies,CN=System,DC=mydom,DC=adds”|选择-ExpandProperty Name
替换为Get Content C:\GPOsDatas\List.txt
(将其替换为正确的文件路径)