我试图为数组中的每个元素列出一个对象的一个属性。这很好,但它们都出现在一条线上。我读过使用$ OFS设置分隔字符,但这也不起作用:
$filearray =@()
foreach($file in $files)
{
# There is more logic here to determine what files are included
$filearray = $filearray + $file
}
$OFS = "`r`n"
$filearray | Select Fullname
答案 0 :(得分:1)
使用$ OFS的方法是将它设置为CRLF,就像你在双引号字符串中评估一个数组变量一样,如“$ filearray”。如果它仍然显示在一行上,那么检查@ filejray的类型为@mjolinor在他对答案的评论中的建议。
答案 1 :(得分:0)
我会尝试这样的事情:
Foreach($file in $FileCollection)
{
#Logic
if($file #meets condition)
{
$filearray = $filearray + $file.Property
}
}
如果您知道名称,那将使用属性值加载数组。
答案 2 :(得分:0)
为什么不这样:
$filecollection | where-object { #condition } | select FullName
答案 3 :(得分:0)
我明确地投射$ filearray以确保它没有在代码中的其他位置重置:
[array]$filearray = @()
答案 4 :(得分:0)
尝试在此行强制输入类型:
[object[]]$filearray = $filearray + $file
或更好
[object[]]$filearray += $file
如果您知道rigth类型([fileinfo[]]
可能?),您可以更准确地强制使用rigth类型数组