Não deixe de ler os artigos anteriores da série:
- Aprenda a automatizar o Windows com o PowerShell
- Aprendendo a usar cmdlets no PowerShell
- Aprendendo a usar objetos no PowerShell
- Aprendendo a formatar, filtrar e comparar no PowerShell
- Aprenda a usar o Remoting no PowerShell
E fique ligado para o resto da série durante toda a semana.
Introdução
WMI significa Instrumentação de Gerenciamento do Windows. A palavra “Instrumentação” refere-se ao fato de que o WMI permite obter informações sobre o estado interno do computador, da mesma forma que os instrumentos do painel do seu carro podem recuperar e exibir informações sobre o estado dos componentes internos do seu carro.
O WMI consiste em um repositório que contém classes que representam componentes que podem ser gerenciados dentro de sua máquina. Com isso, queremos dizer apenas porque o WMI tem uma classe Win32_Battery, não significa que sua máquina contenha uma bateria. Essas classes podem então ser consultadas para obter informações localmente ou até mesmo através de uma rede usando uma linguagem de consulta muito semelhante ao SQL chamado WQL. No entanto, sabe-se que o WMI não é muito confiável, principalmente devido ao fato de ser baseado em RPC (chamadas de procedimento remoto), que fazem algumas coisas malucas com as portas que eles escolhem para se comunicar.
A partir do Windows 8 e do Server 2012, o WMI está sendo desativado em favor do Common Information Model ou do CIM. A única diferença entre o WMI e o CIM são os protocolos de transporte que eles usam. Enquanto o WMI realiza consultas usando as chamadas de procedimento remoto, o CIM usa HTTP, o que parece fazer uma enorme diferença. No backend eles ainda estão falando com o mesmo repositório de informações.
Usando o WMI
A maneira mais rápida e fácil de explorar as informações disponíveis para você via WMI é obter uma cópia de qualquer navegador de objetos WMI gratuito. Nós gostamos desse aqui. Uma vez baixado, acione-o e você terá uma interface gráfica para navegar nas Classes WMI.
Get-WmiObject -Query “SELECT * FROM Win32_LogicalDisk”
Get-WmiObject –Class Win32_LogicalDisk
Get-WmiObject -Class Win32_LogicalDisk -ComputerName Viper –Credential viperadministrator
Usando o CIM
Tendo em mente que o CIM está disponível apenas no Windows 8 e Server 2012, seguir em frente é definitivamente o caminho a ser seguido.
Get-CimInstance –ClassName Win32_LogicalDisk
Na verdade, o WMI foi desenvolvido por uma equipe completamente separada dentro da Microsoft, mas foi subsequentemente assumido pelo pessoal responsável pelo PowerShell. Eles foram os que perceberam que seria muito difícil limpar a bagunça que o WMI deixou para trás. Na tentativa de remediar a situação, eles estão tentando disponibilizar o WMI e o CIM gravando cmdlets de wrapper que usam o WMI e o CIM sob o capô. A única maneira de verificar se um cmdlet é um wrapper é examinando a documentação. Por exemplo, o cmdlet Get-Hotfix é um wrapper para a classe Win32_QuickFixEngineering, conforme visto na documentação.
Get-HotFix –ComputerName localhost