Hoy nos toca trabajar con estaciones de trabajo, se me ocurren muchas maneras de sacarle provecho a lo que a continuación explicaré y nos dará una visión y un enfoque muy profesional en el momento de trabajar cuando nos pidan listados, tengamos que localizar algún hosts, seleccionar grupos de hosts con ciertas características,etc ...
[1] Para asegurarnos que vamos a poder ejecutar los comando correctamente debemos abrir una consola de PS como usuario administrador e imporatar el modolo de AD con el siguiente comado:
import-module activedirectory
[2] Antes de seguir recomendaría mirar la ayuda de este comando, donde veremos un monton de información y ejemplos útiles: "Get-Help Get-ADComputer -Full" si queremos que nos la muestre con pausas podemos añadir "| more" como en la mayora de comados y podremos leerla con pausas Get-Help Get-ADComputer -Full | more.
[3] Si queremos ver todas las características de este tipo de objeto de la manera más sencilla podría ser: Get-ADComputer -Filter * -Property *. Si solo lo queremos ver de algún computer/s en concreto podemos usar filtros Get-ADComputer -Filter 'objectclass -eq "PC0001"' -Property *
También podemos hacer uso del query Get-ADComputer -Filter 'Name -like "PC*"' -Properties IPv4Address | FT Name,DNSHostName,IPv4Address -A donde nos mostrará una lista de todos los computers que empiecen con "PC"
[4] Si solo queremos que nos muestre alguna propiedad en concreto añadiremos el "-Filter * -Properties propiedad1, propiedad2, ...propiedadX" por ejemplo: Get-ADComputer -Filter * -Property Name,DNSHostName,IPv4Address | Select-Object Name, DNSHostName, IPv4Address
[5] Para direccionar todas esta información en columnas a un fichero de texto en formato CSV podemos hacer lo siguiente:
Get-ADComputer -Filter * -Property * | Select-Object Name, OperatingSystem, OperatingSystemServicePack, OperatingSystemVersion | Export-CSV c:\AllWindows.csv -NoTypeInformation -Encoding UTF8
[6] Otra manera de sacar la información por pantalla un poco más elegante: Get-ADComputer -Filter * -Property * | Format-Table Name, OperatingSystem, OperatingSystemServicePack, OperatingSystemVersion -Wrap –Auto | Export-CSV c:\AllWindows.csv
[7] Si queremos acotar más la búsqueda y limitar a una OU en concreto podemos hacer lo siguiente:
Get-ADComputer -LDAPFilter "(name=*W1*)" -SearchBase "CN=Computers, DC=MiDominio, DC=local" | Format-Table
[8] Si lo que nos interesa es filtrar por versión de sistema operativo, una forma podría ser
Para servidores:
Get-ADComputer -Filter {OperatingSystem -Like "Windows Server*"} -Property * | Format-Table Name, IPv4Address, OperatingSystem,OperatingSystemServicePack -Wrap -Auto
Get-ADComputer -Filter {OperatingSystem -NotLike "*Server*"} -Property * | Format-Table Name, IPv4Address, OperatingSystem,OperatingSystemServicePack -Wrap -Auto
También lo podemos hacer de la siguiente manera:
Miramos en la propiedad "OperatingSystemVersion" el valor y la en "OperatingSystem" vemos la descripción:
Nos saldrán estos valores
Con lo que podemos hacer la siguiente búsqueda: Get-ADComputer -Filter {OperatingSystemVersion -ge "6.2"} -Property * | Format-Table Name,OperatingSystem,OperatingSystemVersion -Wrap -Aut
Documento de referencia: http://blogs.technet.com/b/askds/archive/2010/02/04/inventorying-computers-with-ad-powershell.aspx
GoN. Julio 2015