2

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

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

然后我使用带有 -Property 的格式表来仅显示我想要的属性。

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

代码:

$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

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

4

4 回答 4

2

CmdLetformat-table参数-Property可以是新的计算属性,请参阅格式表帮助。

这是一个在 Get-Process 对象上计算索引的示例。

$index=0
Get-Process  | Format-Table -Property @{name="index";expression={$global:index;$global:index+=1}},name,handles
于 2013-05-07T07:59:40.500 回答
2

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

例如:

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

其他参考:

将数组索引号添加到 PowerShell 自定义对象

ForEach-对象

格式表

于 2017-10-31T19:03:20.440 回答
0

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

于 2013-05-07T06:38:11.673 回答
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
于 2017-01-22T10:06:07.353 回答