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

Работа с объектами в PowerShell

Работа с объектами в PowerShell

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

Командой  Get-ChildItem (или Dir) выведем ее содержимое и результат поместим в переменную:

$list=Get-Childitem c:\pstest

Объекты, полученные в результате выполнения команд, очень удобно хранить в переменных, это экономит время при вводе и облегчает доступ к их свойствам.

Поскольку на выходе несколько объектов, PowerShell поместит их в массив. Можно обращаться к элементам массива по их порядковым номерам, например:

$object=$list[1]

обращение к объекту

 

В переменной $object у нас находится папка test2.test. С ней и будем работать дальше. Для просмотра всех ее свойств воспользуемся командлетом Get-Member :

$object | Get-Member -memberType *property

выводим свойства объекта

 

Свойства, полученные при создании объекта называются просто «Property». Свойства, добавленные PowerShell пишутся с префиксом PS (напр. PSChildName) и именуются «ScriptProperty» или «NoteProperty». Свойства NoteProperty  содержат статические данные, а ScriptProperty  исполняемый код PowerShell.

Из свойств объекта можно узнать много полезной информации, например имя (Name) и путь (FullName) к папке, время создания (CreationTime)  и изменения (LastWriteTime) и многое другое. Посмотрим время последнего обращения к папке

$object.LastAccessTime

Если свойство объекта обозначено как {get;set;}, то мы можем его не только посмотреть, но и изменить. Зададим время последнего обращения текущей датой:

$object.LastAccessTime=Get-Date

Или будущей:

$object.LastAccessTime=Get-Date(“01.01.2014”)

задаем дату последнего обращения к объекту

 

А теперь возьмем свойство Name (имя объекта) и немного над ним «поиздеваемся».

Сначала получим все свойства и методы свойства Name объекта: $object.name | Get-Member

Воспользуемся ими.

Проверим, есть ли в имени объекта цифра 2 : $object.name.contains(‘2’)

Заменим 2 на 4 : $object.name.replace(‘2′,’4’)

и переведем все символы имени в верхний регистр : $object.name.toupper()

изменяем свойства объекта

 

А теперь плавно перейдем от свойста объекта к  его методам.

$object | Get-Member -MemberType *Method

методы объекта

 

Наш объект является директорией. Посмотрим, содержит ли он поддиректории:

$object.getdirectories()

С помощью метода CreateSubdirectory создадим поддиректорию с именем New directory:

$object.CreateSubdirectory(‘New directory’)

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

$subdirectory=$object.CreateSubdirectory (‘Enother directory’)

Теперь мы можем обращаться к ее свойствам и изменять их, например:

$subdirectory.CreationTime= «January 1, 2014»

используем методы объектов

 

Посмотрим, как изменился наш объект. Как видим, обе созданные нами поддиректории появились. Что еще мы можем сделать с объектом? Многое, например задать разрешения доступа — $object.SetAccesssControl(), переместить — $object.MoveTo() или вообще удалить —  $object.Delete().

Вот так мы узнали как управлять свойствами и методами объектов. А используя свойства и методы объекта мы можем  управлять и самим объектом. Поэтому рекомендую почаще пользоваться командлетом Get-Member при работе с PowerShell.

 
 
Комментарии

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

Ответить