Comandos de PowerShell equivalentes a WMIC en archivos Batch

En el pasado, la herramienta WMIC era el estándar para consultar información del sistema desde la consola. Sin embargo, hoy en día es mucho más eficiente y moderno utilizar PowerShell para lograr los mismos objetivos directamente dentro de un archivo batch. Este enfoque permite obtener resultados visualmente, como si fuera una consulta directa a la terminal.

Pantalla de computadora mostrando una línea de comandos con texto de código.
Ejemplo visual de cómo se ejecutan los scripts en consola dentro del entorno Windows.

Comandos para mostrar información en consola

El primer paso es generar los comandos de PowerShell que reemplacen a WMIC. Estos scripts deben imprimir el resultado directamente en la consola, manteniendo una salida limpia y fácil de leer.

Para obtener detalles básicos como el número de compilación del sistema operativo o el grupo de trabajo actual, se utiliza Get-CimInstance combinado con Write-Host. Por ejemplo, para consultar la versión del sistema:

powershell -Command "Write-Host 'BuildNumber'; (Get-CimInstance Win32_OperatingSystem).BuildNumber"

De manera similar, se pueden ejecutar comandos para unir equipos a un dominio o grupo de trabajo directamente desde el archivo batch. El comando para unir a un grupo de trabajo es:

powershell -Command "(Get-CimInstance Win32_ComputerSystem -Filter 'Name="NombreAntiguo"').JoinDomainOrWorkGroup('NuevoNombre')"

Guardando resultados en variables de Batch

Aunque obtener la información es útil, a menudo necesitamos guardar esos datos para usarlos más adelante dentro del mismo archivo. Para lograr esto, se utiliza un bucle for /f que captura la salida de PowerShell y la asigna a una variable de entorno.

Si deseas filtrar las direcciones IP asociadas al adaptador Ethernet y guardar el resultado en una variable llamada %IP%, el comando completo es:

for /f "delims=" %%A in ('powershell -Command "(Get-NetIPAddress -AddressFamily IPv4 | Where-Object { $_.InterfaceAlias -match ''Ethernet'' -and $_.IPAddress -match ''^10.0.135.'' }).IPAddress"') do set IP=%%A

Esta técnica es fundamental para automatizar tareas complejas sin depender de interacciones manuales.

Conclusión

Reemplazar WMIC por PowerShell en archivos batch no solo moderniza el proceso, sino que ofrece mayor flexibilidad. Ya sea para mostrar resultados directamente en pantalla o para almacenar datos en variables internas, esta metodología es la base para una automatización de sistema robusta y eficiente.