#------------begin script----------------------------- $TimeStamp = Get-Date -UFormat "%Y%m%d-%H%M" # Get date/time stamp of script runtime $ScriptPath = Split-Path $MyInvocation.MyCommand.Path # Path of the script $oldDNS = "192.168.1.21" # DNS Server to replace $newDNS = "192.168.1.41" # replacement DNS Server $List = $ScriptPath + "\servers.txt # Input File containing the list of servers $log = New-Item -ItemType file -Path $ScriptPath -name change_DNS_$TimeStamp.csv -Force # Log File Add-Content -Path $log -Value "Servers,State" [array]$List = get-content $List for($i=0; $i -lt $List.Length; $i++) { $Server = $List[$i] Write-Progress -Activity "Changing the DNS entries for " -Status "Server: $Server" if (Test-Connection -ComputerName $Server -Quiet) { $colItems = get-wmiobject -class "Win32_NetworkAdapterConfiguration" -namespace "root\cimv2" -computername $Server | Where-Object {$_.IPEnabled -eq "True"} foreach ($objItem in $colItems) { $strDNSServerSearchOrder = $objItem.DNSServerSearchOrder $dnsexists = $strDNSServerSearchOrder -Contains $oldDNS if ($dnsexists -eq "True") { $newArrDNS = $strDNSServerSearchOrder -replace ($oldDNS,$newDNS) $objItem.setDNSServerSearchOrder($newArrDNS) | out-null Add-Content -Path $log -Value "$($Server),OK" } else { Add-Content -Path $log -Value "$($Server),No concerns" } } } else { Add-Content -Path $log -Value "$($Server),Offline" } } #------------End script--------------------------
POWERSHELL: Update DNS Settings On Remote Systems
Posted by
Jeremy
No comments:
Post a Comment