Вам не нужно Get-Member
для отображения атрибутов файлов. Просто используйте Get-ChildItem
, чтобы получить содержимое каталога, а затем перенаправьте его на Sort-Object
:
Get-ChildItem -Path $path | Sort-Object -Property 'LastWriteTime'
Вы можете добавить параметр -Recurse
в Get-ChildItem
, чтобы вывести список дочерних каталогов, и добавить -Force
, чтобы вывести список файлов с атрибутом Hidden
. Вы можете передать все это командлету Format-*
, если хотите отобразить свойства, отличные от тех, которые отображаются при стандартном форматировании файлов и каталогов:
Get-ChildItem -Path $path `
| Sort-Object -Property 'LastWriteTime' `
| Format-Table -Property @('Attributes', 'FullName', 'CreationTime')
Get-Member
может использоваться для определения того, какие свойства существуют в объекте файла или каталога.
Вы можете использовать Measure-Object
с переключателем -Sum
, чтобы добавить свойство Length
коллекции файлов:
$htmlFiles = Get-ChildItem -Path $path -Filter '*.html';
$measurement = $htmlFiles | Measure-Object -Property 'Length' -Sum;
$totalHtmlSize = $measurement.Sum;
Чтобы сгенерировать таблицу общего размера для каждого типа файла, вы можете сделать что-то вроде этого:
Get-ChildItem -Path $path `
| Where-Object { $_ -is [IO.FileInfo]; } `
| Group-Object -Property 'Extension' `
| Select-Object `
@{ Name = 'Extension'; Expression = 'Name' }, `
@{ Name = 'TotalSize'; Expression = { `
($_.Group | Measure-Object -Property 'Length' -Sum).Sum } `
} `
| Sort-Object -Property 'Extension';
, который извлекает содержимое $path
, фильтрует его для включения только файлов, группирует файлы по свойству Extension
, проецирует каждую группу в объект со свойством для расширения и свойством для общего размера файла, затем сортирует результаты по расширению.