Get-ChildItem не находит файлы - PullRequest
0 голосов
/ 10 мая 2019

Я пытаюсь рекурсивно найти файлы в папках, я получил имена файлов в массив, но Get-ChildItem не находит файлы.Я могу заменить переменную $ ImageNames реальным именем строки, и он найдет их.Я знаю, что с переменной что-то не так, но не могу точно определить, что это такое.Вот фрагмент скрипта.

Я пытался разбить массив на foreach, но я получаю тот же результат с одной строкой.

Current output of $ImageNames from Write-Output of $imageNames
TEST_###_DPm.X.1.2.840.113681.2886735633.1532516094.5056.994912425400525861.dcm
TEST_###_DPm.X.1.2.840.113681.2886735633.1532516094.5056.996112425422850002.dcm
TEST_###_DPm.X.1.2.840.113681.2886735633.1532516094.5056.997312425470276903.dcm

Обновляется за совет, новсе еще не работает

foreach ($xmlFile in $sumReportArray)
    {

        $outputDirectory = $patientDir
        $subDirPerXML = Split-Path -Path $xmlFile -Leaf -Resolve
        $finalDir = $outputDirectory + '\' + $subDirPerXML
        [xml]$XmlDocument = Get-Content $xmlFile

        New-Item -ItemType Directory -Force -Path $finalDir | Out-Null
        $imageNames = $XmlDocument.VOLPARA_SERVER_INTERFACE.VolparaDicomSummaryReport.VolparaInputs.Image | Select-Object -ExpandProperty ImageFileName 
        Get-ChildItem -LiteralPath $volparaPath -include $imageNames -Recurse | Copy-Item -Destination $finalDir
    }

Вот ошибка, которую я получаю ...

Get-ChildItem : Illegal characters in path.
At C:\Users\AdamZenner\OneDrive - Volpara Health Technologies Limited\1 Volpara\Production Software\Script_VolparaServerSearch\VolparaServerSearch_1.0.ps1:90 char:13
+             Get-ChildItem -recurse -Path ($volparaPath) -filter ($ima ...
+             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : InvalidArgument: (C:\Program File...araServer\DATA\:String) [Get-ChildItem], ArgumentException
    + FullyQualifiedErrorId : DirArgumentError,Microsoft.PowerShell.Commands.GetChildItemCommand

Ответы [ 2 ]

1 голос
/ 10 мая 2019

Вывод ... | Select ImageFileName | Out-String содержит ненужные строки. (Заголовок, разделитель и т. Д.)

Так что вы должны использовать Select-Object -ExpandProperty.

$imageNames = … | Select-Object -ExpandProperty ImageFileName

Но в этом случае достаточно использовать точечный доступ.

и если $imageNames - массив, используйте параметр -Include вместо параметра -Filter.

$imageNames = $XmlDocument.VOLPARA_SERVER_INTERFACE.VolparaDicomSummaryReport.VolparaInputs.Image.ImageFileName
Get-ChildItem -Path $volparaPath -Include $imageNames -Recurse | Copy-Item -Destination $finalDir
0 голосов
/ 10 мая 2019

Просто удалите скобки () из всех ваших переменных, и это должно работать.

New-Item -ItemType Directory -Force -Path ($finalDir)

до

New-Item -ItemType Directory -Force -Path $finalDir
...