您不需要Get-Member
來顯示文件的屬性。只需使用Get-ChildItem
得到一個目錄的內容,然後管他們Sort-Object
:
Get-ChildItem -Path $path | Sort-Object -Property 'LastWriteTime'
您可以將-Recurse
參數添加到Get-ChildItem
列出孩子的目錄,並添加-Force
列出與Hidden
屬性文件。可以通過管道而這一切對一個Format-*
cmdlet的,如果你想顯示效果比那些文件和目錄的標準格式顯示的其他屬性:
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
屬性包括文件,組文件,每個組伸入一個對象與prope rty用於擴展,用於總文件大小的屬性,然後通過擴展對結果進行排序。
正如@BACON所說,'Get-Member'會給你對象的屬性和方法。你是否將這些稱爲屬性?通常屬性被認爲是文件的屬性(隱藏,只讀,存檔等)。這些可以通過'Get-Member'不創建的'System.IO.FileInfo'對象的實例來訪問。 – 2012-03-10 21:26:21
也許它的名字'Get-Member'令人困惑? 'Get-Member'不會「獲取」對象成員(方法,參數或字段)的值。 'Get-Member'從對象的類型中獲取成員的定義。要檢索特定成員的值,可以使用'$ foo.Property'語法,或者使用諸如'Select-Object'或'Format- *'的cmdlet。請注意,在文件列表中,假設您沒有動態附加自定義屬性,即使每個文件的成員值不同,「Get-Member」也會爲每個文件返回相同的成員定義。 – BACON 2012-03-10 21:38:03
所以這是一個學習練習來實現自己的冒泡排序,對吧?你不想只把你的代碼片段改成'get-childitem。 -filter * .html | Sort-Object -Property'LastWriteTime'?因爲那*會*通過它們的'LastWriteTime'屬性對'.html'文件列表進行排序。我認爲問題在於你需要將'(get-member $ a [$ i])。LastWriteTime'改爲'$ a [$ i] .LastWriteTime',並且你還將每個文件與自己進行比較(你在那裏需要'$ a [$ i + 1]')。正如我上面所解釋的那樣,'Get-Member'不像這樣工作,在這裏不需要。只需直接訪問該屬性。 – BACON 2012-03-10 22:44:47