比较Date和Date,且Status值不等于23或25



我比较2个日期和状态代码。如果2个日期是相同的,状态代码不是23或状态代码不是25,然后给我的记录。

elseif(((get-date $Date1).Date -eq (get-date $Date2).Date) -And ($status -ne "23" -Or $status -ne "25"))
                    {
                        write-host $accountName -foregroundcolor "yellow"   
}

你确定这是正确的吗?

($status -ne "23" -Or $status -ne "25")

不应该是-运算符,例如:

($status -ne "23" -And $status -ne "25")

解释:

当$status = "23"时,$status -ne "23"为假,而$status -ne "25"为真因此$status -ne "23" -或$status -ne "25"简化为$false -或$true,简化为$true

对于$status = "25"的解释也是一样的。

当$status与"23"one_answers"25"不同时,$status -ne "23"为真,$status -ne "25"为真,因此($status -ne "23" -或$status -ne "25")简化为($ TRUE -或$ TRUE),简化为$ TRUE

在上述情况下,这意味着($status -ne "23" -或$status -ne "25")总是为真,无论输入

我不知道为什么你get-date $Date1我假设你有一个日期值存储在$Date1和$Date2我只是比较它像这样:

elseif(($Date1 -eq $Date2) -And ($status -ne "23" -Or $status -ne "25"))
                    {
                        write-host $accountName -foregroundcolor "yellow"   
}

如果你在$Date1和$Date2中没有日期值,我会先计算这些值并存储它们,然后执行elseif。

如果你在$Date1和$Date2中的值是字符串,你想将它们转换为日期时间,你可以执行[datetime]$Date1