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
4

5 回答 5

1

使用 $OFS 的方法是将其设置为 CRLF,就像您在双引号字符串中评估数组变量一样,例如“$filearray”。如果它仍然显示在一行上,请检查 $filearray 的类型,正如@mjolinor 在他对他的回答的评论中所建议的那样。

于 2013-02-06T18:20:11.560 回答
0

我会明确地强制转换 $filearray 以确保它不会在代码中的其他地方被重置:

[array]$filearray = @()
于 2013-02-05T22:12:51.943 回答
0

尝试在这一行强制输入:

[object[]]$filearray = $filearray + $file 

或更好

[object[]]$filearray += $file 

如果您知道 rigth 类型([fileinfo[]]也许?),您可以更准确地强制 rigth 类型数组

于 2013-02-06T05:58:45.113 回答
0

为什么不这样:

$filecollection | where-object  { #condition } | select FullName
于 2013-02-05T22:10:55.747 回答
0

我会尝试这样的事情:

Foreach($file in $FileCollection)
{
 #Logic
  if($file #meets condition)
  {
    $filearray = $filearray + $file.Property
  }

}

如果您知道名称,这将使用属性值加载数组。

于 2013-02-05T21:47:13.623 回答