Доброе время суток уважаемые хабрасоседи.
Только получив на предприятии Windows 8 мы (т.е. я) сразу поставили ее на рабочий компьютер и без тренировки сразу кинулись в бой. Из всех новых интересных вещей Windows 8 меня больше всего интересовал PowerShell версии 3.
Здесь мы не будем рассматривать новые возможности синтаксиса и т.п. вещей. А рассмотрим мы конкретно то, чего ждали многие (надеюсь, не преувеличиваю) системные администраторы любящие AD & PowerShell, а именно модули для управления DNS и DHCP.
Отвертки нет?
Так почему же мы (ну ладно, я) ждали эти командлеты. Что у нас было до этого. Даже если брать время, когда не было даже модуля ActiveDirectory, мы могли управлять (в принципе, и сейчас можем) объектами AD в основном с помощью ADSI. Но я думаю вряд ли кто то будет спорить, что модуль ActiveDirectory удобнее и легче в использовании (кто не согласен, давайте спорить).
Для DHCP был модуль на основе netsh dhcp. При больших областях, даже команда вывести записи в определенной области обрабатывалась у меня минут 10, что в принципе не слишком здорово (это еще мягко сказано).
Что было для DNS, к сожалению, не знаю, но подозреваю что какие-нибудь костыли имели место.
Сейчас же у нас есть средства для автоматизации и упрощения работы с давно знакомыми вещами. Не знаю как вы а я счастлив как школьница на концерте Джастина Тимберлейка.
Модуль DHCP
Больше всего меня интересовал модуль для управления DHCP, так как в оснатску DHCP я заглядываю намного чаще чем в DNS.Называется модуль DHCPServer:
PS [1] > get-command -module DHCPserver | measure
Count : 103
Average :
Sum :
Maximum :
Minimum :
Property :
103 командлета предлагает нам новый модуль. Разберем наиболее интересные и, в будущем, часто используемые.
Начнем с самого простого, для начала найдем все DHCP сервера у нас в лесу:
PS [2] > Get-DhcpServerInDC
IPAddress DnsName
--------- -------
192.168.0.1 DC01.OLOLO.com
192.168.9.1 DC01.Detroit.OLOLO.com
192.168.0.5 WDS.OLOLO.com
Я думаю, комментарии не нужны. Единственное может возникнуть вопрос. почему тут же показывается сервер WDS? DHCP прослушивает 67 UDP порт и до WDS он оставался единственным, кто его слушал. Скорее всего данный командлет с помощью широковещательных пакетов по 67 порту определяет сервера DHCP. Но так как WDS тоже отвечает, по этому он и попал в наш список.
Сервер мы нашли, теперь посмотрим какие у него области. У меня на тестовой машине 1 область, по этому список будет небольшой
PS [3]> Get-DhcpServerv4Scope
ScopeId SubnetMask Name State StartRange EndRange LeaseDuration
------- ---------- ---- ----- ---------- -------- -------------
192.168.0.0 255.255.255.0 First Scope Active 192.168.0.100 192.168.0.200 8.00:00:00
Как видим, отображаемая информация полезна при анализах областей. Например 3 последних столбца (начальный и конечный IP, а так же время аренды) лишними никогда не будут. Если сравнивать эту информацию с графической оснасткой, то преимущество данного способа очевидно.
Посмотрим информацию об области
PS [4]> Get-DhcpServerv4ScopeStatistics 192.168.0.0
ScopeId Free InUse PercentageInUse Reserved Pending SuperscopeName
------- ---- ----- --------------- -------- ------- --------------
192.168.0.0 87 3 3,333333 1 0
Вообще замечательно! Если областей очень много и необходимо следить за ее заполнением, то это очень помогает. Области можно указывать через запятую или вообще, передать через конвейер из предыдущего командлета (Get-DhcpServerv4Scope).
Здесь стоит отметить, что диапазоны адресов, которые исключены из раздачи, сюда не попадают. Т.е. если у вас область раздает 100 адресов (например с 192.168.0.100 по 192.168.0.200) и при этом диапазон в 50 адресов (с 192.168.0.30 по 192.168.0.80) будут указаны как адреса которые не будут выдаваться в аренду, то, даже если они будут все свободные, они не будут учитываться в предыдущем примере, и Вы не увидите их в следующем примере (Помните об этом).
А следующий пример показывает нам, что теперь есть возможность узнать, какие адреса области свободны
PS [5]> Get-DhcpServerv4FreeIPAddress -ScopeID 192.168.0.0 -NumAddress 5
192.168.0.103
192.168.0.104
192.168.0.105
192.168.0.106
192.168.0.107
Нужен адрес для резервации но не знаешь какой свободен? Вуаля! Можно указывать не только количество необходимых адресов, но и начальный и конечный адреса диапазона. Это было лирическое отступление, вернемся к нашей области.
Дальше, нам интересны непосредственно сами клиенты, поглядим информацию о них
PS [5]> Get-DhcpServerv4Lease -ScopeId 192.168.0.0
IPAddress ScopeId ClientId HostName AddressState LeaseExpiryTime
--------- ------- -------- -------- ------------ ---------------
192.168.0.100 192.168.0.0 00-15-5d-0f-e6-0c PC-NEW27.OLOLO.com Active 18.12.2012 9:43:15
192.168.0.101 192.168.0.0 00-15-5d-0f-e6-00 PC-NEW20.OLOLO.com Active 18.12.2012 10:29:59
192.168.0.102 192.168.0.0 00-15-5d-0f-e6-02 PC-NEW25.OLOLO.com Active 18.12.2012 10:15:45
Данный командлет является аналогом пункта «Арендованные адреса» в графической оснастке. Хочется отметить, что данный командлет отображает все адреса (и резервации и аренды). И далее мы это увидим, после того, как зарезервируем адрес
PS [6]> Add-DhcpServerv4Reservation -IPAddress 192.168.0.120 -ScopeId 192.168.0.0 -ClientId 00-15-5d-0f-e6-02 -Description "My computer"
PS [7]> Get-DhcpServerv4Lease -ScopeId 192.168.0.0
IPAddress ScopeId ClientId HostName AddressState LeaseExpiryTime
--------- ------- -------- -------- ------------ ---------------
192.168.0.100 192.168.0.0 00-15-5d-0f-e6-0c PC-NEW27.OLOLO.com Active 18.12.2012 9:43:15
192.168.0.101 192.168.0.0 00-15-5d-0f-e6-00 PC-NEW20.OLOLO.com Active 18.12.2012 10:29:59
192.168.0.120 192.168.0.0 00-15-5d-0f-e6-02 PC-NEW25.OLOLO.com ActiveReservation
Раз уж заговорили о графическом интерфейсе, то следующая команда является аналогом пункта «Резервации»
PS [8]> Get-DhcpServerv4Reservation -ScopeID 192.168.0.0
IPAddress ScopeId ClientId Name Type Description
--------- ------- -------- ---- ---- -----------
192.168.0.120 192.168.0.0 00-15-5d-0f-e6-02 PC-New16.catalog.rsl Both My computer
Мы выбрали показать нам все резервации области (т.к. она там 1, по этому и показал 1). Заметил интересную особенность данного командлета. Если попросить найти его запись аренды, указав IP, он ее покажет, хоть она и не является резервацией.
Сразу понятно, что таким образом искать резервации и аренды гораздо проще и удобнее нежели в графическом интерфейсе.
Напоследок, вспомним о backupах. В данном модуле появились несколько командлетов, которые позволяют сохранять настройки и данные сервера DHCP и восстанавливать их при необходимости. Это две пары командлетов:
- Export-DHCPServer & Import-DHCPServer
- BackUP-DHCPServer & Restore-DHCPServer
Все данные команды можно применять к областям IPv4 и IPv6. Для этого есть два разных типа командлетов в этом модуле (например Get-DhcpServerv4Lease и Get-DhcpServerv6Lease).
Модуль DNS
Получение информации и управление DNS не менее важно хотя и не так часто необходимо, как DHCP. Но все же, эта служба требует к себе внимания, и обойти ее мне не позволила совесть.
Начнем с простого, получим информацию о сервере DNS с помощью Get-DNSServer. Вывод того, что мне вышло на экран, я здесь выкладывать не буду, т.к. слишком уж много за раз. Но здесь находится почти вся инфомрация о настройках нашего сервера.
Помимо этого, мы можем посмотреть информацию о зонах DNS
PS [10]> Get-DnsServerZone
ZoneName ZoneType IsAutoCreated IsDsIntegrated IsReverseLookupZone IsSigned
-------- -------- ------------- -------------- ------------------- --------
_msdcs.OLOLO.com Primary False True False False
0.in-addr.arpa Primary True False True False
127.in-addr.arpa Primary True False True False
255.in-addr.arpa Primary True False True False
OLOLO.com Primary False True False False
Заметим, что здесь выводятся как прямые так и обратные зоны. Не стали делать разные командлеты под разные зоны, и это правильно, ведь всегда можно воспользоваться фильтром.
Создадим какую нибудь запись в нашей зоне. Например, создадим псевдоним и сразу посмотрим все наши записи в прямой зоне
PS [11]> Add-DnsServerResourceRecordCName -ZoneName ololo.com -Name NewAlias -HostNameAlias pc-new26.o
lolo.com
PS [12]> Get-DnsServerResourceRecord -ZoneName: ololo.com
HostName RecordType Timestamp TimeToLive RecordData
-------- ---------- --------- ---------- ----------
@ A 10.12.2012 15:00:00 00:10:00 192.168.0.10
@ NS 0 01:00:00 pc-new26.ololo.com.
@ SOA 0 01:00:00 [51][pc-new26.ololo.com.][hostm...
_msdcs NS 0 01:00:00 pc-new26.ololo.com.
_gc._tcp.Default-First... SRV 10.12.2012 15:00:00 00:10:00 [0][100][3268][pc-new26.ololo.com.]
_kerberos._tcp.Default... SRV 10.12.2012 15:00:00 00:10:00 [0][100][88][pc-new26.ololo.com.]
_ldap._tcp.Default-Fir... SRV 10.12.2012 15:00:00 00:10:00 [0][100][389][pc-new26.ololo.com.]
_gc._tcp SRV 10.12.2012 15:00:00 00:10:00 [0][100][3268][pc-new26.ololo.com.]
_kerberos._tcp SRV 10.12.2012 15:00:00 00:10:00 [0][100][88][pc-new26.ololo.com.]
_kpasswd._tcp SRV 10.12.2012 15:00:00 00:10:00 [0][100][464][pc-new26.ololo.com.]
_ldap._tcp SRV 10.12.2012 15:00:00 00:10:00 [0][100][389][pc-new26.ololo.com.]
_kerberos._udp SRV 10.12.2012 15:00:00 00:10:00 [0][100][88][pc-new26.ololo.com.]
_kpasswd._udp SRV 10.12.2012 15:00:00 00:10:00 [0][100][464][pc-new26.ololo.com.]
DomainDnsZones A 10.12.2012 15:00:00 00:10:00 192.168.0.10
_ldap._tcp.Default-Fir... SRV 10.12.2012 15:00:00 00:10:00 [0][100][389][pc-new26.ololo.com.]
_ldap._tcp.DomainDnsZones SRV 10.12.2012 15:00:00 00:10:00 [0][100][389][pc-new26.ololo.com.]
ForestDnsZones A 10.12.2012 15:00:00 00:10:00 192.168.0.10
_ldap._tcp.Default-Fir... SRV 10.12.2012 15:00:00 00:10:00 [0][100][389][pc-new26.ololo.com.]
_ldap._tcp.ForestDnsZones SRV 10.12.2012 15:00:00 00:10:00 [0][100][389][pc-new26.ololo.com.]
NewAlias CNAME 0 01:00:00 pc-new26.ololo.com.
pc-new26 A 0 01:00:00 192.168.0.10
PC-NEW27 A 23.11.2012 9:00:00 00:20:00 192.168.0.100
Видимо, что нам решили выводить все записи скопом, а уж какие нас интересуют, сами будем решать.
Еще из «повседневных» команд нам могут пригодиться Show-DnsServerCache и Clear-DnsServerCache. Здесь комментарии излишни.
В конце
Данные два модуля очень облегчили жизнь мне, по этому я призываю Вас обратить на них внимание. Автоматизация важная вещь в нашей работе, так что не поленитесь потратить небольшой кусочек рабочего времени на эти командлеты.
Здесь я не ставил задачу описать все, что есть в этих модулях. Я постарался выделить наиболее важные (по моему скромному мнению) и наиболее часто используемые командлеты (нет, я не устал писать это слово).
С помощью Get-Help вы найдете там намного больше, чем есть тут.
Автор: uksus