PowerShell:如何使用format-table列出项目的索引?

时间:2013-05-07 00:17:51

标签: powershell indexing

我希望列出结果表中项目的索引。

在这种情况下,我使用带有过滤器选项的get-aduser。

然后我使用带有-Property的format-table来仅显示我想要的属性。

我之前使用循环显示项目以及计数器来模拟索引,但这很麻烦,我希望它在表格中。

代码:

$search_param = read-host "Enter search string: "
$search_param = "*" + $search_param + "*" # Construct search param.
$search_result = Get-ADUser -Filter {Surname -like $search_param -or GivenName -like $search_param -or SamAccountName -like $search_param}


$search_result | format-table -Property GivenName,Surname,SamAccountName

如何在不使用某种循环的情况下让format-table显示项目索引/位置?即,是否有某种“隐藏”索引属性,我可以简单地提供给格式表?

4 个答案:

答案 0 :(得分:2)

format-table CmdLet -Property参数可以是新的计算属性,请参阅Format-table帮助。

以下是Get-Process对象的计算索引示例。

$index=0
Get-Process  | Format-Table -Property @{name="index";expression={$global:index;$global:index+=1}},name,handles

答案 1 :(得分:2)

ForEach-Object cmdlet可用于为Format-Table cmdlet创建计算的“索引”属性

例如:

$search_result | ForEach-Object {$index=0} {$_; $index++} | Format-Table -Property @{ Label="index";Expression={$index}; Width=5 },GivenName,Surname,SamAccountName

其他参考文献:

Adding Array Index Numbers to PowerShell Custom Objects

ForEach-Object

Format-Table

答案 2 :(得分:0)

在我看来,你不能,你需要使用Index属性扩展对象并将其包含在Format-Table命令中。

答案 3 :(得分:0)

$procs = Get-Process 
#option 1
$procs | Select @{N='Index'; E={$procs.IndexOf($_)}}, name, handles

#option 2
$procs | Format-Table -Property @{name="index";expression={$procs.IndexOf($_)}},name,handles