简体   繁体   中英

Powershell adjust the format table width

This is the script

get-childitem D:\media\*.mkv -recurse | Select-Object -Property name,  @{n='Resolution';expression={mediainfo $_.FullName --inform="Video;%Width%x%Height%"}}

and the output is

Name                      Resolution
----                      ----------
Video File -Copy (2).mkv 1920x1080 
Video File -Copy (3).mkv 1920x1080 
Video File -Copy (4).mkv 1920x1080 
Video File -Copy (5).mkv 1920x1080 
Video File -Copy (6).mkv 1920x1080 
Video File -Copy (7).mkv 1920x1080 
Video File -Copy.mkv     1920x1080 
Video File.mkv           1920x1080 

but if file name character is big, the resolution column info get missing. name column info gets overlapping.

i read this page https://learn.microsoft.com/en-us/powershell/module/microsoft.powershell.utility/format-table?view=powershell-7.2

but i am not sure how to implement the property width or auto size.

You can use Format-Table with a calculated property to limit the width of the Name column; eg:

... | Format-Table @{ Name='Name'; Expression = 'Name'; Width = 60 }, Resolution

Longer values are then truncated with ... / in Windows PowerShell / PowerShell (Core) 7+. You may add -Wrap to show them in full, spread across as many lines as needed.

The alternative - which won't render nicely on screen - is to pipe to Out-String and use its -Width parameter with a terminal-column count large enough to accommodate all table columns:

... | Out-String -Width 300

Note: With your output objects, Format-Table formatting is implied (they have 4 or fewer properties), which is why there's no explicit call to it above.

As an aside:

  • Format-Table -Autosize does not help, as it doesn't ensure that all columns are shown - see this answer for more information.

Sample code:

[pscustomobject] @{
  Name = 'x' * 80 + 'y'
  Resolution = '1920x1080'
},
[pscustomobject] @{
  Name = 'x' * 280 + 'z'
  Resolution = '2560x1600'
} |
  Format-Table -Wrap @{ Name='Name'; Expression = 'Name'; Width = 60 }, Resolution

Output:

Name                                                         Resolution
----                                                         ----------
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 1920x1080
xxxxxxxxxxxxxxxxxxxxy
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 2560x1600
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxz

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM