Búsqueda de sitios web

Obtenga números de serie de todas las computadoras del dominio con PowerShell


Hace algún tiempo, uno de mis contactos de LinekIn y miembro del grupo de ingenieros de PowerShell de mi grupo de LinkedIn publicó un One-Liner que obtiene el número de serie de la computadora local. Gracias por el consejo y la sugerencia. Después de pensarlo un poco, se me ocurrió la idea de intentar recuperar todos los números de serie de todas las computadoras de mi dominio. Mantengamos esto en forma de esta publicación de blog y compartámoslo con otros...

Introducción

Para obtener el número de serie de su computadora, abra Windows PowerShell y ejecute

wmic bios get serialnumber

O utilice Get-WmiObject.

Get-WmiObject win32_bios | Select Serialnumber

Hay más. Otra forma es utilizar Get-CimInstance.

Get-CimInstance Win32_Bios | Select-Object SerialNumber

Requisitos previos

Mi objetivo es recuperar todos los números de serie en un resultado fácil de usar y de leer. Asegúrese de que WinRM esté habilitado en todas las computadoras remotas (Windows Server 2012/2016 habilitado de manera predeterminada, Cliente de Windows deshabilitado de manera predeterminada). Para realizar pruebas, puede habilitarlo ejecutando Enable-PSRemoting en Windows PowerShell. Para entornos grandes, recomiendo configurar WinRM mediante la Política de grupo:

Políticas de grupo: habilitación de WinRM para sistemas operativos de cliente Windows (Windows 10, Windows 8, Windows 7)

Aaa y… ¡Acción!

Todas las computadoras deben compartir el mismo dominio de Active Directory. He iniciado sesión en uno de mis controladores de dominio. Aquí hay un resumen que me brinda todos los números de serie de todas las computadoras:

(Get-ADComputer -Filter *).Name | Foreach-Object {Get-CimInstance Win32_Bios -ComputerName $_ -ErrorAction SilentlyContinue | Select-Object PSComputerName,SerialNumber}

Para una visualización y salida más fáciles de usar, utilice Out-GridView...

Y si no le gustan los titulares (por ejemplo, PSComputerName), simplemente modifíquelos...

(Get-ADComputer -Filter *).Name | Foreach-Object {Get-CimInstance Win32_Bios -ComputerName $_ -ErrorAction SilentlyContinue | Select-Object @{n='Computername'; e={$_.PSComputerName}},SerialNumber}

Conclusión

Este escenario definitivamente no reemplaza una solución empresarial como SCCM. Sólo podemos obtener números de serie de computadoras encendidas. Con SCCM, todas las computadoras informan su estado en una rutina basada en tiempo al servidor SCCM, lo cual es mucho más cómodo, útil y actualizado.

Artículos relacionados