约 2438 字

约 12 分钟

#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> - 要选择的对象,通常通过管道传入

#示例

选择指定属性

> 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 视为重复。

#推荐阅读

更新: 2026/11/2

作者: planc

创建: 2026/11/2