Powershell Get-Member - это команда, которая возвращает все свойства и методы объекта. На мой взгляд, после понимания этого командлета, становится намного проще работать с PS.
Get-Member ничего не изменяет, он только показывает что содержится в объекте. Каждый результат каких-то действий формирует объект и для того что бы увидеть из чего он состоит нужно выполнить:
$a = "b"
$a | Get-Member
У каждого объекта в powershell есть метод GetType, который выводит тип данных (строка, число, дата и т.д.). В нашем случае очевидно, что это строка, но порой это бывает не ясно и можно это узнать подобным образом:
$a.GetType()
Свойства на английском Property, а методы Method и порой их бывает очень много, а нам нужно узнать только о конкретном типе. Что бы вывести все свойства выполните следующее:
$a = "test"
$a | Get-Member -MemberType Property
В нашем случае мы видим только один Property, но чаще их бывает больше. Length выводит в powershell длину строки. Вызывается аналогично:
$a.Length
Powershell Get-Member на примере свойств и методов файла
Получим список файлов из любой директории подобным образом:
Get-ChildItem -Path 'C:\Folder2\' | Get-Member
Мы можем увидеть, что некоторые методы похожи на командлеты PS. Например выделенный мною будет делать примерно то же (без расширенных возможностей), что и Remove-Item:
Выполнить этот метод мы можем так:
(Get-ChildItem -Path 'C:\Folder2\').Delete()
Есть так же метод, который проверит существование файла. Для примера у нас может создаваться бэкап по определенному пути и мы хотим проверять что планировщик выполнил эту задачу. Мы можем проверить через powershell наличие файла используя Exist:
(Get-Item C:\Folder2\file1.txt).Exists
У файлов много свойств и для примера я хочу получить разные даты файлов в powershell. Я знаю, что все даты хранятся в типах данных datetime и по этому значению я могу отфильтровать:
Get-ChildItem -Path 'C:\Folder2\' | Get-Member -MemberType Property | where -Property Definition -Like "*datetime*"
И затем вывести:
Get-ChildItem -Path 'C:\Folder2\' | fl -Property *Time*
Изменим одну из дат:
$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
...
Подписывайтесь на наш Telegram канал
Теги: #powershell