Windows

如何通過 Powershell 刪除文件審核規則?

  • July 10, 2018

這是一個打開審計規則的腳本:

$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")

但這只有在您知道哪些使用者已配置為對該文件進行審核時才有幫助……希望這是有道理的。謝謝你的幫助。

刪除規則有點棘手,你必須查看每個文件……

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 文件(及其神秘參數)

這不能解決您的問題,我不知道如何,但是您的腳本可以稍微清理一下:

$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

引用自:https://serverfault.com/questions/28925