sergey vasin

The IT blog

Weekend Scripter: Парсить базу DHCP? Нет! — Hey, Scripting Guy! Blog

leave a comment »

Резюме: Microsoft Scripting Guy, Ed Wilson рассказывает о функциях Windows PowerShell модуля DHCPServer для парсинга базы данных DHCP.

Microsoft Scripting Guy, Ed Wilson на связи. Дайте нам некоторое количество времени и мы в конце концов сделаем все правильно. Да, теперь вы можете просматривать базу DHCP для записей IPv4 при помощи Windows PowerShell (вы также можете просматривать записи IPv6). Почему это хорошо? Ну, во-первых, DHC Pиспользует формат файла .mdb, который, как многие знают, является «стандартным форматом jet-базы данных». Для работы с этим форматом можно использовать Microsoft Access, и каждый может выполнять запросы к базе DHCP используя стандартные средства. Однако, до Windows Server 2012 это не поддерживалось.

Выполняем запросы к базе DHCP

Почему может потребоваться запрашивать базу DHCP? В небольших сетях эта необходимость может и не появиться. Кроме того, для этого я могу использовать оснастку DHCP.

01

Однако, здесь есть несколько проблем. Во-первых, она медленно подключается. Далее, она всегда требует некоторого количества нажатий мышкой. Также она всегда требует сохранения (даже если я не производил в консоли никаких изменений).

Используя Windows PowerShell, запросы можно выполнить гораздо быстрее, мне даже не нужно предварительно загружать модуль DHCPServer, так как в Windows PowerShell 3.0 он загружается автоматически.

Ниже приведены несколько случаев, когда могут понадобиться запросы к базе DHCP.

1. Для проверки, используется ли IP-адрес

2. Для определения даты окончания аренды IP-адреса

3. Для сопоставления MAC-адреса IP-адресу

Кроме того, можно узнать и другую информацию, такую как статус NAP, использование политик DHCP, информацию о регистрации в DNS и даже дату окончания испытательного срока (probation period).

Находим доступные области DHCP

Первое, что мне необходимо узнать – какие IPv4 области находятся на сервере DHCP. Для этого я воспользуюсь функцией Get-DhcpServerv4Scope и укажу имя компьютера. Для запроса к определенному серверу мы можем указать как его имя, так и IP-адрес. Параметр ComputerName не является параметром по умолчанию, поэтому, если он отсутствует, функция запрашивает локальный компьютер. Кроме того, параметр ComputerName не позиционный, поэтому если указать компьютер, не указав имя параметра, функция вернет ошибку. К счастью этот параметр обладает алиасом cn, поэтому нам не обязательно вводить его длинное имя.

PS C:\> Get-DhcpServerv4Scope -cn wds1

ScopeId         SubnetMask      Name           State    StartRange      EndRange

——-         ———-      —-           ——    ———-      ———

192.168.0.0     255.255.255.0   lan            Active   192.168.0.40    192.168.0.90

192.168.2.0     255.255.255.0   WireLess       Active   192.168.2.50    192.168.2.99

192.168.3.0     255.255.255.0   Autodeploy     Active   192.168.3.1     192.168.3…

Запрашиваем информацию об аренде IP-адресов

Теперь, когда я знаю, какие области есть на сервере DHCP, я могу запросить информацию об аренде IP-адресов в определенной области.

PS C:\> Get-DhcpServerv4Lease -ComputerName wds1 -AllLeases -ScopeId 192.168.0

IPAddress       ScopeId         ClientId             HostName             AddressState

———       ——-         ———             ———             ———-

192.168.0.40    192.168.0.0     c4-3d-c7-a2-87-eb                         Active

192.168.0.41    192.168.0.0     00-1d-7e-62-29-78    Router1.iammred.net  Active

192.168.0.42    192.168.0.0     f0-de-f1-7d-97-7c    edLT.iammred.net     Active

192.168.0.43    192.168.0.0     e0-69-95-36-4e-e5    Hyperv3.iammred.net  Active

192.168.0.44    192.168.0.0     c0-3f-0e-3b-58-b6                         Active

