mirror of
https://github.com/ChrisTitusTech/winutil.git
synced 2026-08-10 01:51:18 +10:00
56 lines
2.7 KiB
PowerShell
56 lines
2.7 KiB
PowerShell
function Set-WinUtilDNS {
|
|
<#
|
|
|
|
.SYNOPSIS
|
|
Sets the DNS of all interfaces that are in the "Up" state. It will lookup the values from the DNS.Json file
|
|
|
|
.PARAMETER DNSProvider
|
|
The DNS provider to set the DNS server to
|
|
|
|
.EXAMPLE
|
|
Set-WinUtilDNS -DNSProvider "google"
|
|
|
|
#>
|
|
param($DNSProvider)
|
|
|
|
if($DNSProvider -eq "Default") {
|
|
Write-WinUtilLog -Component "DNS" -Message "DNS provider is Default; no DNS changes applied."
|
|
return
|
|
}
|
|
|
|
try {
|
|
$Adapters = Get-NetAdapter | Where-Object {$_.Status -eq "Up"}
|
|
Write-Host "Ensuring DNS is set to $DNSProvider on the following interfaces:"
|
|
Write-Host $($Adapters | Out-String)
|
|
Write-WinUtilLog -Component "DNS" -Message "Setting DNS provider to $DNSProvider for $(@($Adapters).Count) active adapter(s)."
|
|
|
|
if($DNSProvider -ne "DHCP") {
|
|
$dns = $sync.configs.dns.$DNSProvider
|
|
if($null -eq $dns) {
|
|
Write-Warning "DNS provider $DNSProvider was not found in configuration."
|
|
Write-WinUtilLog -Level "ERROR" -Component "DNS" -Message "DNS provider $DNSProvider was not found in configuration."
|
|
return
|
|
}
|
|
}
|
|
|
|
Foreach ($Adapter in $Adapters) {
|
|
if($DNSProvider -eq "DHCP") {
|
|
Write-WinUtilLog -Component "DNS" -Message "Resetting DNS to DHCP on adapter $($Adapter.Name) (ifIndex: $($Adapter.ifIndex))."
|
|
Set-DnsClientServerAddress -InterfaceIndex $Adapter.ifIndex -ResetServerAddresses
|
|
netsh interface ip set dnsservers name="$($Adapter.Name)" source=dhcp
|
|
netsh interface ipv6 set dnsservers name="$($Adapter.Name)" source=dhcp
|
|
} else {
|
|
Write-WinUtilLog -Component "DNS" -Message "Setting IPv4 DNS on adapter $($Adapter.Name) (ifIndex: $($Adapter.ifIndex)) to $($dns.Primary), $($dns.Secondary)."
|
|
Set-DnsClientServerAddress -InterfaceIndex $Adapter.ifIndex -ServerAddresses ($dns.Primary, $dns.Secondary)
|
|
Write-WinUtilLog -Component "DNS" -Message "Setting IPv6 DNS on adapter $($Adapter.Name) (ifIndex: $($Adapter.ifIndex)) to $($dns.Primary6), $($dns.Secondary6)."
|
|
Set-DnsClientServerAddress -InterfaceIndex $Adapter.ifIndex -ServerAddresses ($dns.Primary6, $dns.Secondary6)
|
|
}
|
|
}
|
|
Write-WinUtilLog -Component "DNS" -Message "DNS provider change completed: $DNSProvider"
|
|
} catch {
|
|
Write-Warning "Unable to set DNS Provider due to an unhandled exception."
|
|
Write-Warning $psitem.Exception.StackTrace
|
|
Write-WinUtilLog -Level "ERROR" -Component "DNS" -Message "Unable to set DNS provider $DNSProvider`: $($psitem.Exception.Message)"
|
|
}
|
|
}
|