我想使用 powershell 编写脚本来显示和编辑 Active Directory 对象的审核规则,而不是通过如下所述的 GUI 操作:从 Active Directory 用户和计算机中,在“查看”菜单中启用“高级功能”,选择“域”左侧窗格中的 Controllers OU” 右键单击“Domain Controllers OU”对象并选择“Properties” 选择“Security”选项卡 选择“Advanced”按钮,然后选择“Auditing”选项卡
这是我到目前为止所拥有的。首先获取OU的distinguishedName:
import activedirectory
set-location ad:
dir
将上面 dir 输出中正确的 distinctName 插入 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
任何帮助表示赞赏。谢谢!
这是一个注册表,但看起来非常相似。尝试 get-acl 中的“-audit”开关。
https://stackoverflow.com/questions/13509667/how-to-get-audit-rule-in-acl-object-with-getauditrules-on-registry-key-in-powe
$acl = get-acl -path $pathtoOU -Audit
$acl.getauditrules($true,$true, [System.Security.Principal.NTAccount] )