Sandy
Sandy

Reputation: 91

Loop through multiple array in powershell

I have 2 arrays here one contains the servername and other contains the IP.

I need to loop through them and create a key value pair like below for each server

server1:ip1
server2:ip2

I have written below code, but the problem is if i debug the code using F11, it is working fine, but i don't it gives some error which is different every time.

so feeling like it is not that reliable piece to continue.

    $NewDNSEntryName = $DNSEntryName.Split(",")
    $DNSIPs = $DNSIP.Split(",")


if($DNSEntryName -match "," -or $DNSIP -match ",")
    {   

   0..($NewDNSEntryName.Count - 1) | ForEach-Object {

   $fullName=""
   $fullName += @("$($NewDNSEntryName[$_]):$($DNSIPs[$_])")

This is the line where i am facing trouble

0..($NewDNSEntryName.Count - 1) | ForEach-Object

Please let me know why this code is behaving like this else any alternate idea is appreciated

Upvotes: 0

Views: 360

Answers (1)

AdminOfThings
AdminOfThings

Reputation: 25001

Assuming each item in each list corresponds with each other exactly, you can use a for loop and loop through the array indexes.

$NewDNSEntryName = $DNSEntryName.Split(",")
$DNSIPs = $DNSIP.Split(",")

for ($i = 0; $i -lt $DNSIPs.count; $i++) {
    "{0}:{1}" -f $NewDNSEntryName[$i],$DNSIPs[$i]
}

For the code above to work, $DNSEntryName and $DNSIP must be single strings with commas between names and IPs. If $DNSEntryName and $DNSIP are already lists or arrays, something else will need to be done.

In your attempt, technically, your logic should work given everything written above is true. However, $fullName is emptied at every single iteration, which may produce undesirable results.

Upvotes: 3

Related Questions