我正在比较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"
}
答案 0 :(得分:1)
你确定这是正确的:
($status -ne "23" -Or $status -ne "25")
如果它不是-And运算符,例如:
($status -ne "23" -And $status -ne "25")
说明:
当$ status =" 23",然后$ status -ne" 23"是错的,但是$ status" 25"是真的 因此$ status -ne" 23" - 或$ status -ne" 25"简化为$ false -Or $ true,简化为$ true
$ status =" 25"。
的解释相同当$ status与" 23"不同时和" 25"那么$ status -ne" 23"是真的和$ status -ne" 25"因此是真的($ status -ne" 23" -Or $ status -ne" 25")简化为($ true -Or $ true),简化为$ true
鉴于上述情况,这意味着($ status -ne" 23" -Or $ status -ne" 25")无论输入如何都始终为真
答案 1 :(得分:0)
我不确定为什么你get-date $Date1
我假设你有一个存储在$ Date1和$ Date2中的日期值我会像这样比较它:
elseif(($Date1 -eq $Date2) -And ($status -ne "23" -Or $status -ne "25"))
{
write-host $accountName -foregroundcolor "yellow"
}
如果你在$ Date1和$ Date2中没有日期值,我会首先计算它们然后存储它们然后再做你的。
如果$ Date1和$ Date2中的值是字符串并且您想将它们转换为日期时间,则可以添加到此[datetime]$Date1