Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Este exemplo só se aplica a plataformas Windows.
O WMI (Instrumentação de Gerenciamento do Windows) é uma das principais tecnologias para a administração do sistema, pois ela expõe uma grande variedade de informações de maneira uniforme. Devido às inúmeras possibilidades oferecidas pelo WMI, o cmdlet do PowerShell usado para acessar objetos WMI, Get-CimInstance, é um dos mais úteis para fazer o trabalho duro. Vamos discutir como usar os cmdlets CIM de acesso a objetos de WMI e como usar objetos WMI para fazer coisas específicas.
Listar classes WMI
O primeiro problema que a maioria dos usuários do WMI enfrentam é tentar descobrir o que pode ser feito com o WMI. As classes WMI descrevem os recursos que podem ser gerenciados. Há centenas de classes WMI, algumas das quais contêm dezenas de propriedades.
Get-CimClass cuida desse problema possibilitando que o WMI possa ser descoberto. Você pode obter uma lista das classes WMI disponíveis no computador local digitando:
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
...
Você pode recuperar as mesmas informações de um computador remoto por meio do parâmetro ComputerName especificando um nome do computador ou endereço IP:
Get-CimClass -Namespace root/CIMV2 -ComputerName 192.168.1.29
A listagem de classe retornada por computadores remotos pode variar devido ao sistema operacional específico que o computador está executando e as extensões WMI específicas são adicionadas por aplicativos instalados.
Observação
Ao usar cmdlets do CIM para se conectar a um computador remoto, o computador remoto deve estar executando o WMI e a conta usada deve estar no grupo Administradores local no computador remoto. O sistema remoto não precisa ter o PowerShell instalado. Isso permite administrar sistemas operacionais que não executam o PowerShell, mas que têm o WMI disponível.
Exibir detalhes da classe WMI
Se você já souber o nome de uma classe WMI, poderá usá-la para obter informações imediatamente. Por exemplo, uma das classes WMI geralmente usadas para recuperar informações sobre um computador é 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
Embora mostremos todos os parâmetros, o comando pode ser expresso de forma mais sucinta.
O parâmetro ComputerName não é necessário ao se conectar ao sistema local. Vamos mostrá-lo para demonstrar o caso mais geral e lembrá-lo sobre o parâmetro. O Namespace usa root/CIMV2 como padrão e também pode ser omitido. Por fim, a maioria dos cmdlets permitem omitir o nome dos parâmetros comuns. Com Get-CimInstance, se nenhum nome for especificado para o primeiro parâmetro, o PowerShell o tratará como o parâmetro Class. Isso significa que o último comando pode ter sido emitido digitando:
Get-CimInstance Win32_OperatingSystem
A classe Win32_OperatingSystem tem muitos mais propriedades do que as exibidas aqui. Você pode usar Get-Member para ver todas as propriedades. As propriedades de uma classe WMI ficam automaticamente disponíveis assim como outras propriedades 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;}
...
Exibição de propriedades não padrão com cmdlets Format
Se quiser ver as informações contidas na classe Win32_OperatingSystem que não são exibidas por padrão, você poderá exibi-las usando os cmdlets Format. Por exemplo, se você deseja exibir dados de memória disponível, digite:
Get-CimInstance -Class Win32_OperatingSystem | Format-Table -Property TotalVirtualMemorySize, TotalVisibleMemorySize, FreePhysicalMemory, FreeVirtualMemory, FreeSpaceInPagingFiles
TotalVirtualMemorySize TotalVisibleMemorySize FreePhysicalMemory FreeVirtualMemory FreeSpaceInPagingFiles
---------------------- ---------------------- ------------------ ----------------- ----------------------
41787920 16622096 9537952 33071884 25056628
Observação
Os curingas funcionam com nomes de propriedade em Format-Table, portanto, o elemento final do pipeline pode ser reduzido para Format-Table -Property Total*Memory*, Free*
Os dados da memória podem ficar mais legíveis se você formatá-los como uma lista digitando:
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