-ne未在Powershell中工作

-ne未在Powershell中工作,powershell,if-statement,logical-operators,Powershell,If Statement,Logical Operators,我不确定我是否遗漏了什么或者忽略了一些愚蠢的东西,但是下面的脚本应该比较两个字符串,看看它们是否相等 if($Previous\u WAN\u IP-ne$Current\u WAN\u IP){ 如果($Previous_WAN_IP-eq“”){write host“外部IP脚本已准备就绪”;退出} 如果(@([Byte[][char[]$Current_WAN_IP-eq 46).Count)-ne 3){写入主机“未检索到有效的IP地址”;退出} 写入主机“IP地址已更改,正在发送电子邮

我不确定我是否遗漏了什么或者忽略了一些愚蠢的东西,但是下面的脚本应该比较两个字符串,看看它们是否相等

if($Previous\u WAN\u IP-ne$Current\u WAN\u IP){
如果($Previous_WAN_IP-eq“”){write host“外部IP脚本已准备就绪”;退出}
如果(@([Byte[][char[]$Current_WAN_IP-eq 46).Count)-ne 3){写入主机“未检索到有效的IP地址”;退出}
写入主机“IP地址已更改,正在发送电子邮件”
$MessageBody=“外部IP地址已更改”
.\Scripts\SecureEmailScript.ps1
}
我在包含
-ne
的if语句上放置了一个断点。所比较的两个值相同,类型为
System.String
。问题是它仍然会进入if语句。。。即使两个值相等。如果我使值不相等,那么结果是相同的。任何帮助都将不胜感激。提前感谢。

您可以避免尾随(或前导)空格,尤其是在使用.Trim()字符串方法进行字符串比较时。在您的具体情况下:

if ($Previous_WAN_IP.Trim() -ne $Current_WAN_IP.Trim()){

只要确保在代码中的某个地方执行Trim(),如果可能的话,它不会重复执行,以最小化对运行时的影响。

我的第一个怀疑是其中一个后面有空格。你是对的!在我发布这篇文章后,我去看了看字符串的长度。。。一个是14,另一个是13。所以我加了一句。两个都修剪一下,现在一个是13,另一个是12哈哈。。。至少我知道这个问题。@EBGreen它现在起作用了,尽管我觉得从一开始就不考虑这个问题很傻。哈哈,谢谢你的帮助。如果您想给出答案并描述Trim()过程,我很乐意将其标记为答案。