Initial commit for powershell scripts.

This commit is contained in:
mattspeer committed 2026-10-04 10:22:22 -05:00
1 parent f4e5d9dcbd
commit 4fd95b76d6
18 files changed
+1803

No files matched your search

+56
View File
@@ -0,0 +1,56 @@
#Requires -RunAsAdministrator
<#
.SYNOPSIS
Configures static DNS server addresses on active network adapters.
.DESCRIPTION
This script retrieves all active (connected) network interfaces on the endpoint and assigns
primary DNS (Quad9) and secondary backup DNS (Cloudflare) servers.
.NOTES
Created: 2025-03-02
Modified: 2026-10-04
DNS Server Mappings:
- Quad9 Primary: 9.9.9.9 (Malware blocking + DNSSEC)
- Quad9 Secondary: 149.112.112.11 (Malware blocking + DNSSEC)
- Cloudflare Prim: 1.1.1.2 (Malware blocking)
- Cloudflare Sec: 1.0.0.2 (Malware blocking)
* Note: If adult content blocking is also desired via Cloudflare,
use 1.1.1.3 and 1.0.0.3 instead.
#>
[CmdletBinding(SupportsShouldProcess = $true)]
param (
# Array of DNS IPv4 addresses in priority order
[string[]]$DnsServers = @("9.9.9.9", "149.112.112.11", "1.1.1.2", "1.0.0.2")
)
# 1. Retrieve active/connected network adapters (filters out disabled, virtual, or disconnected NICs)
$ActiveAdapters = Get-NetAdapter | Where-Object { $_.Status -eq 'Up' }
if (-not $ActiveAdapters) {
Write-Warning "No active network adapters found on this endpoint."
return
}
# 2. Apply DNS settings to each active interface
foreach ($Adapter in $ActiveAdapters) {
$InterfaceName = $Adapter.Name
$InterfaceIndex = $Adapter.InterfaceIndex
if ($PSCmdlet.ShouldProcess("Interface: $InterfaceName (Index: $InterfaceIndex)", "Set DNS servers to $($DnsServers -join ', ')")) {
try {
# Set the static DNS client addresses
Set-DnsClientServerAddress -InterfaceIndex $InterfaceIndex -ServerAddresses $DnsServers -ErrorAction Stop
Write-Host "Successfully updated DNS for '$InterfaceName' (Index: $InterfaceIndex)" -ForegroundColor Green
}
catch {
Write-Error "Failed to update DNS on interface '$InterfaceName' (Index: $InterfaceIndex). Error: $_"
}
}
}