Сбор информации о компьютерах

Этот пример применяется только к платформам Windows.

Командлеты из модуля CimCmdlets — самые важные для общих задач управления системой. Все ключевые параметры подсистемы доступны через инструментарий WMI. Более того, инструментарий WMI обрабатывает данные как объекты, сгруппированные в коллекции из одного или нескольких элементов. Так как PowerShell также работает с объектами и имеет конвейер, который позволяет обрабатывать один или несколько объектов одинаково, универсальный доступ WMI позволяет выполнять некоторые сложные задачи с очень малой работой.

Перечисление параметров рабочего стола

Для начала рассмотрим команду, собирающую сведения о рабочих столах локального компьютера.

Get-CimInstance -ClassName Win32_Desktop

Это возвращает сведения для всех рабочих столов, независимо от того, используются ли они.

Примечание.

Сведения, возвращаемые некоторыми классами WMI, могут быть очень подробными и часто содержат метаданные о классе WMI.

Так как имена большинства этих свойств метаданных начинаются с Cim, эти свойства можно отфильтровать с помощью Select-Object. Укажите параметр -ExcludeProperty, используя "Cim*" как значение. Например:

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

Чтобы отфильтровать метаданные, используйте оператор конвейера (|) для отправки результатов команды Get-CimInstance в Select-Object -ExcludeProperty "CIM*".

Вывод сведений о BIOS

Класс WMI Win32_BIOS возвращает довольно компактные и полные сведения о системной BIOS локального компьютера:

Get-CimInstance -ClassName Win32_BIOS

Вывод сведений о процессоре

Общие сведения о процессоре можно получить с помощью класса Win32_Processor инструментария WMI, но вам, скорее всего, потребуется отфильтровать полученные данные:

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

Чтобы получить общую строку описания семейства процессора, достаточно вернуть свойство SystemType:

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

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

Перечисление производителя компьютера и модели

Сведения о модели компьютера также доступны в Win32_ComputerSystem. Чтобы получить данные поставщика вычислительной техники (OEM), стандартные отображаемые выходные данные фильтровать не нужно:

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

Выходные данные из команд, подобных показанной выше и возвращающих сведения напрямую от аппаратного обеспечения, не могут быть дополнены. Некоторые сведения неправильно настроены производителями оборудования и, следовательно, могут быть недоступны.

Перечисление установленных исправлений

Список всех установленных исправлений можно получить с помощью Win32_QuickFixEngineering:

Get-CimInstance -ClassName Win32_QuickFixEngineering

Этот класс возвращает список исправлений в следующем виде:

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

Для получения более кратких сведений нужно исключить некоторые свойства. Параметр Property в Get-CimInstanceпозволяет выбрать только идентификаторы HotFixID, однако на самом деле возвращается больше данных, так как по умолчанию отображаются все метаданные:

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
...

Дополнительные данные выводятся, так как параметр Property в Get-CimInstance ограничивает свойства, возвращаемые из экземпляров класса WMI, но не объекты, возвращаемые оболочке PowerShell. Командлет Select-Object позволяет сократить возвращаемые выходные данные:

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

Перечисление сведений о версии операционной системы

Свойства класса Win32_OperatingSystem включают сведения о версии операционной системы и пакета обновления. Эти свойства можно выбрать явным образом, чтобы получить сводные данные по версиям из Win32_OperatingSystem:

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

Вы также можете использовать дикие карта ы с параметром Property. Поскольку в рассматриваемом случае важны все свойства, имена которых начинаются с Build либо с ServicePack, указанную строку можно сократить:

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

Перечисление локальных пользователей и владельца

Общие сведения о локальных пользователях можно найти с выбором свойств класса Win32_OperatingSystem . Отображаемые свойства можно указать явным образом:

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

В более сжатом варианте используются подстановочные символы:

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

Получение доступного места на диске

Чтобы просмотреть место на диске и свободное место для локальных дисков, можно использовать класс Win32_LogicalDisk . Необходимо просмотреть только экземпляры с типом DriveType 3, значение WMI используется для фиксированных жестких дисков.

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

Получение сведений о сеансе входа

Общие сведения о сеансах входа в систему, связанных с пользователями, можно получить через класс Win32_LogonSession инструментария WMI:

Get-CimInstance -ClassName Win32_LogonSession

Получение пользователя, вошедшего в систему на компьютере

Вы можете отобразить пользователя, вошедшего в определенную компьютерную систему, с помощью Win32_ComputerSystem. Приведенная ниже команда возвращает только пользователей, выполнивших вход на рабочий стол системы:

Get-CimInstance -ClassName Win32_ComputerSystem -Property UserName

Получение локального времени с компьютера

Текущее локальное время можно получить на определенном компьютере с помощью класса 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 :

Отображение состояния службы

Для просмотра состояния всех служб на определенном компьютере можно локально воспользоваться командлетом Get-Service. Для удаленных систем можно использовать класс Win32_Service инструментария WMI. Если вы также используете Select-Object для фильтрации результатов в состояние, имя и отображаемое имя, выходной формат почти идентичен следующему:Get-Service

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

Чтобы разрешить полное отображение имен для служб с длинными именами, используйте параметры автосвертки и оболочкиFormat-Table. Эти параметры оптимизируют ширину столбца и позволяют использовать длинные имена вместо усечения:

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