Doğrudan değil. Measure-Object
, giriş nesnelerini değil, bu değerleri almanın kolay bir yolu olarak düşünülmüştür. Sen Ölçü-Nesne verim alabilmek ve daha sonra dizinin karşı karşılaştırmak, ancak birkaç adımdan oluşur olabilir:
$array = Get-VM
$max = ($array | measure-object -Property ProvisionedSpaceGB -maximum).maximum
$array | ? { $_.ProvisionedSpaceGB -eq $max}
Ayrıca Ölçme-Object tamamen bırakmak ve maksimum yerine kümesi içinde yineleme olabilir ve çıktığında çıktı.
$max = 0
$array | Foreach-Object
{
if($max -le $_.ProvisionedSpaceGB)
{
$output = $_
$max = $_.ProvisionedSpaceGB
}
}
$output
Bu, her zaman tek bir değer döndürmek için biraz daha kirlidir. Aynı maksimum değere sahip birden fazla değer (örneğin Get-ChildItem kullanırken uzunlukları dosyalayın) olduğu bir durumda yeniden kullanacak olursanız küçük bir ayar yapılması gerekir. Bu iki veya daha fazla nesnenin ProvisionedSpaceGB
için aynı değere sahip olduğu bir durumda $output
yerini ikinci yineleme ile değiştirecektir. Bunu düzeltmek için $output
'u kolayca koleksiyona dönüştürebilirsiniz.
Eski çözümü kendim tercih ederim ama sorun hakkında düşünmenin farklı bir yolunu sunmak istedim.
Eğer '$ dizi yazdı yeniden Eğer | ? {$ _ ProvisionedSpaceGB -eq $ maks.} ' olarak '@ ($ dizi |? {. $ _ ProvisionedSpaceGB -eq $ maksimum}) [0] senin için tek bir değer döndürebilir , ancak Hyper Anthony, her zaman istediğin kişi olmadığına dikkat çekti. –