Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Este ejemplo solo se aplica a las plataformas Windows.
Instrumental de administración de Windows (WMI) es una tecnología básica para la administración del sistema de Windows, ya que expone una amplia gama de información de forma uniforme. Debido a todo lo que WMI hace posible, el cmdlet de PowerShell para acceder a objetos WMI, Get-CimInstance
, es uno de los más útiles para realizar trabajo efectivo. Vamos a analizar cómo usar los cmdlets CIM para acceder a objetos WMI y cómo usar objetos WMI para hacer cosas específicas.
Enumeración de clases WMI
El primer problema al que se enfrentan la mayoría de los usuarios de WMI es intentar averiguar lo que se puede hacer con WMI. Las clases WMI describen los recursos que se pueden administrar. Hay cientos de clases WMI, algunas de las cuales contienen docenas de propiedades.
Get-CimClass
soluciona este problema haciendo que WMI sea reconocible. Puede obtener una lista de las clases WMI disponibles en el equipo local escribiendo:
Get-CimClass -Namespace root/CIMV2 |
Where-Object CimClassName -Like Win32* |
Select-Object CimClassName
CimClassName
------------
Win32_DeviceChangeEvent
Win32_SystemConfigurationChangeEvent
Win32_VolumeChangeEvent
Win32_SystemTrace
Win32_ProcessTrace
Win32_ProcessStartTrace
Win32_ProcessStopTrace
Win32_ThreadTrace
Win32_ThreadStartTrace
Win32_ThreadStopTrace
...
Puede recuperar la misma información de un equipo remoto mediante el parámetro ComputerName, especificando un nombre de equipo o una dirección IP:
Get-CimClass -Namespace root/CIMV2 -ComputerName 192.168.1.29
La lista de clases devuelta por equipos remotos puede variar debido al sistema operativo específico que ejecuta el equipo y las aplicaciones instaladas agregan las extensiones WMI concretas.
Nota:
Al usar cmdlets CIM para conectarse a un equipo remoto, el equipo remoto debe ejecutar WMI y la cuenta que usa debe estar en el grupo local Administradores en el equipo remoto. El sistema remoto no necesita tener Instalado PowerShell. Esto le permite administrar sistemas operativos que no ejecutan PowerShell, pero que tienen WMI disponible.
Visualización de los detalles de clases WMI
Si ya conoce el nombre de una clase WMI, puede usarlo para obtener información inmediatamente. Por ejemplo, una de las clases WMI que se usan habitualmente para recuperar información sobre un equipo es Win32_OperatingSystem.
Get-CimInstance -Class Win32_OperatingSystem
SystemDirectory Organization BuildNumber RegisteredUser SerialNumber Version
--------------- ------------ ----------- -------------- ------------ -------
C:\WINDOWS\system32 Microsoft 22621 USER1 00330-80000-00000-AA175 10.0.22621
Aunque se muestran todos los parámetros, el comando se puede expresar de forma más concisa.
El parámetro ComputerName no es necesario al conectarse al sistema local. Se lo mostramos para demostrar el caso más general y recordarle a usted sobre el parámetro. El Espacio de nombres se establece de manera predeterminada en root/CIMV2, y también se puede omitir. Por último, la mayoría de los cmdlets permiten omitir el nombre de los parámetros comunes. Con Get-CimInstance
, si no se especifica ningún nombre para el primer parámetro, PowerShell lo trata como el parámetro Class. Esto significa que el último comando podría haberse emitido escribiendo:
Get-CimInstance Win32_OperatingSystem
La clase Win32_OperatingSystem tiene muchas más propiedades que las que se muestran aquí. Puede usar Get-Member para ver todas las propiedades. Las propiedades de una clase WMI están disponibles automáticamente como otras propiedades de objeto:
Get-CimInstance -Class Win32_OperatingSystem | Get-Member -MemberType Property
TypeName: Microsoft.Management.Infrastructure.CimInstance#root/cimv2/Win32_OperatingSystem
Name MemberType Definition
---- ---------- ----------
BootDevice Property string BootDevice {get;}
BuildNumber Property string BuildNumber {get;}
BuildType Property string BuildType {get;}
Caption Property string Caption {get;}
CodeSet Property string CodeSet {get;}
CountryCode Property string CountryCode {get;}
CreationClassName Property string CreationClassName {get;}
CSCreationClassName Property string CSCreationClassName {get;}
CSDVersion Property string CSDVersion {get;}
CSName Property string CSName {get;}
CurrentTimeZone Property int16 CurrentTimeZone {get;}
DataExecutionPrevention_32BitApplications Property bool DataExecutionPrevention_32BitApplications {get;}
DataExecutionPrevention_Available Property bool DataExecutionPrevention_Available {get;}
...
Visualización de propiedades no predeterminadas con los cmdlets Format
Si desea que la información contenida en la clase Win32_OperatingSystem que no se muestre de forma predeterminada, puede mostrarla mediante los cmdlets Format. Por ejemplo, si desea mostrar los datos de memoria disponibles, escriba:
Get-CimInstance -Class Win32_OperatingSystem | Format-Table -Property TotalVirtualMemorySize, TotalVisibleMemorySize, FreePhysicalMemory, FreeVirtualMemory, FreeSpaceInPagingFiles
TotalVirtualMemorySize TotalVisibleMemorySize FreePhysicalMemory FreeVirtualMemory FreeSpaceInPagingFiles
---------------------- ---------------------- ------------------ ----------------- ----------------------
41787920 16622096 9537952 33071884 25056628
Nota:
Los caracteres comodín funcionan con nombres de propiedad de Format-Table
, por lo que el elemento final de la canalización se puede reducir a Format-Table -Property Total*Memory*, Free*
.
Los datos de memoria pueden ser más legibles si lo da formato como una lista escribiendo:
Get-CimInstance -Class Win32_OperatingSystem | Format-List Total*Memory*, Free*
TotalVirtualMemorySize : 41787920
TotalVisibleMemorySize : 16622096
FreePhysicalMemory : 9365296
FreeSpaceInPagingFiles : 25042952
FreeVirtualMemory : 33013484
Name : Microsoft Windows 11 Pro|C:\Windows|\Device\Harddisk0\Partition2