检查谁编辑了我的文件
本文关键字:我的 文件 编辑 检查 | 更新日期: 2023-09-27 18:14:28
有一个名为status.html
的文件,它被用作SharePoint服务器上WFE之间的负载均衡器。我的查询是我想拿出一个脚本或机制,将触发邮件,只要这个文件被编辑的人。这可能吗?
在我的研究中,我发现了这个脚本:
$ACL = new-object System.Security.AccessControl.DirectorySecurity
$AccessRule = new-object System.Security.AccessControl.FileSystemAuditRule("domain'seitconsult","Modify","success")
$ACL.SetAuditRule($AccessRule)
$ACL | Set-Acl "C:'windows'system32'cmd.exe"
但我不确定这是否有效。此外,如何使用此脚本触发电子邮件?
我认为有两种方法可以实现你的目标:
-
将"发送电子邮件"任务附加到所讨论的事件:
- 打开事件查看器(
eventvwr.msc
)并选择您想要通知的事件。 - 点击动作& rrr;
- 步骤完成向导,并在Action部分中选择Send an e-mail。
- 填写详细信息并完成向导。
- 打开事件查看器(
-
设置
FileSystemWatcher
:$folder = 'C:'your'html'folder' $file = 'status.html' $from = 'monitor@example.com' $to = 'you@example.com' $subject = "$file was modified" $monitor = New-Object IO.FileSystemWatcher $folder, $file -Property @{ IncludeSubdirectories = $false NotifyFilter = [IO.NotifyFilters]'FileName, LastWrite' } Register-ObjectEvent $monitor Changed -SourceIdentifier FileChanged -Action { $name = $Event.SourceEventArgs.FullPath $reader = New-Object System.IO.StreamReader($name) $msg = $reader.ReadToEnd() Send-MailMessage -From $from -To $to -Subject $subject -Body $msg $reader.Close() }
但是,由于
NotifyFilters
不包括用户名,您需要从事件日志中相应的审计事件中提取该用户名,如下所述。观察者可以通过它的源标识符被移除:
Unregister-Event -SourceIdentifier FileChanged