Недавно я обнаружил, что можно просто автоматизировать администрирование записей DNS с помощью красивого командлета:
Import-Module DnsServer
Add-DnsServerResourceRecordA -Name mail2 -IPv4Address 192.168.0.10 -ZoneName powershell.local
Я хотел бы запустить это на компьютере с Windows 2008 R2 (он вызывается в веб-службе), чтобы изменить запись DNS на другом. Я видел, что Powershell v3 уже поддерживает это, но я не мог заставить его работать и на Powershell v4, очевидно, модуль не может быть импортирован. Это потому, что я тестировал его на машине с Windows 7? У меня есть машина для разработки Windows 7, на которой я хотел бы разрабатывать и отлаживать ее. Возможно ли, что мне придется как-то перезагрузить этот модуль? Если да, то как я могу это сделать?
Я видел на странице MS, что он поддерживается в Windows Server 2012, но у меня нет системы Win2012, чтобы протестировать ее для подтверждения, и переключение продуктивных серверов 2012 в настоящее время невозможно.
Заранее большое спасибо
Вам необходимо установить инструменты администрирования удаленного сервера.
На сервере они устанавливаются как функция.
Для клиента погуглите "rsat windows 7" и скачайте установщик.
После установки вы получите модули администрирования сервера powershell, доступные для модуля импорта cmd-let.
[РЕДАКТИРОВАТЬ] Модуль 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
Однако я выполнил импорт файла csv, поскольку я перенес DNS-сервер всего пару недель назад (о чем я не думал, когда писал свой ответ). Мне было проще вызвать dnscmd из PowerShell, чем бездельничать.
Вот фактическое выполнение, которое я использовал, импорт csv и цикл удалены:
dnscmd $DNS_DNSServerName /recordadd $DNS_Domain $DNS_Name $DNS_ResourceType $DNS_Data
Вам нужно будет указать DNS-сервер, в противном случае он работает на локальном сервере, поэтому, если вы запускаете этот командлет удаленно, вам нужно будет указать, где находится DNS-сервер, на который вы хотите повлиять.
Использование:
-ComputerName
в командлете и укажите имя или IP-адрес DNS-сервера, на котором вы хотите его изменить.
Задает DNS-сервер. Если вы не укажете этот параметр, команда будет запущена в локальной системе. Вы можете указать IP-адрес или любое значение, которое разрешается в IP-адрес, например полное доменное имя (FQDN), имя хоста или имя NETBIOS.
Однако командлет указывает только Windows 8.1 и Windows 2012 R2. Таким образом, он, скорее всего, не будет работать ни на чем до этих ОС ... поэтому они указывают это в документации на Technet.
Проверь это:
$ newDNSServers = "192.168.1.1", "192.168.1.2"
$ adapters = Get-WmiObject Win32_NetworkAdapterConfiguration | Where-Object {$ _. DNSServerSearchOrder -ne $ null}
адаптеры $ | ForEach-Object {$ _. SetDNSServerSearchOrder ($ newDNSServers)}