-ne不在Powershell工作

时间:2014-10-14 14:51:27

标签: powershell if-statement logical-operators

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

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语句......即使值相等。如果我使值不相等,则结果相同。任何帮助,将不胜感激。提前谢谢。

1 个答案:

答案 0 :(得分:3)

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

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

请确保在代码中的某处执行Trim(),如果可能的话,不要重复执行,以尽量减少对运行时的影响。