2016-06-07 9 views
0

Eines der Dinge, die ich in Powershell zu tun ist:Powershell Format-Wide und Sortierung

Set-Location 'C:\Windows\System32\WindowsPowerShell\v1.0\en-US\' 
Get-ChildItem *.txt | Format-Wide -Column 3 

Das ist mir eine großartige Aussicht auf alles gibt es zu lernen und zu erkunden. Die Sache, die mich gestört hat, ist die Sortierung, denn jetzt habe ich 3 Spalten, die mit 'A' beginnen. Es wäre besser lesbar, wenn ich zum Beispiel eine Spalte mit A-J, eine Spalte L-R und eine Spalte von R-Z hätte. Das störte mich so sehr, ich schrieb eine Funktion, es zu tun:

Function PSHELP {  
    Set-Location 'C:\Windows\System32\WindowsPowerShell\v1.0\en-US\' 

    #Initialize variables 
    $files = gci *.txt | select name 
    $count = $files.count 
    $remainder = $count % 3 
    $rows = ($count - $remainder) /3 -as [int] 

    #I add an extra row by default, to deal with remainders 
    $rows++ 
    $Table = New-Object 'object[,]' $rows,3 


    #Build up a table the way I want to see it 
    #column 1: A,B,C... 
    #column 2: L,M,N.. 
    #column 3: R,...,Z 

    $index = 0 
    for ($j = 0; $j -lt 3; $j++) 
    { 
     $ThisColumnLength = $rows 
     if($j -ge $remainder){ 
      $ThisColumnLength-- 
     } 

     for ($i = 0; $i -lt $ThisColumnLength; $i++) 
     { 
      $table[$i,$j] = $files[$index] 
      $index++ 
     }   
    } 

    #Read the table in the order Format-Wide throws them on the screen 
    #And store this in an array 
    $array = @() 
    for ($i = 0; $i -lt $rows; $i++) 
    { $ThisRowLength = 3 

     if(($i+1) -eq $Rows){ 
      $ThisRowLength = $remainder 
     } 

     if ($ThisRowLength -gt 0){ 
      for ($j = 0; $j -lt $ThisRowLength; $j++) 
      { 
       $array += $table[$i,$j] 
      } 
     } 
    } 

    $array | fw -Column 3 
} 

Gibt es einen ‚Standard‘ Weg, dies in Powershell zu tun? Es scheint eine ziemlich natürliche Option für mich zu sein, aber ich konnte es nicht finden. Gibt es eine Option oder einen Befehl, den ich verpasst habe?

Zur Klarstellung: Ich suche nicht nach Wegen, Hilfe zu finden. Diese Frage bezieht sich auf den Format-Wide-Befehl und/oder eine mögliche Alternative. Ich dachte nur, das wäre ein schönes Beispiel.

[Bearbeiten:] Änderte meine Funktion zu etwas weniger klobig.

[Edit2:] Der Code, den ich gepostet habe, ist fehlerhaft, und es wird spät. Wenn Sie es in die Shell einfügen und vergleichen Sie es mit {Get-Childitem * .txt | Format-Whole -column 3}, sollten Sie in der Lage zu sehen, was ich hier versuche zu tun. Ich hoffe, dass jemand eine Alternative vorschlagen kann.

[Edit3:] Modifiziert den Code erneut, endlich hat es funktioniert. Im Prozess fand ich über, welche Format-Wide kehrt eine sehr interessante Sache aus:

PS> (Get-ChildItem) .Count Ergebnis: 125

PS> (Get-ChildItem | Format-Wide). Anzahl Ergebnis: 129

Das verwirrte mich sehr, weil ich manchmal die Ergebnisse gezählt habe und nicht bekommen habe, was ich erwartet habe, also ein paar Mal dachte ich, etwas stimmt nicht mit meinem Code, aber vielleicht war alles in Ordnung.

Antwort

0

Wenn meinen Sie Standard Weg, um alle Hilfedateien in Powershell zu finden, dann ja dort:

Get-Help * -Category HelpFile 

Außerhalb dass ich einfach diese Seite auf Technet überprüfen: Windows PowerShell Core About Topics