Я новичок в PowerShell и пытаюсь помочь другу написать сценарий, который будет постоянно следить за файлом, и всякий раз, когда файл изменяется, новый текст в файле читается вслух (текстовый файл постоянно редактируется и всестарого контента внутри него заменяется новым контентом, который берется из писем по мере их поступления).
Сценарий отлично работает, когда извлекает содержимое из файла и читает его вслух, но у меня есть одна небольшая проблема: он читает содержимое два или четыре раза, в то время как он мне нужен только дляпрочитайте это однажды.
Кроме того, в то время как PowerShell говорит о содержимом, он не обновляет / не ставит в очередь изменения в файле, поэтому, если два изменения были сделаны, в то время как PowerShell говорит о предыдущем изменении, первое изменение пропускается и толькопоследнее изменение читается вслух.Есть ли способ заставить его ставить в очередь все изменения файла и читать их последовательно?
В настоящее время у меня есть
Add-Type -AssemblyName System.speech
$speak = New-Object System.Speech.Synthesis.SpeechSynthesizer
$speak.Rate = 0 # -10 is slowest, 10 is fastest
$watcher = New-Object System.IO.FileSystemWatcher
$watcher.Path = "C:\Users\Dylan\Desktop\"
$watcher.Filter = "alarm.txt"
$watcher.IncludeSubdirectories = $false
$watcher.EnableRaisingEvents = $true
$AlarmLocation = "C:\Users\Dylan\Desktop\alarm.txt"
$changeAction = {
$Alarm = (Get-Content $AlarmLocation)
$speak.Speak($Alarm)
}
Register-ObjectEvent $watcher "Changed" -Action $changeAction
while ($true) {sleep 5}
Я что-то упускаю здесь очевидное или есть другая функцияЯ должен включить?
Спасибо