直接ではありません。 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
2 つ以上のオブジェクトの の値が同じ場合は、後者の繰り返しに置き換えられProvisionedSpaceGB
ます。$output
それを修正するのに十分簡単にコレクションに変えることができます。
私自身は前者の解決策を好みますが、この問題について別の考え方を提供したかったのです。