Como trabalhar com WMI no Powershell

O cmdlet (command let) utilizado para acessar o WMI no PowerShell é o Get-WmiObject ou gwmi (alias).

O WMI possuí vários namespaces sendo o default o namespace root\cimv2 que possui várias classes utilizadas para acessar as configurações do computador.

Utilize o seguinte comando para listar os namespaces do WMI instalados na máquina:

Get-WMIObject -class __Namespace -namespace root | ft name

Para listar as classes de um namespace, por exemplo, do namespace “root\cimv2”:

Get-WmiObject -Namespace "root\cimv2" –List 

Uma vez que o namespace “root\cimv2” é o namespace default, o comando acima pode ser simplificado, conforme:

Get-WmiObject –List

O comando abaixo exibe uma maneira de encontrar todas as classes do namespace “root\cimv2” que contém a palavra disk no nome:

gwmi -Namespace "root\cimv2" –List | ? {$_.name -like "*disk*"}

Para exibir os discos do computador local:

Get-WmiObject -Class win32_logicaldisk

Para listar os métodos e propriedades da classe:

Get-WmiObject -Class win32_logicaldisk | gm 

Exemplos: 

$disks = Get-WmiObject -Class win32_logicaldisk

[math]::round($disks[0].freespace/1gb,2)

 

$cred = Get-Credential

gwmi win32_logicaldisk -ComputerName syddc01 -Credential $cred

 

Para exibir o hotfixes instalados:  

#primeiro busco quais são as classes do wmi que possuem a palavra fix

Get-WmiObject -list | ? {$_.name -like "*fix*"}

#utilizo o get-member (gm) para consultar os métodos e propriedades da classe encontrada

Get-WmiObject -class win32_quickfixengineering | gm

#realizo a consulta dos hotfixes onde retorno apenas as propriedades hotfixid e caption

Get-WmiObject -class win32_quickfixengineering | ft hotfixid, caption

 

Para exibir detalhes do sistema operacional:

 

$os = gwmi win32_operatingsystem

$os | gm

$os | fl caption, csdversion

 

Mais de PowerShell em:

Introdução ao PowerShell

PowerShell | Objetos