我必须为几台不在 Windows 域中的计算机设置本地组策略设置和本地安全策略。到目前为止,我都是通过手动设置 gpedit 中的键来完成此操作的。由于要过渡到 Windows 10,我想自动执行此操作并使用批处理或 PowerShell 脚本来设置它们。如果无需第三方工具即可完成此操作,那就太好了。
如何使用 Powershell 或批处理文件设置这些策略?
提前感谢您的回答!
彼得
答案1
策略文件编辑器是一个用于管理本地 GPO registry.pol 文件的 PowerShell 模块。
Brandon Padgett 提供了示例用法:
$RegPath = 'Software\Policies\Microsoft\Windows\Control Panel\Desktop'
$RegName = 'ScreenSaverIsSecure'
$RegData = '1'
$RegType = 'String'
Set-PolicyFileEntry -Path $UserDir -Key $RegPath -ValueName $RegName -Data $RegData -Type $RegType
答案2
您可以在 PowerShell 中使用Set-ItemProperty
注册表提供程序执行此操作;例如,要禁用 Windows 更新访问,您可以运行:
Set-ItemProperty -Path HKLM:\Software\Policies\Microsoft\Windows\WindowsUpdate -Name DisableWindowsUpdateAccess -Value 1
(HKLM:\ 是“Microsoft.PowerShell.Core\Registry::HKEY_LOCAL_MACHINE\”注册表驱动器路径的标准别名。)
可以从 Microsoft 下载组策略注册表项列表,网址为下载适用于 Windows 和 Windows Server 的组策略设置参考 | Microsoft 下载中心
答案3
有多个 CmdLet 可用于操作 GPO(Create、Get-Info 等)。您可以使用以下方式轻松列出它们:
Get-Command -Module GroupPolicy
最重要的几点:
New-GPO -Name "My Own GPO" -Comment "This is a new GPO for me"
New-GPO -Name "My Own GPO" | New-GPLink -Target "ou=clients,dc=ad,dc=contoso,dc=com"
Remove-GPLink -Name "My Own GPO" -Target "ou=clients,dc=ad,dc=contoso,dc=com"
Get-GPO -Name "My Own GPO"
Get-GPO -Name "My Own GPO" | Get-GPOReport -ReportType HTML -Path c:\temp\report.html
Set-GPRegistryValue -Name "My Own GPO" -Key "HKCU\Software\Policies\Microsoft\Windows\Control Panel\Desktop" -ValueName ScreenSaveTimeOut -Type DWord -Value 300
Get-GPRegistryValue -Name "My Own GPO" -Key "HKCU\Software\Policies\Microsoft\Windows\Control Panel\Desktop"
Remove-GPRegistryValue -Name "My Own GPO" -Key "HKCU\Software\Policies\Microsoft\Windows\Control Panel\Desktop" -ValueName ScreenSaveTimeOut
Invoke-GPUpdate -Computer "ad\server1" -Target "User"
Get-GPResultantSetOfPolicy -Computer dc1 -ReportType HTML -Path c:\temp\dc1rsop.html
这刚刚取自这里。
答案4
微软的出色脚本详细介绍了如何使用Set-ItemProperty
和其他 cmdlet 通过 Powershell 编辑注册表属性值。如前所述,这似乎不会更新本地策略编辑器的 GUI,因此您可能希望使用策略文件编辑器如果这对您来说是个问题。我必须使用第三方 MDM 在远程机器上执行此操作,并且我想消除尽可能多的依赖关系,所以我只是坚持使用开箱即用的命令。希望这能帮助其他人将所有这些拼凑在一起。
因为我的用户能够以本地管理员身份更改设置,所以我每天还要重新运行此脚本。不幸的是,它gpupdate /force /target:computer
似乎无法为我更新设置(我正在更改屏幕锁定时间),因此机器必须重新启动才能使更改生效。