我不确定我是否遗漏了某些东西或忽略了一些愚蠢的东西,但下面的脚本应该比较两个字符串并查看它们是否相等。
if ($Previous_WAN_IP -ne $Current_WAN_IP) {
if ($Previous_WAN_IP -eq "") {write-host "External IP Script is Ready";Exit}
if ((@([Byte[]][char[]]$Current_WAN_IP -eq 46).Count)-ne 3) {write-host "No Valid IP Address Retrieved";Exit}
Write-Host "IP Address Has Changed, Sending e-mail"
$MessageBody = "External IP Address Has Changed"
.\Scripts\SecureEmailScript.ps1
}
我在包含-ne
的if语句中添加了断点。被比较的两个值都是相同的,并且类型为System.String
。问题是它仍会进入if语句......即使值相等。如果我使值不相等,则结果相同。任何帮助,将不胜感激。提前谢谢。
答案 0 :(得分:3)
您可以避免尾随(或引导)空格,尤其是在使用.Trim()字符串方法进行字符串比较时。在您的具体情况下:
if ($Previous_WAN_IP.Trim() -ne $Current_WAN_IP.Trim()){
请确保在代码中的某处执行Trim(),如果可能的话,不要重复执行,以尽量减少对运行时的影响。