Powershell 阵列输出到多行

Powershell 阵列输出到多行,powershell,Powershell,输出: I:\1992.xlsxI:\projects\confluence\projects\documents\XXXX\u合规性。xlsxI:\projects\confluence\projects\documents\XXXX\u供应商云标准政策规则.xlsx 我想要它: I:\1992.xlsx I:\projects\confluence\projects\documents\XXXX\u ComplianceRegulations.xlsx I:\projects\conflu

输出:

I:\1992.xlsxI:\projects\confluence\projects\documents\XXXX\u合规性。xlsxI:\projects\confluence\projects\documents\XXXX\u供应商云标准政策规则.xlsx
我想要它:

I:\1992.xlsx
I:\projects\confluence\projects\documents\XXXX\u ComplianceRegulations.xlsx
I:\projects\confluence\projects\documents\XXXX\u供应商云标准政策法规.xlsx

我不确定这里出了什么问题。它应该将其添加到下一行,而不是将其追加到字符串的末尾。

$holdArray+=$test.path
更改为
[array]$holdArray+=$test.path

您没有告诉PowerShell这是一个数组,因此它将其视为一个字符串。

您正在将“数组”展平为一个空格分隔的字符串,因为您最初没有声明
$holdArray
。跳过数组“构建”逻辑,使用管道获得所需的结果

Get-ChildItem "$Folder" *.xlsx -Recurse | ?{-not ($_.PSIsContainer -or (Test-Path "I:\TEMP_Dir_SSN\$_"))} | copy-Item -Destination "I:TEMP_Dir_SSN" | out-null

Get-ChildItem "$Folder" *.xlsx -Recurse | %{
        $test = Resolve-Path $_.FullName 
        $holdArray += $test.path

}
    $holdArray | out-file "I:\TEMP_Dir_SSN\fullPath.txt" -append

默认情况下,添加内容

@schnipdip也是一个选项。在这里,您告诉PowerShell在填充之前创建一个空数组。同样有效的是:
$holdArray=@($test.path)
:-)我喜欢在使用for循环时执行
$holdArray=@()
,因为这样我就可以输出到数组中。从视觉上看,我更容易理解正在发生的事情。因此,如果出现问题,我可以理解问题所在。这只是忘了加上那一部分,哈哈哈,为什么我爱powershell:让事情发生很容易。
Get-ChildItem $Folder *.xlsx -Recurse | 
    Resolve-Path | Convert-Path | 
    Add-Content "I:\TEMP_Dir_SSN\fullPath.txt"