Робота з об'єктами в 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.
.