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: