Get-ChildItem 找不到文件
Get-ChildItem not finding files
我正在尝试以递归方式查找文件夹中的文件,我已将文件名放入数组中,但 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 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
只需从所有变量中删除括号 () 即可。
New-Item -ItemType Directory -Force -Path ($finalDir)
至
New-Item -ItemType Directory -Force -Path $finalDir
... | Select ImageFileName | Out-String
的输出包含不必要的字符串。 (Header、分隔符等)
所以你应该使用 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
我正在尝试以递归方式查找文件夹中的文件,我已将文件名放入数组中,但 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 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
只需从所有变量中删除括号 () 即可。
New-Item -ItemType Directory -Force -Path ($finalDir)
至
New-Item -ItemType Directory -Force -Path $finalDir
... | Select ImageFileName | Out-String
的输出包含不必要的字符串。 (Header、分隔符等)
所以你应该使用 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