格式化Powershell列表查询

时间:2012-11-20 16:05:41

标签: powershell

我正在使用以下方法检索带有caml查询的列表项:

$list = $web.Lists["My List"]
$items = $list.GetItems($query)

我需要以可读格式输出这些数据,例如表格。当我使用时:

$items | Format-Table

我得到了一个使用我不知道的内容构建的表。它绝对不是列表项。下面是输出:

ListItems                                           Parent List
---------                                           -----------
{Title of List Item 1, Title of List Item 2, ...}   My List
{Title of List Item 1, Title of List Item 2, ...}   My List
{Title of List Item 1, Title of List Item 2, ...}   My List

如果我使用foreach循环输出项目中的每个项目,我会得到正确的数据,但我无法将其格式化为表格。我是这样做的:

foreach($item in $items) {
  Write-Host $item["Title"] ---- $item["Author"] ---- $item["Category"]
}

哪个输出:

Test Title 1 ---- Hemingway ---- Best Seller
The Title of Number 2 ---- Stein ---- Horror
Three ---- Shakespeare ---- Tragedy  

不太可读。如何在方法1中访问正确的数据,或将方法二格式化为表?

1 个答案:

答案 0 :(得分:2)

为每个项目创建一个自定义表格并将其传递给Format-Table

$items | Foreach-Object{
  New-Object PSObject -Property @{
    Title = $_["Title"]
    Author = $_["Author"]
    Category = $_["Category"]
  }
} | Format-Table