Как работать только с новыми файлами в powershell? - PullRequest
0 голосов
/ 12 апреля 2020

У меня есть папка с файлами журналов C: \ temp \

Папка уже содержит некоторые файлы * .txt

Мне нужно отслеживать новые файлы и прекращать мониторинг при достижении цели , Цель - изменить согласованное значение на переменную $ value1

Содержимое файла журнала выглядит как

44444409090909345665582781257812544124124124752
44444409090909345605812598219588921241245125125
44444409090909545665028059012589811242141241245

Мой неверный код выглядит как

 $path = 'C:\temp\test2.txt'
  Write-Host $path
  $file = Get-Content $path 
  $value1 = '1444444090909090'
  foreach ($string in $file) { 

  $var1 = $string.substring(0,17)
  $var2 = $string.substring(18,6)
  if (($var2 -ge 450000) -and ($var2 -le 550000)) {
    $string = $string -replace $var1, $value1 | Set-Content $path
    } 
} 

Этот код переписывает исходный код файл остается только с одной измененной строкой, хотя мне нужно сохранить другие, как есть

Я также нашел такой сценарий для мониторинга, но я не понимаю, как выполнить сценарий при достижении цели

$watcher = New-Object System.IO.FileSystemWatcher
$watcher.Path = "C:\temp"
$watcher.Filter = "*.txt"
$watcher.IncludeSubdirectories = $false
$watcher.EnableRaisingEvents = $true  

### DEFINE ACTIONS AFTER AN EVENT IS DETECTED
$action = { Write-Host "Received Event"
            $path = $Event.SourceEventArgs.FullPath
            Write-Host $path
            #My Script Here

### DECIDE WHICH EVENTS SHOULD BE WATCHED 
Register-ObjectEvent $watcher "Created" -Action $action
while ($true) {
sleep 2 
Write-Host "Monitoring"
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...