вот сценарий для включения правила аудита:
$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