不是直接的。 Measure-Object
旨在成为一种获取此类值的简单方法,而不是它们的输入对象。您可以从 Measure-Object 获得最大值,然后与数组进行比较,但这需要几个步骤:
$array = Get-VM
$max = ($array | measure-object -Property ProvisionedSpaceGB -maximum).maximum
$array | ? { $_.ProvisionedSpaceGB -eq $max}
您也可以完全放弃 Measure-Object 并遍历集合,随时替换最大值和输出。
$max = 0
$array | Foreach-Object
{
if($max -le $_.ProvisionedSpaceGB)
{
$output = $_
$max = $_.ProvisionedSpaceGB
}
}
$output
这有点脏,以便始终返回单个值。如果要在可能有多个具有相同最大值的值(例如,使用 Get-ChildItem 时的文件大小长度)的情况下重用它,则需要进行微小的调整。$output
在两个或多个对象具有相同值的情况下,它将替换为后者迭代ProvisionedSpaceGB
。你可以$output
很容易地变成一个集合来解决这个问题。
我自己更喜欢前一种解决方案,但我想提供一种不同的方式来思考这个问题。