有一个名为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 :(得分:0)
我看到了实现目标的两种方法:
将“发送电子邮件”任务附加到相关事件:
eventvwr.msc
),然后选择要通知的事件。有关详细信息,请参阅here。
$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
不包含用户名,因此需要从事件日志中的相应审核事件中提取here。
可以通过源标识符删除观察者:
Unregister-Event -SourceIdentifier FileChanged