Доступ к wmi
Как мы знаем, Windows Management Instrumentation (WMI) — это реализация компанией Microsoft стандарта Common Information Model (CMI). В большинстве случаев WMI применяется ИT-специалистами для получения информации об аппаратном и программном обеспечении, установленном на данном компьютере. Как мы увидим в следующем примере, использование Windows PowerShell существенно облегчает доступ к информации, хранимой в WMI (рис. 17).
Рис. 17
В первой строке мы применяем команду get-wmiobject для получения информации о файле, используемом для свопинга памяти на диск и сохранения этой информации в переменной $pfu:
PS C:\> $pfu = get-wmiobject – class ‘win32_pageFileUsage’
Далее мы применяем команду get-member для определения свойств, доступных для класса win32_pageFileUsage:
PS C:\> $pfu | get-member –membertype property | where_object { $_.name – nomatch ‘_’ }
Обычно для нахождения информации по определенному классу можно использовать команду get-member без указания параметров, но в нашем примере нас интересуют только доступные свойства и только те из них, которые не содержат в имени символ подчеркивания. У внимательного читателя может возникнуть вопрос: каким образом мы узнали о существовании класса win32_pageFileUsage? Ведь известно, что в WMI поддерживается более тысячи классов, помимо этого ряд приложений добавляет свои классы. Вы можете применить команду: PS C:\> get-wmiobject –list
для получения списка всех существующих в системе классов. После того как мы определили доступные нам свойства класса, мы выводим содержимое интересующих нас свойств на экран:
PS C:\> $pfu.caption; $pfu.currentusage
Вторая часть нашего примера посвящена другому классу —
win32_DiskDrive, в котором хранится информация о дисках, установленных в системе. Этот класс — пример WMI-класса, содержащего более одного объекта. В нашем примере мы определяем значение свойства caption первого диска, установленного в системе:
PS C:\> $dd[0].caption
Использование xml-файлов
В последнее время XML-файлы все чаще используются для хранения конфигурационной информации. По мере того как данные в XML-файле накапливаются, он становится все менее удобным для прочтения. Далее мы рассмотрим, как применять функции Windows PowerShell для работы с XMLфайлами.
Для примера возьмем конфигурационный файл Windows Calendar, который выглядит так (рис. 18):
Рис. 18 и выполним над ним манипуляции, представленные на рис. 19.
Рис. 19
В первой строке мы загружаем содержимое всего XML-файла в переменную, используя команду get-content:
PS C:\> [xml] $doc = get-content ‘.\settings.xml’
Обратим внимание на применение типа данных [xml]: если не указать использование данных этого типа, в переменную будет загружен просто текст.
Во второй строке мы выбираем определенную ветвь XML-файла — для этого применяется метод selectnodes объекта, хранящего XML-данные и XPath-описание адреса ветви:
PS C:\> $settings = $doc.selectnode(‘CalendarSettings/X-Root/VCalendar’)
После этого мы используем команду foreach-object для получения значения свойства Name для всех элементов в данной ветви.
