Назад | Перейти на главную страницу

Добавление правила аудита в организационную единицу Active Directory с помощью powershell

В приведенном ниже сценарии powershell я собираю правила аудита 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 в неожиданном месте?