2015-09-24 30 views
0

有一个名为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" 

但我不知道这会工作。另外,如何使用此脚本触发电子邮件?

回答

0

我看到两种方式来实现自己的目标:

  1. 附加一个“发送电子邮件”任务到事件中的问题:

    1. 打开事件查看器(eventvwr.msc)和选择您想要通知的事件。
    2. 点击操作→将任务附加到此事件中…
    3. 逐步向导并选择发送邮件动作部分。
    4. 填写详细信息并完成向导。

    请参阅here了解更多信息。

  2. 建立一个FileSystemWatcher

    $folder = 'C:\your\html\folder' 
    $file = 'status.html' 
    
    $from = '[email protected]' 
    $to  = '[email protected]' 
    $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不包括你需要描述here提取从各自的审计事件在事件日志的用户名。

    观察器可以通过其源标识符被删除:

    Unregister-Event -SourceIdentifier FileChanged 
    
+0

非常感谢您的意见。你提到的C#代码,请你让我知道我该如何运行它?我的意思是在我将要实现的那些没有C#编译器的服务器上。此外,上述的强大shell代码会在事件查看器中生成一个事件吗?请提供您的意见。 – Lilly123

+0

@ Lilly123您需要将C#代码翻译为PowerShell(使用'Get-EventLog')。不,上面的代码不会生成事件日志条目。如果您启用审核(您需要执行以获取修改文件的信息),该审核已经创建了事件日志记录。 –