1

我正在尝试使用此代码应用审核规则

function add-acl($Right,$Access)
{
$audit = "mydomain\myaccount","$Right","containerinherit","none","$Access"
$r = new-object system.security.accesscontrol.registryauditrule $audit
$acl.addauditrule($r)
}

$acl = get-acl hklm:\software\_test
add-acl "CreateSubKey" "Success"
add-acl "Delete" "Success"  
add-acl "Delete" "Failure"  
$acl | set-acl

但是这段代码编写审计规则时没有考虑到之前的规则。所以我想在应用代码之前检索审计规则。为此,我使用了 getauditrules() 方法:

$acl.getauditrules($true,$true,??)

在 ??位置,我尝试了 NTaccount 对象和 windowsSecurity。它不返回错误,实际上根本不返回任何东西。这真的很令人失望,因为在使用 Windows 界面时,我可以看到应用了审核规则。我不明白什么类型的对象期望 getauditrules() 方法。有人能帮我吗 ?

4

1 回答 1

6

尝试将参数添加-auditget-aclcmdlet(此检索 SACLSystem Access Control List)。

$acl = get-acl hklm:\software\_test -audit

你可以使用:

$acl.getauditrules($true,$true, [System.Security.Principal.NTAccount] )

或者

$acl.getauditrules($true,$true, [System.Security.Principal.SecurityIdentifier] )

根据你的目标。

于 2012-11-22T10:06:07.790 回答