答案已经在评论中给出,但为了结束讨论,您可以使用
Select-Object -ExpandProperty
来展开对象的值。值得注意的是,您的
Sort-Object
语句实际上并没有按照
Length
排序,除非你指定了要排序的属性:
$length = dir -File | Sort-Object Length -Descending | Select-Object -ExpandProperty Length -First 5
个人喜好扩展值,您可以使用ForEach-Object
,在我看来语法更简单,但这里没有-First X
:
$length = dir -File | ForEach-Object Length | Sort-Object -Descending
$length
类型将会是 object[]
(对象数组),即使它包含一组 int64
值的数组,这是 PowerShell 中数组的默认类型。不过你可以通过 类型转换 或者 强类型 提供所需的输出类型。研究 转换运算符 [..]
是一个很好的起点。
$length = [Int64[]] (dir -File | ....)
[Int64[]] $length = dir -File | ....
针对后者,$length
受限于分配给int64
值或可以被类型强制转换为int64
的值,即:
[int64[]] $length = 0..10
$length = 1
$length[0].GetType()
$length = '1.1', 2
$length[0]
$length = 1, 'hello'
虽然前者只强制数组元素的类型,但可以分配不同类型的新数组:
$length = [int64[]] (0..10)
$length[0] = 'hello'
$length = 'new', 'object', 'array'
Select-Object -Expand Length
。 如果需要,可以强制类型化变量[int64[]] $lengths = ...
。 - Santiago Squarzon| foreach-object propertyname
。 - js2010