查找数组中的最大时间

时间:2016-01-26 20:59:58

标签: powershell

我有这个代码,它一直告诉我它无法比较我的变量,因为它们不是同一类型,不能实现IComparable。

$times = Get-ADComputer -Filter '*' -Properties PasswordLastSet | Select-Object PasswordLastSet
$maximum = [DateTime]0
foreach($item in $times){
    if($item -gt $maximum){
        $maximum = $item
    }
}
Write-Host $maximum

这似乎是一个非常简单的剧本,但我在这个问题上摸不着头脑。

1 个答案:

答案 0 :(得分:2)

您可以通过其中一个属性sort一个对象列表,然后select排序列表中的第一个(或最后一个)元素:

Get-ADComputer -Filter '*' -Properties PasswordLastSet |
  Sort-Object PasswordLastSet -Descending |
  Select-Object -First 1

如果您只需要DateTime值,您也可以在排序前扩展属性:

Get-ADComputer -Filter '*' -Properties PasswordLastSet |
  Select-Object -Expand PasswordLastSet |
  Sort-Object -Descending |
  Select-Object -First 1

或之后:

Get-ADComputer -Filter '*' -Properties PasswordLastSet |
  Sort-Object PasswordLastSet -Descending |
  Select-Object -First 1 -Expand PasswordLastSet