Compartilhar via


Coletando informações sobre computadores

Este exemplo só se aplica a plataformas Windows.

Os cmdlets do módulo CimCmdlets são os cmdlets mais importantes para tarefas de gerenciamento geral do sistema. Todas as configurações do subsistema críticas são expostas por meio do WMI. Além disso, o WMI trata dados como objetos que são coleções de um ou mais itens. Como o PowerShell também funciona com objetos e tem um pipeline que permite tratar objetos únicos ou vários objetos da mesma forma, o acesso ao WMI genérico permite executar algumas tarefas avançadas com pouquíssimo trabalho.

Listar configurações de área de trabalho

Vamos começar 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, independentemente de estarem em uso ou não.

Observação

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, é possível 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 comando Get-CimInstance para Select-Object -ExcludeProperty "CIM*".

Listando informações de 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

Listar informações do processador

Você pode recuperar informações gerais do processador por meio da classe Win32_Processor do WMI, embora provavelmente você preferirá filtrar as informações:

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

Para ver uma cadeia de caracteres de descrição genérica da família do processador, basta retornar a propriedade SystemType:

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

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

Listar o modelo e o fabricante do computador

As informações de modelo do computador também estão disponíveis no Win32_ComputerSystem. A saída padrão exibida não precisará de filtragem para fornecer dados de OEM:

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

A saída de comandos como este, que retornam informações diretamente de alguns dispositivos de hardware, é válida na mesma medida que os dados que você tem. Algumas informações não são configuradas corretamente pelos fabricantes de hardware e, portanto, podem estar indisponíveis.

Listar os hotfixes instalados

Você pode listar os hotfixes instalados usando Win32_QuickFixEngineering:

Get-CimInstance -ClassName Win32_QuickFixEngineering

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

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

Para uma saída mais sucinta, pode ser útil excluir algumas propriedades. Embora você possa usar o parâmetro Property de Get-CimInstance para escolher somente a HotFixID, fazer isso, na verdade, retornará mais informações, pois 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, pois o parâmetroProperty no Get-CimInstance restringe as propriedades retornadas de instâncias da classe WMI, não o objeto retornado para o PowerShell. Para reduzir a saída, use Select-Object:

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

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

As propriedades da classe Win32_OperatingSystem incluem informações sobre versão e service pack. Você pode selecionar apenas essas propriedades para obter um resumo das 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 caracteres curinga com o parâmetro Property. Como todas as propriedades que começam com Build ou ServicePack são importantes para usar aqui, podemos reduzir isso para a seguinte forma:

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

Listar proprietário e usuários locais

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

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

Uma versão mais sucinta usando caracteres curinga seria:

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

Obter o espaço em disco disponível

Para ver o espaço em disco e o espaço livre para as unidades locais, você pode usar a classe Win32_LogicalDisk. Você precisa ver apenas as 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

Obter informações de sessão de logon

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

Get-CimInstance -ClassName Win32_LogonSession

Obter o usuário conectado a um computador

Você pode exibir o usuário conectado a um sistema de computador específico usando Win32_ComputerSystem. Esse comando retorna somente o usuário conectado à área de trabalho do sistema:

Get-CimInstance -ClassName Win32_ComputerSystem -Property UserName

Obter a hora local 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 :

Exibir o status do serviço

Para exibir o status de todos os serviços em um computador específico, você pode usar o cmdlet Get-Service localmente. Para sistemas remotos, você pode usar a classe WMI Win32_Service. Se você também usar Select-Object para filtrar os resultados para Status, Nome e DisplayName, o formato de saída será praticamente idêntico ao 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 de Format-Table. Esses parâmetros otimizam a largura da coluna e permitem que nomes longos sejam encapsulados em vez de serem truncados:

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