将日期与日期进行比较并且状态值不等于 23 或 25

Comparing Date with Date and where Status value not equal 23 or 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"   
}

我不确定你为什么 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

你确定这是正确的吗:

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

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

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

解释:

当 $status = "23" 时,$status -ne "23" 为 FALSE 但 $status -ne "25" 为 TRUE 因此 $status -ne "23" -Or $status -ne "25" 简化为 $false - 或者 $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") 始终为真