![我们要使用的服务器](https://linux22.com/image/621432/%E6%88%91%E4%BB%AC%E8%A6%81%E4%BD%BF%E7%94%A8%E7%9A%84%E6%9C%8D%E5%8A%A1%E5%99%A8.png)
我最近发现,可以使用一个好用的 cmdlet 简单地自动化 DNS 条目管理:
Import-Module DnsServer
Add-DnsServerResourceRecordA -Name mail2 -IPv4Address 192.168.0.10 -ZoneName powershell.local
我想在 Windows 2008 R2 机器上运行这个程序(它在 Web 服务中被称为)来更改另一台机器上的 DNS 条目。我看到 Powershell v3 已经支持此功能,但我无法让它在 Powershell v4 上运行,显然无法导入模块。这是因为我在 Windows 7 机器上测试过它吗?我有一台 Windows 7 开发机器,我想在上面开发和调试它。我是否必须以某种方式重新加载此模块?如果是,我该怎么做?
我在 MS 页面上看到它支持 Windows Server 2012,但我没有 Win2012 系统来进行测试以确认,并且目前无法切换生产服务器 2012。
提前致谢
答案1
您需要指定 DNS 服务器,否则它将在本地服务器上运行,因此如果您远程运行此 cmdlet,则需要指定您希望它影响的 DNS 服务器的位置。
使用:
-ComputerName
在 cmdlet 中指定您想要更改的 DNS 服务器的名称或 IP。
指定 DNS 服务器。如果不指定此参数,则命令将在本地系统上运行。您可以指定 IP 地址或任何可解析为 IP 地址的值,例如完全限定域名 (FQDN)、主机名或 NETBIOS 名称。
但是,该 cmdlet 仅指定 Windows 8.1 和 Windows 2012 R2。因此它很可能无法在这些操作系统之前的任何版本上运行……这就是他们在 Technet 文档中指定它的原因。
答案2
您需要安装远程服务器管理工具。
在服务器上,它们作为一项功能进行安装。
对于客户端,请谷歌搜索“rsat windows 7”并下载安装程序。
安装后,您将获得可用于导入模块 cmd-let 的 powershell 服务器管理模块。
[编辑] DndServer 模块随 win8.1 RSAT 一起提供。不过,您可以在 win7 上以其他方式执行此操作,请参阅脚本编写人员:http://blogs.technet.com/b/heyscriptingguy/archive/2010/09/13/manage-dns-in-a-windows-environment-by-using-powershell.aspx
但是,几周前我迁移了 dns 服务器,因此导入了 csv 文件(我写答案时没有想到这一点)。我发现从 powershell 调用 dnscmd 比乱搞要容易得多。
这是我使用的实际执行,csv 导入和循环被剥离:
dnscmd $DNS_DNSServerName /recordadd $DNS_Domain $DNS_Name $DNS_ResourceType $DNS_Data
答案3
看一下这个:
我们要使用的服务器
$newDNSServers = “192.168.1.1”,“192.168.1.2”
获取所有已设置 DNS 服务器的网络适配器
$adapters = Get-WmiObject Win32_NetworkAdapterConfiguration | Where-Object {$_.DNSServerSearchOrder -ne $null}
为所有先前找到的适配器设置 DNS 服务器搜索顺序
$adapters | ForEach 对象 {$_.SetDNSServerSearchOrder($newDNSServers)}