quarta-feira, 30 de agosto de 2017

Obtendo Informações Básicas do Sistema

Para obter informações de sistema podemos utilizar WMI (Windows Management Instrumentation) ou CIM (Common Information Model).


CIM é um padrão aberto da DMTF (Distributed Management Task Force). CIM fornece uma definição comum de informações de gerenciamento para sistemas, redes, aplicações, serviços, permitindo extensões pelos fabricantes. WMI é a implentação do CIM feita pela Microsoft.

Diferenças importantes entre os 2 métodos:
  • CIM utiliza WSMan (WinRM é a implementação da Microsoft), que é SOAP e não tem problemas com firewall, para conectar-se com máquinas remotas, ou seja, se isso não estiver configurado adequadamente, a conexão irá falhar e a informação não será obtida.
  • WMI mantém compatibilidade com sistemas operacionais antigos (legados).
  • CIM tem um menor tempo de resposta, ou seja, melhor desempenho.
  • WMI usa DCOM (Distributed Component Object Model) para se comunicar com máquinas remotas, notoriamente com menor desempenho, além de síncrono e por não ser padronizados tende a não funcionar em outros sitema que não o Windows.
  • WMI fornece melhor abstração de tarefas em comparação aos Cmdlets WsMan, seus resultados são objetos .NET
  • O protocolo WSMan utilizado pelo CIM é mais seguro e escalável; é padronizado, logo tende a funcionar para sistemas não-Windows.

Maik Koster faz interessantes comparativos de desempenho e do porquê CIM é melhor, com medições incluindo gráficos, entre o uso de CIM e WMI, tanto local quanto em rede.

A classe Win32_OperatingSystem, por exemplo, nos permite obter uma série de informações do Sistema Operacional. Para saber o que pode ser obtido, podemos executar o seguinte comando:
PS C:\> Get-CimInstance -Class Win32_OperatingSystem -KeyOnly

Status                                    : 
Name                                      : 
FreePhysicalMemory                        : 
FreeSpaceInPagingFiles                    : 
FreeVirtualMemory                         : 
Caption                                   : 
Description                               : 
InstallDate                               : 
CreationClassName                         : 
CSCreationClassName                       : 
CSName                                    : 
CurrentTimeZone                           : 
Distributed                               : 
LastBootUpTime                            : 
LocalDateTime                             : 
MaxNumberOfProcesses                      : 
MaxProcessMemorySize                      : 
NumberOfLicensedUsers                     : 
NumberOfProcesses                         : 
NumberOfUsers                             : 
OSType                                    : 
OtherTypeDescription                      : 
SizeStoredInPagingFiles                   : 
TotalSwapSpaceSize                        : 
TotalVirtualMemorySize                    : 
TotalVisibleMemorySize                    : 
Version                                   : 
BootDevice                                : 
BuildNumber                               : 
BuildType                                 : 
CodeSet                                   : 
CountryCode                               : 
CSDVersion                                : 
DataExecutionPrevention_32BitApplications : 
DataExecutionPrevention_Available         : 
DataExecutionPrevention_Drivers           : 
DataExecutionPrevention_SupportPolicy     : 
Debug                                     : 
EncryptionLevel                           : 
ForegroundApplicationBoost                : 
LargeSystemCache                          : 
Locale                                    : 
Manufacturer                              : 
MUILanguages                              : 
OperatingSystemSKU                        : 
Organization                              : 
OSArchitecture                            : 
OSLanguage                                : 
OSProductSuite                            : 
PAEEnabled                                : 
PlusProductID                             : 
PlusVersionNumber                         : 
PortableOperatingSystem                   : 
Primary                                   : 
ProductType                               : 
RegisteredUser                            : 
SerialNumber                              : 
ServicePackMajorVersion                   : 
ServicePackMinorVersion                   : 
SuiteMask                                 : 
SystemDevice                              : 
SystemDirectory                           : 
SystemDrive                               : 
WindowsDirectory                          : 
PSComputerName                            : 
CimClass                                  : root/cimv2:Win32_OperatingSystem
CimInstanceProperties                     : {Caption, Description, InstallDate, Name...}
CimSystemProperties                       : Microsoft.Management.Infrastructure.CimSystemProperties

E então podemos selecionar as Propriedades que desejarmos, como por exemplo:
CLS

Get-CimInstance Win32_OperatingSystem | Select-Object Caption, `
OSArchitecture, BuildNumber, TotalVisibleMemorySize | FL

Obtendo um resultado semelhante ao abaixo, variando obviamente de acordo com o computador em questão:
Caption                : Microsoft Windows 10 Pro
OSArchitecture         : 64 bits
BuildNumber            : 15063
TotalVisibleMemorySize : 4025964

Nenhum comentário:

Postar um comentário