HOWTO · PowerShell

Get-ADComputer -Filtro en PowerShell

Este artículo demuestra acerca de Get-ADComputer -Filter para sistemas operativos en PowerShell.

En esta página

Use Get-ADComputer -Filter para buscar cuentas de equipo de Active Directory por sus atributos. El parámetro -Filter acepta una expresión de estilo PowerShell, como Name -like '*elitebook*', que el controlador de dominio evalúa del lado del servidor, y el cmdlet devuelve un objeto de equipo por cada cuenta coincidente. Los comandos de Active Directory siguientes requieren el módulo ActiveDirectory, que se instala con las Herramientas de administración remota del servidor (RSAT) o ya está presente en un controlador de dominio, además de un dominio accesible. Se escriben como sintaxis adaptable en línea porque solo se ejecutan dentro de ese entorno; los programas de los bloques de código son equivalentes ejecutables e independientes de esas comparaciones, y la salida observada de cada uno aparece directamente debajo.

Recuperar una cuenta de equipo con Get-ADComputer

Get-ADComputer recupera una o varias cuentas de equipo de Active Directory y forma parte del módulo ActiveDirectory. En un equipo en el que el módulo esté instalado, Get-Help Get-ADComputer enumera los parámetros del cmdlet y los valores que acepta cada uno.

Proporcione una cuenta conocida a -Identity para recuperar exactamente ese equipo: Get-ADComputer -Identity PC-01. El parámetro acepta un nombre distintivo, un GUID, un identificador de seguridad (SID) o un sAMAccountName, por lo que puede hacer referencia a la cuenta en la forma que ya tengan sus datos.

El resultado es un objeto de equipo con un conjunto limitado de propiedades predeterminadas, como Name, DNSHostName, Enabled y SID. Los atributos como OperatingSystem no se cargan a menos que los solicite; Get-ADComputer -Identity PC-01 -Properties * recupera todos los atributos almacenados en la cuenta.

Filtrar equipos por nombre

Si solo conoce parte del nombre de un equipo, -Filter localiza todas las cuentas coincidentes. Dentro de la cadena de filtro, -like realiza una coincidencia con caracteres comodín, donde * representa cualquier secuencia de caracteres y la comparación no distingue entre mayúsculas y minúsculas.

Ejecute este ejemplo:

El código y las etiquetas o salidas visibles de esta sección se mantienen en inglés.

import fnmatch

print(fnmatch.fnmatchcase('ELITEBOOK-840-G8'.lower(), '*elitebook*'))
True

El mismo patrón dentro de -Filter se aplica al atributo Name de cada cuenta de equipo del directorio, de modo que Get-ADComputer -Filter "Name -like '*elitebook*'" devuelve todos los equipos coincidentes. La coincidencia se ejecuta en el controlador de dominio antes de que los resultados atraviesen la red, lo cual es mucho más rápido que recuperar todas las cuentas y probarlas localmente con Where-Object. Cada coincidencia llega como un objeto de equipo, por lo que puede enviar el resultado por la canalización a Format-Table, Select-Object o cualquier otro cmdlet para seguir procesándolo.

Filtrar equipos por sistema operativo y varios criterios

Los administradores suelen necesitar una lista de equipos que ejecutan un sistema operativo determinado, por ejemplo, para planificar actualizaciones o aplicar una directiva. El atributo OperatingSystem almacena una cadena como Windows 10 Enterprise, por lo que Get-ADComputer -Filter "OperatingSystem -like '*Windows 10*'" coincide con todas las ediciones que contienen el nombre de la versión.

-eq compara el valor completo del atributo, lo que resulta adecuado para cadenas exactas, mientras que -or y -and combinan varios criterios en un solo filtro. La misma comparación en forma ejecutable:

El código y las etiquetas o salidas visibles de esta sección se mantienen en inglés.

os_name = 'Windows 11 Pro'
print(os_name == 'Windows 10' or os_name == 'Windows 11 Pro')
True

Aplicado al directorio, Get-ADComputer -Filter "OperatingSystem -eq 'Windows 10' -or OperatingSystem -eq 'Windows 11'" devuelve los equipos cuyo valor registrado es exactamente una de las dos cadenas, y cambiar -or por -and reduce el conjunto de resultados en lugar de ampliarlo. Los valores registrados suelen incluir un sufijo de edición como Pro, por lo que un comodín final como OperatingSystem -like 'Windows 10*' suele coincidir con más equipos que -eq con solo el nombre de la versión.

Seleccionar propiedades y exportar resultados

Dado que el filtrado se ejecuta en el controlador de dominio, un atributo utilizado dentro de -Filter no tiene que estar entre las propiedades devueltas. Sin embargo, para mostrar o guardar OperatingSystem, solicítelo con -Properties y dé forma a la salida con Select-Object: Get-ADComputer -Filter "OperatingSystem -like 'Windows 10*'" -Properties OperatingSystem | Select-Object Name, OperatingSystem.

Envíe los objetos seleccionados por la canalización a Export-Csv para guardarlos en un archivo. -NoTypeInformation omite el encabezado de tipo de .NET, de modo que el CSV contiene únicamente la fila de encabezados y los datos, y -Path acepta cualquier ubicación en la que se pueda escribir: Get-ADComputer -Filter * -Properties OperatingSystem | Select-Object Name, OperatingSystem | Export-Csv -Path .\computers.csv -NoTypeInformation.

El CSV resultante puede abrirse en una hoja de cálculo o servir de entrada a otros comandos de PowerShell para informes y tareas administrativas posteriores.