Сбор информации о компьютерах
Этот пример применяется только к платформам 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
PowerShell