Powershell Get-Member работа с методами и свойствами объекта на примерах


24 июля 2019


Powershell Get-Member работа с методами и свойствами объекта на примерах

Powershell Get-Member - это команда, которая возвращает все свойства и методы объекта. На мой взгляд, после понимания этого командлета, становится намного проще работать с PS.

Get-Member ничего не изменяет, он только показывает что содержится в объекте. Каждый результат каких-то действий формирует объект и для того что бы увидеть из чего он состоит нужно выполнить:

$a = "b"
$a | Get-Member

Powershell Get-Member методы и свойства объекта

У каждого объекта в powershell есть метод GetType, который выводит тип данных (строка, число, дата и т.д.). В нашем случае очевидно, что это строка, но порой это бывает не ясно и можно это узнать подобным образом:

$a.GetType()

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

$a = "test"
$a | Get-Member -MemberType Property

Powershell Get-Member свойства переменной

В нашем случае мы видим только один Property, но чаще их бывает больше. Length выводит в powershell длину строки. Вызывается аналогично:

$a.Length

powershell длина строки

 

Powershell Get-Member на примере свойств и методов файла

Получим список файлов из любой директории подобным образом:

Get-ChildItem -Path 'C:\Folder2\' | Get-Member

Мы можем увидеть, что некоторые методы похожи на командлеты PS. Например выделенный мною будет делать примерно то же (без расширенных возможностей), что и Remove-Item:

Powershell Get-ChildItem удаление метод

Выполнить этот метод мы можем так:

(Get-ChildItem -Path 'C:\Folder2\').Delete()

Есть так же метод, который проверит существование файла. Для примера у нас может создаваться бэкап по определенному пути и мы хотим проверять что планировщик выполнил эту задачу. Мы можем проверить через powershell наличие файла используя Exist:

(Get-Item C:\Folder2\file1.txt).Exists

Powershell проверить наличие файла

У файлов много свойств и для примера я хочу получить разные даты файлов в powershell. Я знаю, что все даты хранятся в типах данных datetime и по этому значению я могу отфильтровать:

Get-ChildItem -Path 'C:\Folder2\' | Get-Member -MemberType Property | where -Property Definition -Like "*datetime*"

И затем вывести:

Get-ChildItem -Path 'C:\Folder2\' | fl -Property *Time*

powershell дата файла

Изменим одну из дат:

$file = Get-Item -Path 'C:\Folder2\file1.txt'
$date = (Get-Date).AddDays(-15)
$file.CreationTime = $date

Примеры работ с Get-Date были тут.

Есть так же свойство, которое покажет расширение файла в powershell:

(Get-ChildItem -Path 'C:\Folder2\').Extension

powershell расширение файла

...

Теги: #powershell


Популярные тэги
О блоге
Этот блог представляет собой конспекты выученного материала, преобретенного опыта и лучшие практики в системном администрировании и программировании.