用于禁用GPO的计算机或用户部分的Powershell脚本

用于禁用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的状态,当它们以这种方式更改时,它会检测到不一致性,但事实并非如此)

我正在寻找一个powershell代码snippit来禁用Active Directory GPO的计算机或用户部分

我已经提取了相关GPO的GUI,只需要找到一种方法来禁用计算机或用户部分,而不是整个GPO

目标是禁用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
    (将其替换为正确的文件路径)