Цикл '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

0 ответов

Другие вопросы по тегам