用于更改适配器名称中带有 *Management* 的所有网络适配器的 DNS 服务器的 Windows 脚本

用于更改适配器名称中带有 *Management* 的所有网络适配器的 DNS 服务器的 Windows 脚本

例如:netsh interface ipv4 set dns管理10.111.253.41 netsh 接口 ipv4 添加 dns管理10.111.253.42 索引=2

管理 NIC 在一台服务器上命名为“管理网络”,在另一台服务器上命名为“管理 NIC”。我需要针对这两台服务器运行此脚本并静态设置 DNS 服务器。

这将使我获得适配器但我如何将其存储为变量?

获取 NetAdapter管理

答案1

谢谢,这就是我最终得到的结果并且它有效!

#Declaring Variables
$var1 = "x.x.x.x"
$var2 = "x.x.x.x"
$Adapter1 = Get-NetAdapter *management* | select -expand name

#Assigning primary and secondary DNS servers
netsh interface ipv4 set dnsservers name=$Adapter1 static $var1 primary
netsh interface ipv4 add dnsservers name=$Adapter1 $var2 index=2
Write-Host "The Primary DNS is:" $var1
Write-Host "The Secondary DNS is:" $var2
exit

答案2

您似乎正在尝试使用 PowerShell 命令来获取对网络适配器的引用。您编写的命令将获取调用“management”的适配器。但由于您只需要以单词 management 开头的适配器,因此您需要使用如下“where”子句:

Get-NetAdapter | Where-Object { $_.Name -like 'management*' }
# (which can also be shortened like this)
Get-NetAdapter | ?{ $_.Name -like 'management*' }
# (and assigned to a variable like this)
$adapters = Get-NetAdapter | ?{ $_.Name -like 'management*' }

现在您已经获得了对适配器的引用。现在有多种设置 DNS 服务器的方法。 netsh正如您所提到的,是其中之一,并且可能是最低级别的操作系统兼容。但是,如果您使用的是 Windows Server 2012 R2 或 Windows 8.1,则可以使用名为Set-DnsClientServerAddress

相关内容