如何通过Powershell删除文件审计规则?

这是一个脚本来打开一个审计规则:

$path = 'C:\...\*' $ACL = new-object System.Security.AccessControl.FileSecurity $AccessRule = new-object System.Security.AccessControl.FileSystemAuditRule("everyone","ExecuteFile","success") $ACL.SetAuditRule($AccessRule) $dircont = gci $path -include "*.dot" foreach ($file in $dircont) { $ACL | Set-Acl $file } 

但我希望能够做的是,对于任何给定的文件,删除任何和所有的审计规则。 所以假设你不知道用户有什么审计设置或者什么动作,你只是想摆脱这一切……就像我想我可以做这样的事情:

 $AccessRule = new-object System.Security.AccessControl.FileSystemAuditRule("everyone","ExecuteFile","none") 

但是,只有当你知道哪些用户已经被configuration为在该文件上进行审计时才有用…希望这是有道理的。 谢谢你的帮助。

删除规则有点棘手,您必须查看每个文件…

 foreach($file in $somewhere) { $acl = Get-Acl $file $acl.GetAuditRules($True, $False, [System.Security.Principal.SecurityIdentifier]) |Foreach-Object { $acl.RemoveAuditRule($_); } Set-Acl $file $acl } 

GetAuditRules的文档(及其神秘的参数)

这不解决你的问题,我不知道如何,但你的脚本可以清理一下:

 $path = 'C:\...\*' $ACL = new-object Security.AccessControl.FileSecurity $AccessRule = new-object Security.AccessControl.FileSystemAuditRule ` everyone, ExecuteFile, success $ACL.SetAuditRule($AccessRule) gci $path -filter *.dot | Set-Acl -acl $ACL