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

如何通过 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")

但这只有在您知道已配置哪些用户对该文件进行审核时才有用...希望这有意义。感谢您的帮助。

答案1

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

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

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

答案2

这并不能解决您的问题,我不知道如何解决,但是您的脚本可以稍微清理一下:

$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

相关内容