获取活动网络适配器并通过 PowerShell 设置 DNS

获取活动网络适配器并通过 PowerShell 设置 DNS

在 Windows 10 上,我需要在登录后立即手动设置 DNS 服务器。出于某种原因,DHCP 似乎每次重启时都会清除我的手动设置。:-( )

我使用 wifi 和电缆(取决于我是否在带有基座的办公桌旁)。

此命令非常有效:

Set-DNSClientServerAddress –interfaceIndex 25 –ServerAddresses (“127.0.0.1”,”1.1.1.2”)

如何动态地找出interfaceIndex当前活动的网络连接?

解决方案

这是一项正在进行的工作(还没有弄清楚在基座上时寻找正确适配器的所有变化等)但它可以在 wifi 上运行(我有多个处于启动状态的 vmware 接口,需要将它们过滤掉!)

$adapterIndex = Get-NetAdapter | % { Process { If (( $_.Status -eq "up" ) -and ($_.Name -eq "Wi-Fi") ){ $_.ifIndex } }};

Set-DNSClientServerAddress –interfaceIndex $adapterIndex –ServerAddresses (“127.0.0.1”,”1.1.1.2”);

答案1

使用获取网络适配器并获取当前“积极的“网络适配器的状态值为”向上“。使用该值动态获取该适配器的索引值。然后使用该值作为命令中索引的值Set-DNSClientServerAddress来设置 DNS 地址。

请阅读更多有关条件逻辑和其他用于帮助动态获取此详细信息的技术的信息支持资源部分。

电源外壳

[int]$intix = Get-NetAdapter | % { Process { If ( $_.Status -eq "up" ) { $_.ifIndex } }};
Set-DNSClientServerAddress –interfaceIndex $intix –ServerAddresses ("127.0.0.1","1.1.1.2");

Get-NetAdapter(输出示例)

笔记:请注意,下面命名适配器的ifIndex值是7Wi-Fi活跃

Name                      InterfaceDescription                    ifIndex Status       MacAddress             LinkSpeed
----                      --------------------                    ------- ------       ----------             ---------
Bluetooth Network Conn... Bluetooth Device (Personal Area Netw...      20 Disconnected 98-5F-D3-4B-59-C4         3 Mbps
Ethernet 3                Some Virtual Ethernet Adapter                14 Disabled     02-50-41-00-00-01         2 Gbps
Wi-Fi                     Marvell AVASTAR Wireless-AC Network ...       7 Up           98-5F-D3-4B-59-C3       468 Mbps
Ethernet 2                Cisco AnyConnect Secure Mobility Cli...       4 Not Present  00-05-9A-3C-7A-00          0 bps

支持资源

相关内容