
No script do PowerShell abaixo, estou coletando regras de auditoria do Active Directory para uma UO específica, verificando se existe alguma regra de auditoria para uma falha e adicionando uma regra de auditoria de falha, se não existir. Tudo funciona até a última etapa de adição da regra de falha. Não há mensagem de erro, mas a nova regra não aparece no 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)
}
Não tenho certeza se isso é significativo, mas percebi que nas regras de auditoria padrão da UO, às vezes ObjectType e InheritedObjectType são uma sequência de zeros e outras vezes contém alguns dados diferentes de zero. Com o método construtor acima, essas propriedades são padronizadas com zeros.
Alguma ideia de por que o método AddAuditRule não está gerando uma nova regra na UO? Como não há erro, talvez esteja adicionando uma regra, mas está sendo preenchida no Active Directory em um local inesperado?