У меня есть папка с файлами журналов 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"
}