winutil/functions/private/Set-WinUtilDNS.ps1
MyDrift 706f73923a Modify DNS ComboBox
- Replaced "Default" with "Custom"
- Set Default Dropdown Content to applied option or "Custom" if not in the list.
- saves custom IPs on multiple adapters
> If user sets DNS to Cloudflare and runs the tweaks but wants to undo it before he closed the script he can select "custom" and run it to apply the saved addresses
2024-06-07 01:01:48 +02:00

48 lines
1.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)
$dnsProviders = $sync.configs.dns.PSObject.Properties.Name
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)
Foreach ($Adapter in $Adapters){
switch ($DNSProvider) {
"DHCP" {
Set-DnsClientServerAddress -InterfaceIndex $Adapter.ifIndex -ResetServerAddresses
}
"Custom" {
$savedSettings = $global:previousDnsSettings | Where-Object { $_.AdapterName -eq $Adapter.Name }
if ($savedSettings) {
# Set the DNS server addresses for the adapter to the saved addresses
Set-DnsClientServerAddress -InterfaceIndex $Adapter.ifIndex -ServerAddresses $savedSettings.DnsAddresses
}
}
default {
Set-DnsClientServerAddress -InterfaceIndex $Adapter.ifIndex -ServerAddresses ("$($sync.configs.dns.$DNSProvider.Primary)", "$($sync.configs.dns.$DNSProvider.Secondary)")
}
}
}
}
Catch{
Write-Warning "Unable to set DNS Provider due to an unhandled exception"
Write-Warning $_.Exception.Message
Write-Warning $_.Exception.StackTrace
}
}