Обзор технологии Microsoft Windows PowerShellMicrosoft ® 1 Назначение PowerShell 2 Установка Windows PowesShell 6 Назначение PowerShell 7



Скачать 13.55 Mb.
страница12/27
Дата29.11.2016
Размер13.55 Mb.
Просмотров5755
Скачиваний0
ТипОбзор
1   ...   8   9   10   11   12   13   14   15   ...   27

Работа с CSV и XML данными


Windows PowerShell обладает возможностью читать и записывать файлы, в которых значения разделены запятой (comma-separated values или CSV), а также простые XML файлы. Для XML-файлов используется специальный пользовательский интерфейс под названием Command Line Interface XML или CliXML.


Экспорт объектов в CSV-файл


Когда вы отправляете объекты по конвейеру в командлет Export-CSV и уточнаяете имя файла, в который необходимо экспортировать объекты, оболочка изучает все объекты в конвейере. Затем она пишет заголовок в виде комментария в первой строчке файла, где указывается имя типа объекта в конвейере. После этого пишется второй заголовок, где перечисляются все свойства объектов в конвейере в виде списка. Начиная с этого места, каждый объект из конвейера записывается в виде строчки CSV-файла, а его свойства заносятся в соответствующие столбцы таблицы. Готовый файл можно без проблем открыть в Microsoft Office Excel, импортировать в одно из многочисленных приложений базы данных, использовать в качестве фиксированной формы стандартного письма в Microsoft Office Word, и.т.д.Простейший пример использования данного командлета может выглядеть так:

Get-EventLog Security –newest 20 | Export-CSV new-events.csv

Также вы можете произвести какие-либо манипуляции с объектами в конвейере, прежде чем импортировать их в CSV-файл:



Get-Process | Sort VM –desc | Select –First 10 | Export-CSV top-vm.csv

Командлет Export-CSV может иметь множество дополнительных параметров, которые применяются для выполнения конкретных задач. Например, вы можете:

• Указать, что первый заголовок, содержащий информацию о типе объектов, следует опустить.

• Указать, что второй заголовок, включающий список объектов, можно опустить.

• Указать другой разделитель, вместо запятой (символ). О прочих возможностях командлета Export-CSV вы можете узнать из справочной системы.

Важно отметить, что CSV-файл является файлом «плоского» формата, т.е. может включать в себя только один уровень данных. Windows PowerShell не может превратить сложную иерархию объектов в CSV-файл. Например, такой объект как папка в файловой системе может содержать другие объекты – файлы или папки; Export-CSV не сможет использовать эту иерархию. Попробуйте изучить файл, созданный с помощью подобной команды, чтобы, что произойдет:



Dir C:\ | Export-CSV directories.csv

Импорт объектов из CSV-файла


Командлет Import-CSV может читать CSV-файлы (или файлы, где вместо запятых использован другой разделитель), и создавать статичные объекты, отображающие содержимое этих файлов. Каждая строчка CSV файла превращается в отдельный объект, который помещается в конвейер. Свойства объектов конструируются из столбцов таблицы CSV-файла. Если у CSV-файла есть заголовок (он должен быть по умолчанию), то имена свойств объектов берутся из этого заголовка. В справочнике вы найдете информацию о дополнительных возможностях командлета Import-CSV, среди которых можно отметить возможности:

• Указать, что CSV-файл не содержит заголовка.

• Указать, что вместо запятой используется другой разделитель.

Импорт и экспорт XML-файлов


Командлеты Import-CliXML и Export-CliXML работают во многом аналогично командлетам Import-CSV и Export-CSV. Однако вместо «плоского» CSV-файла могут использовать более сложный формат, который способен отобразить иерархическую структуру. Попробуйте запустить команду:

Dir c:\Windows\System32 -recurse | Export-CliXML directories.xml

Вы можете открыть файл в Windows® Notepad, но намного проще это сделать в Internet Explorer, который умеет форматировать XML-файлы, придавая им более читабельный вид. Перевод объекта в формат XML таким способом называется сериализация; перевод XML-файла обратно в объект оболочки называется десериализация. Десериализованные объекты не являются живыми объектами. Они являются скорее слепками или снимками, сделанными в тот момент, когда они подверглись сериализации. Десериализованные объекты не несут никакой функциональности и методов – они представляют собой просто набор свойств. Чтобы увидеть различие, сначала запустите команду:



Get-Process | Get-Member

Обратите внимание на то, как отображаются объекты – каждый из них обладает множеством методов. Затем запустите следующую команду:



Get-Process | Export-CliXML procs.xml

Откройте Windows Notepad или Windows Calculator и запустите следующую команду:



Import-CliXML procs.xm

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



Import-CliXML procs.xml | Get-Member

Имена типов объектов укажут на о, что эти объекты являются десериализованными и больше не обладают методами – у них остались только свойства, так как свойства – это все, что включает в себя XML-файл.


Сравнение объектов


Windows PowerShell обладает возможностью сравнивать два набора объектов. Сравнение может быть довольно сложным и запутанным, так как объекты сами по себе часто являются сложными. Например, возьмем два идентичных процесса, запущенных на разных компьютерах. Пусть это будет Windows Notepad. Некоторые аспекты объектов будут идентичными на обоих компьютерах, например, свойство имени. Другие же свойства, такие как ID, VM и PM будут различаться. Являются ли эти объекты идентичными? Это зависит от того, с какой именно целью вы их сравниваете. Одна из целей сравнивания объектов – это организация внесения изменений. Возможно, вы захотите создать базовую линию, которая бы описывала первоначальную конфигурацию сервера. Позже вы захотите сравнить текущую конфигурацию с той, что была изначально, чтобы узнать, какие изменения произошли. . Windows PowerShel предлагает специальный командлет Compare- Object (с псевдонимом Diff), который упрощает процесс сравнения. Начать можно с создания базового файла. Лучше всего для этой цели подходит XML. Для создания файла с описанием текущей конфигурации компьютерных сервисов запустите команду:

Get-Service | Export-CliXML service-baseline.xml

Сейчас попробуйте внести изменения в работу сервисов, например, запустите остановленное приложение или остановите запущенное. Для манипуляций в лабораторных условиях хорошо подходит сервис BITS. Затем сравните новую конфигурацию с базовой:



Compare-Object (Get-Service) (Import-CliXML service-baseline.xml)

В данной команде круглые скобки указывают на то, что командлеты Get-Service и Import-CliXML должны быть запущены в первую очередь. Их выходные данные передаются командлету Compare-Object, который сравнивает два набора объектов. В данном примере Compare-Object будет сравнивать все параметры объектов. Однако при работе с другими типами объектов, например, с процессами, память и значение CPU которых постоянно изменяются, сравнивать все их параметры бессмысленно, так как результаты будут постоянно разными. В таком случае вы можете дать командлету Compare-Object задачу учитывать только определенные параметры при сравнении.

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



Поделитесь с Вашими друзьями:
1   ...   8   9   10   11   12   13   14   15   ...   27


База данных защищена авторским правом ©nethash.ru 2019
обратиться к администрации

войти | регистрация
    Главная страница


загрузить материал