2015-12-02 87 views
0

我需要決定表格的列順序。我實際的命令就是一個:表格格式,列順序

$tab | Sort-Object "Pourcentage" -Descending | 
    Format-Table -AutoSize | 
    Out-String -Width 4000 | 
    Out-File -Append O:\sigdci\public\parcoursArborescence\bilanAnalyse.txt 

它給了我這個順序:

Derniere modification Categorie recherchee Dernier acces Dossier Pourcentage 

但我需要「檔案」是第一個,然後是「Categorie recherchee」和「Pourcentage」應是第2和3。我應該如何繼續?

回答

1

指定所需的順序列標題:

$tab | Sort-Object "Pourcentage" -Descending | 
    Format-Table 'Dossier', 'Categorie recherchee', 'Pourcentage', 
       'Derniere modification', 'Dernier acces' -AutoSize | 
    Out-String -Width 4000 | 
    Out-File -Append 'O:\sigdci\public\parcoursArborescence\bilanAnalyse.txt' 

如果您需要動態地確定列名,你可以做這樣的:

$headers = $tab[0].PSObject.Properties | 
      Where-Object MemberType -eq NoteProperty | 
      Select-Object -Expand Name 

但是,你必須以某種方式將該列表帶入您想要的順序。也許你可以做這樣的:

$allHeaders = 'Dossier', 'Categorie recherchee', 'Pourcentage', 
       'Derniere modification', 'Dernier acces' 
$actualHeaders = $tab[0].PSObject.Properties | 
       Where-Object { MemberType -eq NoteProperty } | 
       Select-Object -Expand Name 
$headers = $allHeaders | Where-Object { $actualHeaders -contains $_ } 

$allHeaders是包含在正確的順序所有標頭的數組。然後,從該列表中刪除$actualHeaders中不存在的所有項目,並保留其餘標題的順序。

+0

即使在其中一列不存在的情況下,這項工作是否還能正常工作?因爲程序的用戶只能激活一些列。 – Kikopu

+0

它會工作,但你會得到一個空的列。 –

+0

問題是,當顯示所有列時,它們佔用的位置太多。你有沒有顯示空白的想法? – Kikopu