PowerShell比较两个字符串的内容

PowerShell比较两个字符串的内容,powershell,powershell-2.0,powershell-1.0,Powershell,Powershell 2.0,Powershell 1.0,我试图比较两个变量的值,但这两个字符串的内容顺序不同 例如: $Var1 = "item1" $Var1 += "item2" $Var2 = "item2" $Var2 = "item1" 我如何比较这两个变量,看它们是否相等 ====更新了示例===== 示例:获取对象并对其进行排序 $Computers = (Get-Content "$PWD\Computers.txt").GetEnumerator() | Sort-Object {"$_"} $Successful += $Co

我试图比较两个变量的值,但这两个字符串的内容顺序不同

例如:

$Var1 = "item1"
$Var1 += "item2"
$Var2 = "item2"
$Var2 = "item1"
我如何比较这两个变量,看它们是否相等

====更新了示例===== 示例:获取对象并对其进行排序

$Computers = (Get-Content "$PWD\Computers.txt").GetEnumerator() | Sort-Object {"$_"}
$Successful += $Computer
$Successful = $Successful.GetEnumerator() | Sort-Object {"$_"}
示例:添加结果并对其排序

$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

如果要查找内容是否相等(不考虑字符位置),可以将字符串拆分为其字符,对结果进行排序,然后使用Compare-Object cmdlet。没有结果意味着变量相等:

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

如果要查找内容是否相等(不考虑字符位置),可以将字符串拆分为其字符,对结果进行排序,然后使用Compare-Object cmdlet。没有结果意味着变量相等:

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

问题不是100%清楚,您所说的内容顺序不同是什么意思?字符的顺序颠倒了吗?从你的例子中,单词是颠倒的。不同!=例如,它也可以是随机的。请澄清您的内容(可能)有多大的不同,您希望如何比较它,以及对于一些示例字符串,您希望得到哪些结果。问题不是100%清楚,您所说的
内容的顺序不同是什么意思?字符的顺序颠倒了吗?从你的例子中,单词是颠倒的。不同!=例如,它也可以是随机的。请澄清您的内容(可能)有多不同,您希望如何比较它,以及对于一些示例字符串,您希望得到哪些结果。太棒了!用你的建议更新答案。非常感谢。棒 极 了用你的建议更新答案。非常感谢。