#PowerShell 的 Select-Object 命令
Select-Object
[[-Property] <Object[]>]
[-InputObject <PSObject>]
[-ExcludeProperty <String[]>]
[-ExpandProperty <String>]
[-Unique]
[-CaseInsensitive]
[-Last <Int32>]
[-First <Int32>]
[-Skip <Int32>]
[-Wait]
[<CommonParameters>]
Select-Object
[-InputObject <PSObject>]
[-Unique]
[-CaseInsensitive]
[-Index <Int32[]>]
[-Wait]
[<CommonParameters>]
功能
选择对象的指定属性,或从集合中选取指定数量、位置的对象,并返回新的对象。
类型
Cmdlet,属于 Microsoft.PowerShell.Utility。
参数
[-Property] <Object[]>- 要选择的属性;支持通配符和计算属性;位置 0-ExcludeProperty <String[]>- 排除指定属性;支持通配符-ExpandProperty <String>- 展开指定属性,直接输出其值或元素-Unique- 去除重复对象,默认区分大小写-CaseInsensitive- 配合-Unique使用时不区分大小写-First <Int32>- 选择开头的指定数量对象-Last <Int32>- 选择末尾的指定数量对象-Skip <Int32>- 跳过开头的指定数量对象-SkipLast <Int32>- 跳过末尾的指定数量对象-Index <Int32[]>- 按从 0 开始的索引选择对象-Wait- 关闭优化,等待上游命令生成全部对象-InputObject <PSObject>- 要选择的对象,通常通过管道传入
计算属性使用哈希表定义,常用键为
Name(或Label)和Expression。
#示例
选择指定属性
> Get-Process | Select-Object -Property ProcessName, Id, WS
ProcessName Id WS
----------- -- --
Code 5120 412344
pwsh 6244 102336
- 只返回包含指定属性的新对象,属性顺序与参数顺序一致。
使用计算属性
> Get-ChildItem -File | Select-Object Name, @{Name='SizeKB'; Expression={$_.Length / 1KB}}
- 哈希表形式的计算属性可以为输出添加自定义列。
选择前几个对象
> Get-Process | Sort-Object CPU -Descending | Select-Object -First 5
-First会在取够对象后提前停止上游命令;需要完整执行时加-Wait。
选择指定索引
> $items = 'a', 'b', 'c', 'd'
> $items | Select-Object -Index 0, 2
a
c
- 索引从 0 开始,也可以用
-Index 0, ($items.Count - 1)选择首尾元素。
展开属性
> Get-Process -Name pwsh | Select-Object -ExpandProperty Modules
-ExpandProperty直接输出属性值本身,而不是包装成新对象。
去除重复项
> 'a', 'b', 'a', 'A' | Select-Object -Unique
a
b
A
- 默认区分大小写,使用
-CaseInsensitive可将a与A视为重复。