使用 powershell 向 Active Directory 组织单位添加审计规则

使用 powershell 向 Active Directory 组织单位添加审计规则

在下面的 powershell 脚本中,我正在为特定 OU 收集 Active Directory 审计规则,检查是否存在任何针对失败的审计规则,如果不存在,则添加失败审计规则。在添加失败规则的最后一步之前,一切正常。没有错误消息,但新规则未出现在 Active Directory 中。

#find the needed OU
Import-Module activedirectory
Set-Location ad:
dir

#get an acl object based for the OU
$acl = Get-Acl -Path "DC=something,DC=somethingElse" -Audit
$auditRules = $acl.GetAuditRules(1,1,[System.Security.Principal.SecurityIdentifier])
$foundFailRule = $false
foreach ($rule in $auditRules) {
    if ($rule.AuditFlags -ieq "Failure") {
        $foundFailRule = $true
        break
    }
}
if ($foundFailRule -eq $true) {
    Write-Host "Found fail rule.  No action needed."
}
else {
    #find the IdentityReference from the first audit rule entry in the OU
    $identityReference = $auditRules[0].IdentityReference
    $activeDirectoryRights = "GenericAll"
    $auditFlags = "Failure"
    $failAuditRule = New-Object System.DirectoryServices.ActiveDirectoryAuditRule $identityReference, $activeDirectoryRights, $auditFlags
    $acl.AddAuditRule($failAuditRule)
}

不确定这是否重要,但我注意到在 OU 的默认审计规则中,有时 ObjectType 和 InheritedObjectType 是全零的字符串,有时则包含一些非零数据。使用上面的构造函数方法,这些属性默认为全零。

知道为什么 AddAuditRule 方法没有在 OU 上生成新规则吗?由于没有错误,也许它正在添加规则,但它在 Active Directory 中的意外位置填充?

相关内容