如何过滤密码最后设置的值1/1/1601 1:00:00 AM?

时间:2017-06-26 13:27:40

标签: windows powershell ldap ldap-query

我想使用“paswordLastSet”属性打印出密码的最后设置值。在实现了一些过滤器之后:

$passwordLS = $user.Properties.Item("pwdLastSet")[0]

if($passwordLS -eq 0)
    {         
         $value = "No password last set"
    }
    else
    {
         $value = [DateTime]::FromFileTime($passwordLS)
    } 

我得到了一个输出:

No password last set
2/26/2003 12:21
11/27/2003 11:30
11/27/2003 11:30
1/1/1601 1:00:00 AM
.................

如上所列,有一个值“1/1/1601 1:00:00 AM”,这意味着用户从不设置密码。但是,我不想把这个值作为我的数据。我很乐意用“无密码最后一套”过滤掉它,而不是给我“1/1/1601 1:00:00 AM”作为输出。

我已经调查了这个问题,找到一个可以帮助我以某种方式过滤“1/1/1601 1:00:00 AM”的元素,即使我试图将所有值打印100纳秒来获得相互的价值这个。不幸的是,它们彼此都不同。

我也尝试发表声明:

if($passwordLS -eq 0)
    {         
         $value = "No password last set"
    }
    else
    {
         $value = [DateTime]::FromFileTime($passwordLS)
         if($value -eq "1/1/1601 1:00:00 AM"){

                $value = "No password last set"    
         }
         else{    
                $value = $value
         }
    }    

但我认为这不是一个不错的代码。有更好的经历吗?

1 个答案:

答案 0 :(得分:1)

这不起作用的原因是因为您要将datetime对象$value与字符串"1/1/1601 1:00:00 AM"进行比较

你有很多选择 - 例如:

  • $value[datetime]对象进行比较 - 例如$("1/1/1601 01:00:00" | Get-Date)
  • 根据年份排除,无需担心日期信息的重置。

Else设置$value = $value是多余的。

代码:

if($passwordLS -eq 0)
    {         
         $value = "No password last set"
    }
    else
    {
         $value = [DateTime]::FromFileTime($passwordLS)
         if($value.Year -eq 1601){                           # this one
         if($value -eq $("1/1/1601 01:00:00" | Get-Date)){   # or this one
                $value = "No password last set"    
         }

    }