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

How to filter value 1/1/1601 1:00:00 AM of password last set?

我想使用 "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”,表示用户从未设置过密码。但是,我不想将此值作为我的数据。我很想用 "No password last set" 过滤掉它,而不是给我“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
         }
    }    

但我认为这不是一个像样的代码。还有更好的体验吗?

这不起作用的原因是因为您正在将 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"    
         }

    }