Recolher informações sobre os computadores

Este exemplo só se aplica a plataformas Windows.

Os cmdlets do módulo CimCmdlets são os cmdlets mais importantes para tarefas gerais de gerenciamento do sistema. Todas as configurações críticas do subsistema são expostas através do WMI. Além disso, o WMI trata os dados como objetos que estão em coleções de um ou mais itens. Como o PowerShell também trabalha com objetos e tem um pipeline que permite tratar um ou vários objetos da mesma maneira, o acesso WMI genérico permite que você execute algumas tarefas avançadas com muito pouco trabalho.

Listando configurações da área de trabalho

Começaremos com um comando que coleta informações sobre as áreas de trabalho no computador local.

Get-CimInstance -ClassName Win32_Desktop

Isso retorna informações para todos os desktops, estejam eles em uso ou não.

Nota

As informações retornadas por algumas classes WMI podem ser muito detalhadas e geralmente incluem metadados sobre a classe WMI.

Como a maioria dessas propriedades de metadados tem nomes que começam com Cim, você pode filtrar as propriedades usando Select-Object. Especifique o parâmetro -ExcludeProperty com "Cim*" como o valor. Por exemplo:

Get-CimInstance -ClassName Win32_Desktop | Select-Object -ExcludeProperty "CIM*"

Para filtrar os metadados, use um operador de pipeline (|) para enviar os resultados do Get-CimInstance comando para Select-Object -ExcludeProperty "CIM*".

Listando informações do BIOS

A classe WMI Win32_BIOS retorna informações bastante compactas e completas sobre o BIOS do sistema no computador local:

Get-CimInstance -ClassName Win32_BIOS

Listando informações do processador

Você pode recuperar informações gerais do processador usando a classe Win32_Processor do WMI, embora provavelmente queira filtrar as informações:

Get-CimInstance -ClassName Win32_Processor | Select-Object -ExcludeProperty "CIM*"

Para obter uma string de descrição genérica da família de processadores, basta retornar a propriedade SystemType :

Get-CimInstance -ClassName Win32_ComputerSystem | Select-Object -Property SystemType

SystemType
----------
X86-based PC

Listando fabricante e modelo de computador

Informações sobre modelos de computador também estão disponíveis em Win32_ComputerSystem. A saída padrão exibida não precisará de nenhuma filtragem para fornecer dados OEM:

Get-CimInstance -ClassName Win32_ComputerSystem
Name PrimaryOwnerName Domain    TotalPhysicalMemory Model                   Manufacturer
---- ---------------- ------    ------------------- -----                   ------------
MyPC Jane Doe         WORKGROUP 804765696           DA243A-ABA 6415cl NA910 Compaq Presario 06

Sua saída de comandos como este, que retornam informações diretamente de algum hardware, é tão boa quanto os dados que você tem. Algumas informações não estão configuradas corretamente pelos fabricantes de hardware e, portanto, podem estar indisponíveis.

Listando hotfixes instalados

Você pode listar todos os hotfixes instalados usando Win32_QuickFixEngineering:

Get-CimInstance -ClassName Win32_QuickFixEngineering

Essa classe retorna uma lista de hotfixes com esta aparência:

Source Description     HotFixID  InstalledBy   InstalledOn PSComputerName
------ -----------     --------  -----------   ----------- --------------
       Security Update KB4048951 Administrator 12/16/2017  .

Para uma saída mais sucinta, convém excluir algumas propriedades. Embora você possa usar o Get-CimInstanceparâmetro Property do para escolher apenas o HotFixID, isso realmente retornará mais informações, porque todos os metadados são exibidos por padrão:

Get-CimInstance -ClassName Win32_QuickFixEngineering -Property HotFixID
InstalledOn           :
Caption               :
Description           :
InstallDate           :
Name                  :
Status                :
CSName                :
FixComments           :
HotFixID              : KB4533002
InstalledBy           :
ServicePackInEffect   :
PSComputerName        :
CimClass              : root/cimv2:Win32_QuickFixEngineering
CimInstanceProperties : {Caption, Description, InstallDate, Name…}
CimSystemProperties   : Microsoft.Management.Infrastructure.CimSystemProperties
...

Os dados adicionais são retornados, porque o parâmetro Property in Get-CimInstance restringe as propriedades retornadas de instâncias de classe WMI, não o objeto retornado ao PowerShell. Para reduzir a saída, use Select-Object:

