2012-12-16 124 views
1

我想比較兩個變量的值,但是這兩個字符串的內容是不同的順序PowerShell的比較兩個字符串

的內容

例子:

$Var1 = "item1" 
$Var1 += "item2" 
$Var2 = "item2" 
$Var2 = "item1" 

我如何比較這兩個變量看看他們是否平等?

=====使用示例更新===== 示例:獲取對象並對其進行排序。

$Computers = (Get-Content "$PWD\Computers.txt").GetEnumerator() | Sort-Object {"$_"} 

示例:添加結果並對它們進行排序。

$Successful += $Computer 
$Successful = $Successful.GetEnumerator() | Sort-Object {"$_"} 

示例腳本:使用上面的示例創建以下腳本。這個例子讓我檢查結果,而不是計數,但通過內容讓我得到更準確的比較。在我使用「Successful.count -eq Computers.count」之前,它不會檢查計算機是否輸入了兩次。

$Computers = (Get-Content "$PWD\Computers.txt").GetEnumerator() | Sort-Object {"$_"} 
$HotFixes = Get-Content "$PWD\HotFixes.csv" 
CLS 
While (!$Successful -OR $Successful -ne $Computers) { 
    foreach ($Computer in $Computers) { 
     $MissingCount = 0 
     IF (!$Successful -NotLike "*$Computer*") { 
      Write-Host "$Computer`: Connecting" 
      If (Test-Connection -ComputerName $Computer -Count 1 -quiet) { 
       Write-Host "$Computer`: Connected" 
       [string]$Comparison = get-hotfix -ComputerName $Computer | Select -expand HotFixID 
       ForEach ($HotFix in $HotFixes) { 
        IF ($Comparison -NotLike "*$HotFix*") { 
         $Results += "$Computer,$HotFix" 
         $MissingCount++ 
        } 
       } 
       Write-Host "$Computer`: $MissingCount Patches Needed" 
       $Successful += $Computer 
       $Successful = $Successful.GetEnumerator() | Sort-Object {"$_"} 
      } ELSE { 
       Write-Host "$Computer`: Unable to connect" 
      } 
     } ELSE { 
      Write-Host "$Computer already completed" 
     } 
    Write-Host "$Computer`: Complete" 
    Write-Host 
    } 

} 

$Results 
+1

這個問題不是100%清楚的,你是什麼意思的'內容是不同的順序'?字符順序是否顛倒?從你的例子來看,這些詞是顛倒過來的。不同的!=倒過來,例如,它也可以是隨機的。請說明您的內容(可以)與您希望比較的內容有何不同,以及您期望得到的某些示例字符串的結果。 – Neolisk

回答

4

如果你想找到如果內容是平等的,不管字符位置,你可以打破字符串它的字符,結果進行排序,然後使用比較對象cmdlet。沒有結果意味着變量是相等的:

$v1 = $Var1.GetEnumerator() | Sort-Object {"$_"} 
$v2 = $Var2.GetEnumerator() | Sort-Object {"$_"} 
compare $v1 $v2 
+0

棒極了!用你的建議更新答案。謝謝! – user1451070