192.168.0.45    192.168.0.0     00-21-86-52-f0-d6    EDWILSON_LT.north… Active

192.168.0.46    192.168.0.0     00-24-e8-3e-99-2a    hyperv2.iammred.net  Active

192.168.0.54    192.168.0.0     00-15-5d-00-2d-16    Web1.iammred.net     Active

Если мне нужна информация об определенном компьютере, я могу воспользоваться технологиями фильтрации Windows PowerShell. Мне не обязательно указывать полное DNS-имя компьютера, я могу использовать оператор match и указать только часть имени требуемого хоста.

PS C:\> Get-DhcpServerv4Lease -ComputerName wds1 -AllLeases -ScopeId 192.168.0 | ? hostname -match edlt

IPAddress       ScopeId         ClientId             HostName             AddressState

———       ——-         ———             ———             ———-

192.168.0.42    192.168.0.0     f0-de-f1-7d-97-7c    edLT.iammred.net     Active

Если мне нужна вся информация об аренде адреса компьютером edlt, я могу передать результаты функции командлету Format-Table (ft – его алиас). Команда и ее вывод приведены на рисунке.

02

Если же мне понадобиться информация о дате окончания аренды, я могу отобрать свойство LeaseExpiryTime. Следующая команда отбирает IP-адрес, имя хоста, дату окончания аренды, и затем сортирует результаты по времени окончания аренды в восходящем порядке.

15:16 C:\> Get-DhcpServerv4Lease -ComputerName wds1 -AllLeases -ScopeId 192.168.0 | select ipaddress, hostname, leaseExpiryTime | sort leaseExpiryTime

IPAddress                    hostname                    leaseExpiryTime

———                    ———                    —————

192.168.0.43                 Hyperv3.iammred.net         1/17/2013 1:59:53 PM

192.168.0.44                                             1/17/2013 2:10:22 PM

192.168.0.40                                             1/17/2013 4:47:30 PM

192.168.0.54                 Web1.iammred.net            1/18/2013 3:25:44 AM

192.168.0.41                 Router1.iammred.net         1/18/2013 11:17:34 AM

192.168.0.46                 hyperv2.iammred.net         1/18/2013 9:47:54 PM

192.168.0.42                 edLT.iammred.net            1/19/2013 9:38:18 AM

192.168.0.45                 EDWILSON_LT.northamerica… 1/19/2013 9:40:15 AM

Еще одна интересная вещь. Иногда мне приходится работать с машинами от одного и того же производителя. Эти машины обладают похожими MAC-адресами, поскольку три первых шестнадцатеричных значения определяют производителя. К примеру, MAC-префикс 00-15-5d соответствует корпорации Microsoft и может использоваться в виртуальных машинах.

15:19 C:\> Get-DhcpServerv4Lease -ComputerName wds1 -AllLeases -ScopeId 192.168.0 | ? clientID -match ‘^00-15-5d’

IPAddress       ScopeId         ClientId             HostName             AddressState

———       ——-         ———             ———             ———-

192.168.0.54    192.168.0.0     00-15-5d-00-2d-16    Web1.iammred.net     Active

Автор:

Ed Wilson, Microsoft Scripting Guy

Оригинал:

http://blogs.technet.com/b/heyscriptingguy/archive/2013/01/13/weekend-scripter-parsing-the-dhcp-database-no-way.aspx


Страницы в социальных сетях:

Twitter: https://twitter.com/vsseth
Facebook: https://fb.com/inpowershell
VKontakte: https://vk.com/inpowershell


Реклама

Written by Сергей Васин

Март 4, 2013 в 08:28

Опубликовано в HeyScriptingGuyBlog, PowerShell

Tagged with

Добавить комментарий

Заполните поля или щелкните по значку, чтобы оставить свой комментарий:

Логотип WordPress.com

Для комментария используется ваша учётная запись WordPress.com. Выход / Изменить )

Фотография Twitter

Для комментария используется ваша учётная запись Twitter. Выход / Изменить )

Фотография Facebook

Для комментария используется ваша учётная запись Facebook. Выход / Изменить )

Google+ photo

Для комментария используется ваша учётная запись Google+. Выход / Изменить )

Connecting to %s