Get-CimInstance -ClassName Win32_QuickFixEngineering -Property HotFixId |
    Select-Object -Property HotFixId
HotFixId
--------
KB4048951

Listando informações de versão do sistema operacional

As propriedades da classe Win32_OperatingSystem incluem informações de versão e service pack. Você pode selecionar explicitamente apenas essas propriedades para obter um resumo de informações de versão de Win32_OperatingSystem:

Get-CimInstance -ClassName Win32_OperatingSystem |
  Select-Object -Property BuildNumber,BuildType,OSType,ServicePackMajorVersion,ServicePackMinorVersion

Você também pode usar curingas com o parâmetro Property . Como todas as propriedades que começam com Build ou ServicePack são importantes para usar aqui, podemos encurtar isso para o seguinte formato:

Get-CimInstance -ClassName Win32_OperatingSystem |
    Select-Object -Property Build*,OSType,ServicePack*
BuildNumber             : 18362
BuildType               : Multiprocessor Free
OSType                  : 18
ServicePackMajorVersion : 0
ServicePackMinorVersion : 0

Listando usuários locais e proprietário

Informações gerais sobre usuários locais podem ser encontradas com uma seleção de propriedades de classe Win32_OperatingSystem. Você pode selecionar explicitamente as propriedades a serem exibidas da seguinte forma:

Get-CimInstance -ClassName Win32_OperatingSystem |
    Select-Object -Property NumberOfLicensedUsers, NumberOfUsers, RegisteredUser

Uma versão mais sucinta usando curingas é:

Get-CimInstance -ClassName Win32_OperatingSystem | Select-Object -Property *user*

Obter espaço disponível em disco

Para ver o espaço em disco e o espaço livre para unidades locais, você pode usar a classe Win32_LogicalDisk . Você precisa ver apenas instâncias com um DriveType de 3, o valor que o WMI usa para discos rígidos fixos.

Get-CimInstance -ClassName Win32_LogicalDisk -Filter "DriveType=3"
DeviceID DriveType ProviderName VolumeName Size         FreeSpace   PSComputerName
-------- --------- ------------ ---------- ----         ---------   --------------
C:       3                      Local Disk 203912880128 65541357568 .
Q:       3                      New Volume 122934034432 44298250240 .
Get-CimInstance -ClassName Win32_LogicalDisk -Filter "DriveType=3" |
    Measure-Object -Property FreeSpace,Size -Sum |
    Select-Object -Property Property,Sum
Property           Sum
--------           ---
FreeSpace 109839607808
Size      326846914560

Obtendo informações de sessão de logon

Você pode obter informações gerais sobre sessões de logon associadas a usuários por meio da classe WMI Win32_LogonSession :

Get-CimInstance -ClassName Win32_LogonSession

Fazer com que o utilizador tenha sessão iniciada num computador

Você pode exibir o usuário conectado a um determinado sistema de computador usando Win32_ComputerSystem. Este comando retorna apenas o usuário conectado à área de trabalho do sistema:

Get-CimInstance -ClassName Win32_ComputerSystem -Property UserName

Obter a hora local a partir de um computador

Você pode recuperar a hora local atual em um computador específico usando a classe WMI Win32_LocalTime .

Get-CimInstance -ClassName Win32_LocalTime
Day            : 23
DayOfWeek      : 1
Hour           : 8
Milliseconds   :
Minute         : 52
Month          : 12
Quarter        : 4
Second         : 55
WeekInMonth    : 4
Year           : 2019
PSComputerName :

Exibindo o status do serviço

Para exibir o status de todos os serviços em um computador específico, você pode usar localmente o Get-Service cmdlet. Para sistemas remotos, você pode usar a classe WMI Win32_Service . Se você também usar Select-Object para filtrar os resultados para Status, Name e DisplayName, o formato de saída será quase idêntico ao de Get-Service:

Get-CimInstance -ClassName Win32_Service |
    Select-Object -Property Status,Name,DisplayName

Para permitir a exibição completa de nomes para serviços com nomes longos, use os parâmetros AutoSize e Wrap do Format-Table. Esses parâmetros otimizam a largura da coluna e permitem que nomes longos sejam quebrados em vez de truncados:

Get-CimInstance -ClassName Win32_Service |
    Format-Table -Property Status, Name, DisplayName -AutoSize -Wrap