Рабочий процесс PowerShell делает ... пока цикл .. циклично - PullRequest
0 голосов
/ 31 октября 2019

Я работаю с рабочими процессами для одновременной обработки большого количества файлов. Я написал (хреновый) кусок кода до фактической реализации.

Проблема в том, что цикл ... зациклен !. Идея сценария состоит в том, чтобы получить список файлов в массиве (давайте назовем его «Оригинальным»), создать новые массивы (давайте назовем их «LoopingArray»), чтобы обрабатывать файлы группами «x» и удалять обработанные файлы. элементы формируют массив для создания нового массива для обработки ... и т. д., пока исходный массив не станет пустым.

Для каждого элемента создается текстовый файл, поэтому, когда массив «Оригинал» пуст, выполняется Do. Пока стоит остановиться. Но это не так. он продолжает создавать файлы снова и снова. Что я делаю не так?:

   Workflow Test-Workflow {
      $SourceFolder = "c:\test\whatever"
      $Files = [System.IO.Directory]::EnumerateFiles($SourceFolder, '*.*', 'AllDirectories')
      $ArrayCount = $Files| Measure-Object | Select-Object Count

    Do {

        $NewArray = $Files | Select-Object -First 20
        $Files = $Files | Where-Object { $NewArray -notcontains $_ }
        $ArrayCount = $Files| Measure-Object | Select-Object Count

        ForEach -Parallel ($it in $NewArray)
            {

                $Name = Get-Random
                $Filepath = "C:\temp\test\"+"$Name"+".txt"
                $it | Out-File -FilePath $Filepath

            }
    } Until ($ArrayCount.Count -eq "0")

}

Спасибо!

...