# encoding: ascii
# api: powershell
# title: LibraryDirectory.ps1
# description: From Windows PowerShell Cookbook (O’Reilly) by Lee Holmes
# version: 0.1
# type: function
# author: Lee Holmes
# license: CC0
# function: Get-DirectorySize
# x-poshcode-id: 2190
# x-archived: 2016-03-18T21:12:13
# x-published: 2011-09-09T21:41:00
#
#
## From Windows PowerShell Cookbook (O'Reilly)
## by Lee Holmes (http://www.leeholmes.com/guide)

Set-StrictMode -Version Latest

## Get the size of all the items in the current directory
function Get-DirectorySize
{
    <#

    .EXAMPLE

    PS > $DebugPreference = "Continue"
    PS > Get-DirectorySize
    DEBUG: Current Directory: D:\lee\OReilly\Scripts\Programs
    Directory size: 46,581 bytes
    PS > $DebugPreference = "SilentlyContinue"
    PS > $VerbosePreference = "Continue"
    PS > Get-DirectorySize
    VERBOSE: Getting size
    VERBOSE: Got size: 46581
    Directory size: 46,581 bytes
    PS > $VerbosePreference = "SilentlyContinue"

    #>

    Write-Debug "Current Directory: $(Get-Location)"

    Write-Verbose "Getting size"
    $size = (Get-ChildItem | Measure-Object -Sum Length).Sum
    Write-Verbose "Got size: $size"

    Write-Host ("Directory size: {0:N0} bytes" -f $size)
}

## Get the list of items in a directory, sorted by length
function Get-ChildItemSortedByLength($path = (Get-Location), [switch] $Problematic)
{
    <#
    
    .EXAMPLE

    PS > Get-ChildItemSortedByLength -Problematic
    out-lineoutput : Object of type "Microsoft.PowerShell.Commands.Internal.Fo
    rmat.FormatEntryData" is not legal or not in the correct sequence. This is
    likely caused by a user-specified "format-*" command which is conflicting
    with the default formatting.

    #>

    if($Problematic)
    {
        ## Problematic version
        Get-ChildItem $path | Format-Table | Sort Length
    }
    else
    {
        ## Fixed version
        Get-ChildItem $path | Sort Length | Format-Table
    }
}
