Цикл 'Foreach-Object' не увеличивает переменную
Я пишу сценарий PowerShell, который обрабатывает файлы, измененные за день до времени выполнения сценария. Я хотел бы иметь переменную ($count
), который отмечает, сколько файлов было повторено в реальном времени, однако строка, которая увеличивает эту переменную внутри Foreach-Object
цикл, кажется, не выполняется, или, скорее, он выполняется только один раз. Write-Host $script:count
возвращает 1 в конце скрипта, хотя консоль показывает, что 3 файла были перебраны.
Я думал, что это может быть проблемой, поэтому я включил $script:
перед каждым экземпляром "считать". Думаю, это также может быть связано с {..begin..}{..process..}{..end..}
технологические блоки Foreach-Object
цикл, путая это:
{$script:count++
Write-Host $_}
для {..begin..}
блок вместо {..process..}
поэтому я добавил пустые блоки до и после просто чтобы быть уверенным. Но все же, без игры в кости.
Скрипт PowerShell:
$back = Get-Location #save script execution directory
Push-Location -Path "C:\some_files" #directory with files to handle
$FilesSince = (get-date).AddDays(-1) #saves a timestamp of the system time -1 day (timestamp of one day ago) to compare against the age of files to see whats new.
$script:count = 0
Get-ChildItem -Recurse -File | Where-Object {$_.LastWriteTime -gt $FilesSince} #gets all files in current directory and all subdirectory trees
Foreach-Object{}{
$script:count++
Write-Host $_
}{}
Write-Host $script:count
Push-Location $back #return to script execution directory