【问题标题】:Active Directory PowerShell script permissionsActive Directory PowerShell 脚本权限
【发布时间】:2023-01-19 01:46:25
【问题描述】:
我是 PowerShell 和脚本的新手
我需要编写一个脚本:
- 列出域的所有 GPO,并检查列表中的参数“权限”是否为具体受托人“读取”。
- 如果参数“Permission”为空或填充为“write”而不是“read”,则必须将其更改为“read”。
我在 Microsoft 官方文档中找到了一个 cmdlet,但它只在控制台上进行输入:
Get-GPPermission -Name "TestGPO" -All
【问题讨论】:
标签:
powershell
active-directory
【解决方案1】:
以下是如何检查所有 GPO 中的特定权限条目的示例:
# put your AD group name here
$target = 'ENTERPRISE DOMAIN CONTROLLERS'
# iterate through all GP objects
Foreach ($GPO in (Get-GPO -All)) {
# get current permissions for GPO
$Current = Get-GPPermission -Name $GPO.DisplayName -TargetName $target -TargetType Group -ErrorAction Ignore
# check if current permissions exist and are correct
if ($Current -and ($Current.Permission -eq 'GpoRead')) {
Write-Host ($GPO.DisplayName + " permissions correct")
}
# otherwise, set corrected permissions
Else {
Write-Warning ($GPO.DisplayName + " permissions NOT correct")
# example way to set or add permissions
#Set-GPPermission -Name $GPO.DisplayName -PermissionLevel GpoRead -TargetName $target -TargetType Group
}
}
# outputs like
Default Domain Policy permissions correct
Default Domain Controllers Policy permissions correct
Bad-Policy permissions NOT correct
但是,请注意默认情况下所有Authenticated Users 都已经拥有对所有 GPO 的读取和应用访问权限,因此最好搜索编辑权限并将其删除(取决于您的环境)