以下是启用审计规则的脚本:
$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
}
答案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