我想使用 powershell 来编写脚本来显示和编辑 Active Directory 对象的审计规则,而不是通过 GUI 进行操作,如下所述:从 Active Directory 用户和计算机中,在“查看”菜单中启用“高级功能”,在左窗格中选择“域控制器 OU”右键单击“域控制器 OU”对象并选择“属性”,选择“安全”选项卡,选择“高级”按钮,然后选择“审计”选项卡
这是我目前所拥有的。首先获取 OU 的 distinguishedName:
import activedirectory
set-location ad:
dir
将上面 dir 输出中的正确的 distinguishedName 插入到 Get-Acl 中:
$acl = Get-Acl -Path "DC=something,DC=somethingElse"
$acl 对象的 GetSecurityDescriptorSddlForm 方法似乎相关,但没有提供人性化的输出。接下来我尝试:
$domain = Get-AdDomain -Server "serverName"
$domainSID = $domain.DomainSID
$acl.GetAuditRules(1,1,$domainSID)
但这会出现错误:无法将 GetAuditRules 的值为“...”的参数 targetType 转换为类型“System.Type”:无法将类型 System.Security.Principal.SecurityIdentifier 的“...”值转换为类型“System.Type”
GetAuditRules 的文档似乎说它将接受 SecurityIdentifier 作为第三个参数,这就是我认为我提供给 GetAuditRules 方法的参数。 https://docs.microsoft.com/en-us/dotnet/api/system.security.accesscontrol.commonobjectsecurity.getauditrules?view=dotnet-plat-ext-3.1
此外,这里的帖子似乎相关,但我不明白如何选择正确的构造函数方法来创建 ActiveDirectoryAuditRule,以及如何收集所需的参数,例如 GUID https://social.technet.microsoft.com/Forums/en-US/70881826-6189-48c0-8ee7-0d79aa18f085/powershell-to-set-audit-flags-on-ou?forum=ITCG
任何帮助都非常感谢。谢谢!
答案1
这个用于注册表但看起来非常相似。尝试在 get-acl 中使用“-audit”开关。
$acl = get-acl-path$pathtoOU-Audit
$acl.getauditrules($true,$true,[System.Security.Principal.NTAccount])