2014-10-14 2 views
2

만약 내가 뭔가를 놓치고 뭔가 바보 같은지 놓치고 있는지 모르겠지만 아래 스크립트는 두 문자열을 비교하고 그들이 같거나 또는 그렇지 않은 것으로 가정합니다.-ne Powershell에서 작동하지 않습니다.

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

내 첫 번째 의심은 둘 중 하나의 뒤에 공백이 있습니다. – EBGreen

+0

당신이 정확합니다! 나가 이것을 게시 한 후에 나는 끈의 길이에 가고 보았다 ... 1 개는 14이고 다른 사람은 13이다. 그래서 나는 그들 둘 다에 .trim를 추가했다. 그리고 지금 하나는 13이고 다른 하나는 12ha이다. 적어도 나는 그 문제를 안다. – JLott

+0

@EBGreen 처음부터 생각하지 않은 것에 대해 꽤 바보 같다고 느껴지더라도 잘 작동합니다. 하하가 도와 줘서 고마워. 답변을 작성하고 Trim() 프로세스를 설명하려면 답변으로 표시하게되어 기쁩니다. – JLott

답변

3

특히 .Trim() 문자열 메서드로 문자열 비교를 수행 할 때 공백을 피할 수 있습니다. 특정 경우 :

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

그냥 어딘가에 실행 시간에 미치는 영향을 최소화하기 위해 가능하면 반복적으로 실행되지 않는 코드) 트림을 (수행해야합니다.

관련 문제