Estou procurando criar um script que elimine as concessões DHCP duplicadas do nosso servidor DHCP baseado no Windows Server 2008 R2. Descobri que você não pode fazer isso de forma nativa no PowerShell, mas pode usar o PowerShell para chamar um comando netsh.exe e manipular os dados.
Comando para listar todas as concessões de DHCP:
netsh dhcp server 10.100.2.241 scope 10.100.0.0 show clients 1
A saída resultante é um pouco confusa:
Changed the current scope context to 10.100.0.0 scope.
Type : N - NONE, D - DHCP B - BOOTP, U - UNSPECIFIED, R - RESERVATION IP
============================================================================================
IP Address - Subnet Mask - Unique ID - Lease Expires -Type -Name
============================================================================================
10.100.0.51 - 255.255.248.0 - 00-11-22-33-44-55 -24/05/2016 21:29:01 -D- WT008064807e32.domain.com
10.100.0.52 - 255.255.248.0 - 00-11-22-33-44-55 -24/05/2016 20:13:47 -D- EXT1054.domain.com
10.100.0.53 - 255.255.248.0 - 00-11-22-33-44-55 -24/05/2016 22:54:14 -D- EXT1018.domain.com
10.100.0.54 - 255.255.248.0 - 00-11-22-33-44-55 -24/05/2016 11:01:57 -D- V2040.domain.com
10.100.0.55 - 255.255.248.0 - 00-11-22-33-44-55 -24/05/2016 19:50:19 -D- V1041.domain.com
----SNIP----
Como exemplo, o host V2119 é listado duas vezes na saída com diferentes endereços IP e Lease Expiry times:
V2119 - 10.100.6.45 - 24/05/2016 23:24:43
V2119 - 10.100.5.167 - 24/05/2016 23:06:21
Neste exemplo, eu excluiria 10.100.5.167 já que ele expiraria antes e, portanto, é a concessão mais antiga e redundante.
Comando para excluir uma concessão específica por IP:
netsh dhcp server 10.100.2.241 scope 10.100.0.0 delete lease 10.100.5.167
Eu encontrei este artigo, em que o OP usa a saída do comando netsh no PowerShell e, em seguida, apara vários bits para retornar apenas uma lista de nomes de host e IPs. Embora o resultado não seja o que eu estou procurando, o corte pode ser útil. - link
Basicamente, eu preciso de um script para gerar todas as concessões no DHCP, descobrir quais nomes de host estão duplicados, depois daqueles duplicados que irão expirar antes e retornar o endereço IP e então canalizar isso para a netsh delete comando de locação acima.
Qualquer ajuda que você possa me dar sobre isso seria incrível e muito apreciada.
Dê-me um grito se precisar esclarecer alguma coisa.