检查谁编辑了我的文件

本文关键字:我的 文件 编辑 检查 | 更新日期: 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"

但我不确定这是否有效。此外,如何使用此脚本触发电子邮件?

检查谁编辑了我的文件

我认为有两种方法可以实现你的目标:

  1. 将"发送电子邮件"任务附加到所讨论的事件:

    1. 打开事件查看器(eventvwr.msc)并选择您想要通知的事件。
    2. 点击动作& rrr;
    3. 步骤完成向导,并在Action部分中选择Send an e-mail
    4. 填写详细信息并完成向导。
  2. 设置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