如何在 PowerShell 中的注册表项上使用 getauditrules() 获取 ACL 对象中的审核规则



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

function add-acl($Right,$Access)
{
$audit = "mydomainmyaccount","$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,??)

在??位置,我尝试了NT帐户对象和WindowsSecurity。它不返回错误,实际上根本不返回某些内容。这真的很令人失望,因为在使用 windows 界面时,我可以看到应用了审核规则。我不明白什么类型的对象需要getauditrules()方法。有人可以帮助我吗?

尝试将-audit参数添加到 cmdlet get-acl(此检索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] )

根据您的目标。

最新更新