Simple Formatting of Output

This topic contains 3 replies, has 3 voices, and was last updated by Profile photo of Don Jones Don Jones 1 month, 2 weeks ago.

Viewing 4 posts - 1 through 4 (of 4 total)
  • Author
    Posts
  • #49784
    Profile photo of Andrew
    Andrew
    Participant

    I am trying to get the @{n='length (MB)';e= {$_.length/1MB}} to display in say 15.47 and not 15.477776998, is there an easy way to get this formatting in the below powershell?

    $filepath = "C:\temp"

    $Items = Get-ChildItem -Path $filepath -Recurse -Force

    $files = $items | ? {!$_.PsIsContainer }

    $files | Select-Object -Property @{n='FileName';e={$_.name.ToUpper()}}, @{n='length (MB)';e= {$_.length/1MB}} | Sort-Object -Property 'length (MB)' -Descending | Out-GridView

    #49793
    Profile photo of Daniel Krebs
    Daniel Krebs
    Participant

    Hi Andrew,

    You've got two options:

    1. Round the numbers to the specified number of decimal places:

    [System.Decimal]::Round($_.Length/1MB, 2)

    2. Convert it to a string and format it using the .NET formatting feature:

    ($_.Length/1MB).ToString('N2')

    https://gist.github.com/Dan1el42/5a809c0157202709769a5f8503357e97

    I hope that helps.

    Cheers
    Daniel

    #49797
    Profile photo of Andrew
    Andrew
    Participant

    Thanks Daniel – been banging my head on the wall for a while – cheers

    #49850
    Profile photo of Don Jones
    Don Jones
    Keymaster

    I'd have....

    $files | Select-Object -Property @{n='FileName';e={$_.name.ToUpper()}}, @{n='length (MB)';e={ '{0:N2}' -f ($_.length/1MB) } | Sort-Object -Property 'length (MB)' -Descending | Out-GridView
    

    Formatting (-f) operator. Uses the same notation as the ToString() trick above.

Viewing 4 posts - 1 through 4 (of 4 total)

You must be logged in to reply to this topic.