{"id":82,"date":"2020-01-14T18:22:57","date_gmt":"2020-01-14T17:22:57","guid":{"rendered":"http:\/\/sys-code-alpha.com\/?p=82"},"modified":"2020-01-14T19:03:27","modified_gmt":"2020-01-14T18:03:27","slug":"a-simple-treesize-replacement","status":"publish","type":"post","link":"https:\/\/sys-code-alpha.com\/?p=82","title":{"rendered":"A simple TreeSize replacement"},"content":{"rendered":"\n<p>Below you may find a simple way to pick up the folder size and subfolder sizes in PowerShell.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>function Get-FolderSizeTree {\n        &lt;#\n        .SYNOPSIS\n        Retrieves folder size information in a structured way. \n        .DESCRIPTION\n        Retrieves folder size information in a structured way.\n        .EXAMPLE\n        PS C:\\> Get-FolderSizeTree .\\sdwork\\ | ft\n\n        ParentName  Name                        SizeMB SizeGB\n        ----------  ----                        ------ ------\n        .\\sdwork\\                                36.19   0.04\n                    C:\\sdwork                    29.58   0.03\n                    C:\\sdwork\\binwin              1.33      0\n                    C:\\sdwork\\bsddb               0.06      0\n                    C:\\sdwork\\bsddb\\test          0.09      0\n                    C:\\sdwork\\compiler            0.15      0\n                    C:\\sdwork\\distutils           0.34      0\n                    C:\\sdwork\\distutils\\command   0.18      0\n                    C:\\sdwork\\email               0.13      0\n                    C:\\sdwork\\email\\test           0.1      0\n        #>\n        [CmdletBinding()] \n        param (\n                [parameter(mandatory=$true,ValueFromPipeline = $true, ValueFromPipelineByPropertyName = $true )] \n                [System.IO.DirectoryInfo[]]$Name,\n                [Switch]$ShowNonEmptyDirsOnly,\n                [Switch]$SortBySize\n                )\n\n                BEGIN{}\n                PROCESS{\n                foreach($name1 in $name){  \n\n                        $out2 = Get-ChildItem -Force -Recurse $Name1 -File | \n                            Select-Object LastWriteTime, @{n='SizeMB'; e={[math]::round(($_.length \/ 1MB),3)}}, name, directory | \n                                Group-Object directory | \n                                    Select-Object @{n='ParentName';e={$Null}},  Name, \n                                        @{n='SizeMB' ; e={[math]::Round((($_.group.sizeMB | Measure-Object -Sum).sum),3)}} , \n                                            @{n='SizeGB' ; e={[math]::Round((($_.group.sizeMB | Measure-Object -Sum).sum\/1024),3)}}\n                        \n                        $out1 = \"\" | Select-Object @{n='ParentName';e={$Name1}}, \n                                        @{n='Name';e={$Null}},  \n                                            @{n='SizeMB';e={[math]::Round((($out2.SizeMB | Measure-Object -sum).sum),3)}}, \n                                                @{n='SizeGB' ; e={[math]::Round((($out2.sizeMB | Measure-Object -Sum).sum\/1024),3)}}\n                        \n                        $Total = @()\n                        $Total += $out1\n                        $Total += $out2\n\n                        IF($ShowNonEmptyDirsOnly){\n                            IF($SortBySize){ $Total | ?{$_.sizeMB -gt 0} | Sort-Object -Property SizeMB }ELSE{ $Total | ?{$_.sizeMB -gt 0 } }\n                        }ELSE{\n                            IF($SortBySize){ $Total | Sort-Object -Property SizeMB }ELSE{ $Total }\n                        }\n                        \n                    }\n                }\n                END{}\n}<\/code><\/pre>\n","protected":false},"excerpt":{"rendered":"<p>Below you may find a simple way to pick up the folder size and subfolder sizes in PowerShell.<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[1],"tags":[],"_links":{"self":[{"href":"https:\/\/sys-code-alpha.com\/index.php?rest_route=\/wp\/v2\/posts\/82"}],"collection":[{"href":"https:\/\/sys-code-alpha.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/sys-code-alpha.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/sys-code-alpha.com\/index.php?rest_route=\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/sys-code-alpha.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=82"}],"version-history":[{"count":5,"href":"https:\/\/sys-code-alpha.com\/index.php?rest_route=\/wp\/v2\/posts\/82\/revisions"}],"predecessor-version":[{"id":87,"href":"https:\/\/sys-code-alpha.com\/index.php?rest_route=\/wp\/v2\/posts\/82\/revisions\/87"}],"wp:attachment":[{"href":"https:\/\/sys-code-alpha.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=82"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/sys-code-alpha.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=82"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/sys-code-alpha.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=82"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}