假设我调用 Get-Service
并希望使用打印递增整数的 cmdlet 输出分配一个新列 ID
,以便:
ID Status Name DisplayName
-- ------ ---- -----------
0 Running AdobeARMservice Adobe Acrobat Update Service
1 Stopped AeLookupSvc Application Experience
2 Stopped ALG Application Layer Gateway Service
我现在正在尝试使用
Select-Object
添加此列,但我不太明白如何在此类表达式中迭代变量。这是我所拥有的:Get-Service |
Select-Object @{ Name = "ID" ; Expression= { } }, Status, Name, DisplayName |
Format-Table -Autosize
有没有办法在
Expression= { }
中迭代整数,或者我是否以错误的方式解决这个问题? 最佳答案
您可以这样做,但您需要在主表达式之外维护一些计数器变量。
$counter = 0
Get-Service |
Select-Object @{ Name = "ID" ; Expression= {$global:counter; $global:counter++} }, Status, Name, DisplayName |
Format-Table -Autosize
另一种选择,可能更清洁
Get-Service `
|% {$counter = -1} {$counter++; $_ | Add-Member -Name ID -Value $counter -MemberType NoteProperty -PassThru} `
| Format-Table ID
关于powershell - 如何向 cmdlet 输出添加一列递增值?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18110377/