Имя пользователя:
Пароль:
 

Показать сообщение отдельно

Ветеран


Сообщения: 3806
Благодарности: 824

Профиль | Отправить PM | Цитировать


YuS_2, зачем в PoSh все эти таймауты и задержки? - нужно просто подписаться на событие. И грузить в память весь файл тоже не надо. Это лог, который может достигать неслабых размеров.

Я бы примерно так сделал:

Код: Выделить весь код
$watchedFile = 'C:\temp\abc.log'
$waitingWord = 'successful'

$watcher = New-Object System.IO.FileSystemWatcher(Split-Path -LiteralPath $watchedFile)

$subscription = Register-ObjectEvent -InputObject $watcher -EventName Created -Action {
  if ($event.SourceEventArgs.Name -eq (Split-Path -Leaf $watchedFile)) {
    Get-Content -Path $watchedFile -Wait | % {if ($_ -match $waitingWord) {
        Write-Host "Обнаружено слово $waitingWord"
        Unregister-Event -SubscriptionId $subscription.Id
        break
      }
    }
  }
}
ему поплохеет, если вместо лога создать директорию с таким именем; ну и если лог уже есть, то отслеживать не будет
Это сообщение посчитали полезным следующие участники:

Отправлено: 12:42, 22-10-2018 | #8