Ni que decir tiene que las máquinas, ya sean servidores o equipos, deben estar encendidas y accesibles desde tu red. Aquí va el script:
$file= "C:\listado.txt"
$inf = get-content $file
Out-File -FilePath C:\listadocompleto.txt -Append -InputObject "servidor;serial;modelo"
Foreach($server in $inf)
{
$serial = gwmi win32_bios -computername $server |Select-Object -ExpandProperty SerialNumber
$model = Get-CimInstance -ClassName Win32_ComputerSystem -computername $server | Select-Object -ExpandProperty model
Out-File -FilePath C:\listadocompleto.txt -Append -InputObject "$server;$serial;$model"
}
Como ves, realmente el script ejecuta sobre cada una de las lineas del documento "listado.txt" los comandos gwmi win32_bios -computername, que te va los valores de versión de BIOS, fabricante, nombre de versión, Numero de Serie, y versión (que no es exactamente el modelo).
luego, al comando gwmi win32_bios -computername se le hace un "|" para indicarle que el único dato que queremos extraer es el SerialNumber. En la imagen superior puede ver los dos ejemplos, el comando ejecutado al completo, o sin la selección de SerialNumber.
Con la siguiente linea sucede lo mismo: tenemos Get-CimInstance -ClassName Win32_ComputerSystem -computername, que nos da una serie de valores como el nombre del equipo, propietario, dominio, memoria fisica, modelo (que es lo que nos interesa), y fabricante.
Igual que con el anterior comando, la primera parte nos da bastantes datos, y con el "|" agregamos el "Select-Object -ExpandProperty model" para obtener únicamente el modelo del equipo.
Finalmente, la ultima parte del script mete en un nuevo documento los equipos del listado inicial, y agrega el resto de campos solicitados.