Cómo crear un script de inventario de arrendamientos de Microsoft DHCP

agosto 26, 2018 Seguridad y Cumplimiento, MOVEit

Normalmente, las organizaciones grandes suelen a tener una gran cantidad de dispositivos que requieren direcciones IP. Las computadoras de escritorio, tabletas, teléfonos móviles y de escritorio, servidores y más tienden a consumir direcciones IP. La única manera de administrar todas estas direcciones IP es usar el ‘protocolo de configuración dinámica de host’ de Microsoft (DHCP por sus siglas en ingles), que también administrará qué dispositivos obtienen qué IP a través de arrendamientos DHCP. Aunque el servidor DHCP en Microsoft Windows haga la mayor parte del trabajo por usted, habrán ocasiones donde tendrá que crear informes y consultar el estado actual de arrendamiento DHCP de un dispositivo en varios servidores y ámbitos DHCP.

En este artículo, le enseñare cómo crear un script de PowerShell para descubrir todos los servidores DHCP de Microsoft en un dominio de Directorio Administrativo (AD por sus siglas en ingles), todos los ámbitos en todos esos servidores y todos los arrendamientos dentro de esos ámbitos. Le proporcionará una manera simple de ejecutar informes de arrendamiento DHCP de un momento especifico y también consultar fácilmente todas las concesiones de DHCP en su organización para arrendamientos que coincidan con criterios específicos.

Primeros pasos

Antes de comenzar, voy a suponer lo siguiente:

  • Que tiene PowerShell v4 + instalado en la computadora en la que está ejecutando el script
  • Que su computadora está en un dominio de Directorio Administrativo (AD)
  • Que tiene el paquete de herramientas de ‘administración de servidor remoto’ instalado con el módulo de servidor DHCP habilitado
  • Que tiene los derechos apropiados para enumerar los arrendamientos DHCP en su entorno

Enumerando todos los servidores DHCP, ámbitos y arrendamientos

Para encontrar todos los arrendamientos DHCP en un entorno, primero tendrá que enumerar todos los servidores DHCP de su dominio. Para hacer esto, use el comándulo (cmdlet) Get-DhcpServerInDc. Esto recuperará todos los servidores DHCP permitidos que se hayan registrado en el directorio administrativo.

$DhcpServer = Get-DhcpServerInDC

A continuación, necesitaremos enumerar todos los ámbitos en cada uno de estos servidores DHCP. Para hacer eso, usaremos el comándulo Get-DhcpServeV4Scope.

@($DhcpServer).foreach({

Get-DhcpServerv4Scope -ComputerName $_.DnsName

})

A continuación, daremos el último paso y recuperaremos cada arrendamiento activo dentro de cada uno de esos ámbitos.

@($DhcpServer).foreach({

@(Get-DhcpServerv4Scope -ComputerName $_.DnsName).foreach({

Get-DhcpServerv4Lease –ComputerName $_.DnsName –ScopeId $_.ScopeId

})

})

El script por si solo intentará enumerar todos los arrendamientos en todos los ámbitos en todos los servidores DHCP que estén registrados dentro del dominio actual. Esta es una buena manera de generar un informe de todo, pero ¿Cómo filtraría los resultados de los arrendamientos por ciertos atributos, como direcciones IP o direcciones MAC?

Aprenda a automatizar las tareas de TI con PowerShell. Descargue este libro electrónico.

Aplicando filtros

Para hacerlo, deberá reducir el número de resultados y usar un parámetro diferente del comándulo Get-DhcpServerV4Lease. Demostrémoslo solo recuperando arrendamientos con dirección IP de 1.1.1.1. La mayoría de nuestro código se verá exactamente igual, pero los parámetros de Get-DhcpServerV4Lease serán un poco diferentes.

$DhcpServer = Get-DhcpServerInDC

@($DhcpServer).foreach({

@(Get-DhcpServerv4Scope -ComputerName $_.DnsName).foreach({

Get-DhcpServerv4Lease –ComputerName $_.DnsName –IpAddress '1.1.1.1'

})

})

Mire que al limitar la salida de arrendamiento por dirección IP, no puede usar ScopeId. Esta es una limitación del comándulo Get-DhcpServerV4Lease. Si lo intenta, verá un error que indica que el conjunto de parámetros no se puede resolver.

Related: Automate Data Encryption Using PowerShell

Si necesita reducir el número de resultados de arrendamiento por dirección MAC, puede cambiar los parámetros y usar ScopeId y ClientId.

Get-DhcpServerv4Lease –ComputerName 'SRV1' –ScopeId '10.10.10.0' –ClientId $MacAddress

Encontrará que, dependiendo de los parámetros configurados, puede limitar los resultados de varias maneras. Para obtener una lista de los parámetros que puede usar para Get-DhcpServerV4Lease, use Get-Help.

Get-Help Get-DHCPServerv4Lease –Detailed

También es posible filtrar los resultados por nombre de host. Pero, desafortunadamente, no hay ningún parámetro para hacer esto en Get-DHCPServerv4Lease. Tendrá que usar el comándulo Where-Object o el método .Where() en la versión PowerShell v4 o más reciente.

$HostName = 'COMPUTER1','COMPUTER2'

$leases = @(Get-DhcpServerv4Lease –ComputerName 'SRV1' –ScopeId

'10.10.10.0').where({$_.Hostname -in $HostName})

Para una demostración completa de esta técnica, he creado un script llamado Get-DhcpLease. Este script tiene todo lo que hemos discutido aquí: profundiza en las capacidades de filtrado e incluye la opción de consultar servidores DHCP específicos.

Adam Bertram

Adam Bertram is a 20-year veteran of IT. He’s currently an automation engineer, blogger, independent consultant, freelance writer, author, and trainer. Adam focuses on DevOps, system management, and automation technologies as well as various cloud platforms. He is a Microsoft Cloud and Datacenter Management MVP and efficiency nerd that enjoys teaching others a better way to leverage automation.