Netwrix 1Secure 提供跨数据和身份的统一可见性——免费试用14天,享有完全访问权限。开始免费试用

资源中心博客

组策略 PowerShell 命令 Top 10

组策略 PowerShell 命令 Top 10

Mar 17, 2023

除了 Group Policy Management Console (GPMC) 外,Microsoft 还提供了一组可用于管理 Group Policy 的 Windows PowerShell cmdlet。要使用 Group Policy PowerShell cmdlet,你必须在将运行这些 cmdlet 的设备上安装 GPMC。要检查某台设备上是否安装了组策略 PowerShell 模块,请运行下面的命令;如果模块已安装,它将显示所有可用的组策略 cmdlet。

      Get-Command -Module GroupPolicy
      

精选相关内容:

创建新的组策略对象

先从创建新的组策略对象(GPO)开始。下面的命令会创建一个名为“Netwrix PCs”的新 GPO,并添加注释来说明其用途:

      New-GPO -Name "Netwrix PCs" -Comment "Client settings for Netwrix PCs"
      

该命令会创建一个不包含任何设置的空 GPO。如果你的 Active Directory 域中已配置了入门/基础 GPO,则可以基于这些 GPO 的设置创建新的 GPO。下面的命令会基于“Windows 10 MS Security Settings”GPO 创建一个名为“Netwrix PCs”的新 GPO:

      New-GPO -Name "Netwrix PCs" -StarterGPOName "Windows 10 MS Security Settings"
      

你可以使用管道(piping)将 GPO 选择性地链接到域、域控制器的组织单位(OU)或站点。下面的命令会创建一个新的 GPO,并将其链接到 ad.contoso.com 域中的 Clients OU:

      New-GPO -Name "Netwrix PCs" | New-GPLink -Target "ou=clients,dc=ad,dc=contoso,dc=com"
      

要取消 GPO 的链接,请使用 Remove-GPLink cmdlet:

      Remove-GPLink -Name "Netwrix PCs" -Target "ou=clients,dc=ad,dc=contoso,dc=com"
      

Group Policy PowerShell Commands How to Link and Unlink a GPO

图 1. 如何链接和取消链接 GPO

获取有关 GPO 的信息

创建 GPO 后,可以使用 Get-GPO 返回诸如 GPO 状态、创建时间和最后修改时间之类的信息:

      Get-GPO -Name "Netwrix PCs"
      

如果你想了解更多信息,可以将 Get-GPO 创建的对象通过管道传递给 Get-GPOReport。下面的脚本会生成一个 HTML 报告,其中提供有关 GPO 的信息,类似于你可能在 组策略管理 控制台中看到的内容:

      Get-GPO -Name "Netwrix PCs" | Get-GPOReport -ReportType HTML -Path c:tempreport.html
      

Group Policy PowerShell Commands HTML Report with Detailed Data about a Specific GPO

图 2. 包含特定 GPO 详细数据的 HTML 报告

配置组策略设置

如果你知道某个基于注册表的 组策略设置 的位置,你可以使用 Set-GPRegistryValue cmdlet 来进行配置。基于注册表的组策略设置是指在 GPMC 中位于“管理模板”下方显示的那些设置。Set-GPRegistryValue 也可用于设置不属于组策略设置范围内的注册表值。例如,如果你想为没有组策略 ADMX 文件的第三方应用程序配置注册表设置,Set-GPRegistryValue 是快速配置所需设置的方法。下面的命令将把已登录用户的屏幕保护程序超时设置为 300 秒:

      Set-GPRegistryValue -Name "Netwrix PCs" -Key "HKCUSoftwarePoliciesMicrosoftWindowsControl PanelDesktop" -ValueName ScreenSaveTimeOut -Type DWord -Value 300
      

你可以使用 Set- GPRegistryValue 指定计算机配置或用户配置设置之一。下面 -Key 参数中的注册表路径以“HKCU”(代表“HKEY_CURRENT_USER”)开头。如果你想配置计算机设置,请将“HKCU”替换为“HKLM”(展开为 HKEY_LOCAL_MACHINE)。

要获取在 GPO 中配置的注册表项的详细信息,请使用 Get-GPRegistryValue:

      Get-GPRegistryValue -Name "Netwrix PCs" -Key "HKCUSoftwarePoliciesMicrosoftWindowsControl PanelDesktop"
      

Group Policy PowerShell Commands How to Get Detailed Information about a Registry Key Configured in a GPO

图 3。如何获取在 GPO 中配置的注册表项的详细信息

要从 GPO 中移除注册表设置,请使用 Remove-GPRegistryValue:

      Remove-GPRegistryValue -Name "Netwrix PCs" -Key "HKCUSoftwarePoliciesMicrosoftWindowsControl PanelDesktop" -ValueName ScreenSaveTimeOut
      

如果你决定使用 Preferences 而不是 Policies 来设置注册表项,那么上面这三个 cmdlet 也有对应的 Group Policy Preference 等效项:Set-GPPrefRegistryValue, Get-GPPrefRegistryValueRemove-GPPrefRegistryValue

应用组策略设置

只要你的 GPO 已链接到域、OU 或站点,它就会应用到其链接位置下方的用户和计算机对象。但是如果你想在远程服务器或其他设备上强制执行 组策略更新,你可以使用 Invoke-GPUpdate。不带任何参数运行 Invoke-GPUpdate 会强制更新本地计算机上的用户和计算机配置设置。下面的命令仅对 server1 上的用户配置设置强制执行一次组策略更新:

      Invoke-GPUpdate -Computer "adserver1" -Target "User"
      

查看哪些 GPO 应用于用户或计算机

要获取有关哪些 GPO 应用于用户或计算机的信息,可以使用 Get-GPResultantSetOfPolicy cmdlet 生成一个“结果集策略”(Resultant Set of Policy,RSoP) 报告。下面的命令会为名为“dc1”的计算机生成报告,并将结果写入 c:temp 目录:

      Get-GPResultantSetOfPolicy -Computer dc1 -ReportType HTML -Path c:tempdc1rsop.html
      

Group Policy PowerShell Commands How to Get Information About Which GPOs Are Applied to a User or Computer

图 4. 如何获取哪些 GPO 应用于用户或计算机的信息

PowerShell cmdlet 在管理组策略方面非常有用。然而,使用 PowerShell 在 GPO 内配置设置并不容易,因为组策略设置并非以文本式配置为目标设计。

分享到

了解更多

关于作者

Asset Not Found

Russell Smith

IT 顾问

专注于管理与安全技术的 IT 顾问和作者。Russell 拥有超过 15 年的 IT 经验,撰写过一本关于 Windows 安全的书籍,并共同撰写了 Microsoft 官方学术课程(MOAC)系列的相关教材。