set-dnsserverforwarder -using list of IP addresses for changes

I have to make a mass change to a bunch of dns forwarders IP addresses. My issue is I’m importing a CSV of the server and IP addresses. When I run my code I get:

Set-DnsServerForwarder : Cannot process argument transformation on parameter 'IPAddress'. Cannot convert value
"172.27.231.254, 172.27.254.68, 172.27.227.49, 172.28.5.47" to type "System.Net.IPAddress[]". Error: "Cannot convert value
"172.27.231.254, 172.27.254.68, 172.27.227.49, 172.28.5.47" to type "System.Net.IPAddress". Error: "An invalid IP address
was specified.""

CODE:


$newForwarders = import-csv -path C:\Temp\ADQueries\VA_DNSForwarders_new.csv

$newforwarders | ForEach-Object {
$IP = [IPAddress]$_.NewIP.Trim()
write-host $_.name "and" $_.newip
Get-DnsServerForwarder -ComputerName $_.name | select-object name,ipaddress
Set-DnsServerForwarder -ComputerName $_.name -IPAddress $IP
Get-DnsServerForwarder -ComputerName $_.name | select-object name,ipaddress
}

I added this as you can see above to convert the value but of course I have a string of multiple IP values. Any ideas how I resolve this? As now I’m getting:

Cannot convert value "172.27.254.68,172.27.227.49,172.28.5.47" to type "System.Net.IPAddress". Error: "An invalid IP
address was specified."

List of data in csv:

IPAddress,NewIP,Name
"172.27.254.68, 172.26.1.59, 172.26.134.11","172.27.254.68,172.27.227.49,172.28.5.47",IAD0DC.domain.com
"172.26.1.59, 172.26.134.11, 172.29.74.44","172.27.227.49, 172.28.5.47",CLE7DC.domain.com

Assuming you are attempting to pass an array of IP addresses, then importing from a CSV will not automatically create the array. Right now you are literally passing “172.27.254.68, 172.26.1.59, 172.26.134.11” as a IP address, which it is trying to convert to a System.Net.IPAddress, which is the error you are seeing. Try splitting the IPAddress:

$newForwarders = import-csv -path C:\Temp\ADQueries\VA_DNSForwarders_new.csv
 
$newforwarders | ForEach-Object {
    $IP = $_.IPAddress -split ',' | foreach{$_.Trim()}
    
    Get-DnsServerForwarder -ComputerName $_.name | select-object name,ipaddress
    Set-DnsServerForwarder -ComputerName $_.name -IPAddress $IP
    Get-DnsServerForwarder -ComputerName $_.name | select-object name,ipaddress
}

Rob,
Thank you this worked perfectly!

$IP = $_.NewIP -split ',' | foreach{$_.Trim()}