Заметки о Windows и других программных продуктах Microsoft...

Получение информации о системе с помощью PowerShell

Получение информации о системе с помощью PowerShell

Иногда требуется оперативно получить информацию о системе, например тип операционной системы, модель процессора, количество оперативной памяти и т.п. Cегодня я опишу пару способов получения системной информации с помощью PowerShell.

Systeminfo

Утилита командной строки Systeminfo выдает подробную информацию о системе, включая установленные обновления. Вывод утилиты не очень информативный, поэтому для удобства его можно отформатировать с помощью PowerShell. Для этого вывод оформляется в формате CSV, затем с помощью командлета ConvertFrom-Csv преобразуется в объект и помещается в переменную:

$systeminfo = systeminfo /FO csv | ConvertFrom-Csv

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

$systeminfo.’System Boot Time’

А так информацию об установленной на нем операционной системе:

$systeminfo | fl OS*

получение системной информации с помощью systeminfo

 

Для получения данных с удаленного компьютера у systeminfo имеется ключ /S, также при необходимости можно указать имя пользователя (/U) и пароль (/P). Для примера выведем данные о потреблении памяти на компьютере testdc2:

$systeminfo = systeminfo /FO csv /S testdc2 /U administrator /P ′p@$$w0rd′  | ConvertFrom-Csv
$systeminfo | fl *memory

получение системной информации с помощью systeminfo на удаленном компьютере

 

Примечание. Если пароль содержит служебные символы (например знак $), то его необходимо заключать в одинарные кавычки. При использовании двойных кавычек будет выдана ошибка.

WMI

Windows Instrumentation Instrumentation (WMI) позволяет узнать практически любую информацию о компьютере. Базовую информацию о системе можно получить с помощью WMI-класса Win32_OperatingSystem (CIM_OperatingSystem). Для примера уточним данные об операционной системе:

$systeminfo = Get-CimInstance -ClassName Win32_OperatingSystem
$systeminfo | fl Caption, Version, BuildType, BuildNumber, InstallDate

получение системной информации с помощью WMI

 

Если требуется подробная информация об одном из компонентов системы, то можно использовать другие классы WMI. Перечисление и подробное описание классов WMI и CIM можно найти на MSDN, а мы для примера выведем свойства процессора с помощью класса Win32_Processor (CIM_Processor):

$cpuinfo = Get-CimInstance -ClassName CIM_Processor
$cpuinfo | fl Name, Description, Version

получение информации о CPU с помощью WMI

 

Для получения данных с удаленных систем можно в команде указать имя компьютера. Если компьютеров несколько, то имена указываются через запятую. Например:

$systeminfo = Get-CimInstance -ClassName CIM_OperatingSystem -ComputerName testdc1, testdc2
$systeminfo | ft PSComputerName, Caption, MUILanguages -a

получение системной информации с помощью WMI на удаленных машинах

 

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

$session = New-CimSession -ComputerName testdc1,testdc2 -Credential $(Get-Credential)

А затем используем созданные сессии для получения системной информации:

$systeminfo = Get-CimInstance -ClassName CIM_OperatingSystem -CimSession $session
$systeminfo | ft PSComputerName, Caption, MUILanguages -a

получение системной информации с помощью WMI в удаленной сессии

 
 
Комментарии

Пока нет комментариев.