Привет Все Я новичок в написании сценариев. Я пытаюсь отправить уведомление по электронной почте, когда файл будет изменен.Scripting - следить за изменениями для файла и отправлять уведомления по электронной почте
Я попытался использовать приведенный ниже сценарий, чтобы получить уведомление, если файл был изменен, но как это сделать каждый раз, когда файл изменяется. Ниже сценария работает только один раз, поэтому я поставил его в бесконечный цикл, чтобы заметить изменения, когда когда-либо был изменен файл, но я знаю, что это не идеальный способ сделать это. Мне также нужно отправить электронное письмо. Как мне это сделать. Цените свои ответы. Спасибо.
while (1 -eq 1)
{$File = "C:\Test\test.log"
$Action = 'Write-Output "The watched file was changed"'
$global:FileChanged = $false
function Wait-FileChange {
param(
[string]$File,
[string]$Action
)
$FilePath = Split-Path $File -Parent
$FileName = Split-Path $File -Leaf
$ScriptBlock = [scriptblock]::Create($Action)
$Watcher = New-Object IO.FileSystemWatcher $FilePath, $FileName -Property @{
IncludeSubdirectories = $false
EnableRaisingEvents = $true
}
$onChange = Register-ObjectEvent $Watcher Changed -Action {$global:FileChanged = $true}
while ($global:FileChanged -eq $false){
Start-Sleep -Milliseconds 100
}
& $ScriptBlock
Unregister-Event -SubscriptionId $onChange.Id
}
Wait-FileChange -File $File -Action $Action
}