输出对象数组 - 全部都在一行上

时间:2013-02-05 21:31:53

标签: powershell powershell-v2.0

我试图为数组中的每个元素列出一个对象的一个​​属性。这很好,但它们都出现在一条线上。我读过使用$ 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

5 个答案:

答案 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类型数组