簡體   English   中英

如何使用 PowerShell 映射 2 個對象數組?

[英]How to map 2 arrays of object using PowerShell?

我想映射一個數組對象。 我需要找到數組的匹配對象。 對象匹配后,我需要停止檢查其他對象,然后繼續下一個過程。

我試過這個,但它總是返回不匹配,即使數組對象匹配存在。

$ID = @("8537", "8538", "8539", "8540", "85AC", "85DE", "82EA")
$Signal = @("8537", "8220")


for ($i = 0; $i -lt $Signal.count; $i++)
{
     if ($Signal[$i] -like "$ID[$i]")
     {
          "found ‘$($Signal[$i])’
          at index $i"
          
          # Do some process
     }
     else {
          
          "Not Match"

          # Do some process
     }

}

你應該測試類似的東西:

cls
$ID = @("8538", "8539", "8540", "85AC", "85DE", "82EA","8537")
$Signal = @("8537","8220","85DE")

for ($i = 0; $i -lt $ID.count; $i++) {
    for ($j = 0; $j -lt $Signal.count; $j++) {

        if ($ID[$i] -like $Signal[$j])
        {
            "found $($ID[$i]) at index $i"  
            # Do some process
        } 
        else 
        {  
          "Not Match"
          # Do some process
        }
    }
}

正如我在上面的評論中提到的 - 為了使您的示例工作,您可以使用這樣的嵌套循環:

$ID = @("8537", "8538", "8539", "8540", "85AC", "85DE", "82EA")
$Signal = @("8234", "8512", "8220")
$MatchFound = $false

for ($i = 0; $i -lt $Signal.count; $i++) {
    for ($x = 0; $x -lt $ID.Count; $x++) {
        if ($Signal[$i] -eq $ID[$x]) {
            "found '$($Signal[$i])' at index $i"
            $MatchFound = $true
        }
    }
}

if (-not $MatchFound) {
    "No match was found"
}

如果您有一個想要比較的復雜對象,您可以查看 cmdlet Compare-Object

如果您需要進行匹配過程,如果存在至少 1 個匹配對象,您可以嘗試以下操作:

$ID = @("8538", "8539", "8540", "85AC", "85DE", "82EA","8537")
$Signal = @("8537","8220","85DE")

$matched = $false

for ($i = 0; $i -lt $ID.count; $i++) {
    if ($matched) {
        break
    }

    for ($j = 0; $j -lt $Signal.count; $j++) {

        if ($ID[$i] -like $Signal[$j])
        {
            $matched = $true
            "found $($ID[$i]) at index $i"
            break
        } 
    }
}

if ($matched) {
    # Do some process
} else {
    "Not Match"
    # Do some process
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM