DuhMan
DuhMan

Reputation: 9

Remote Directories with sizes

I want to import a csv list of file servers and shares ...

"\fileserver1\share"

"\fileserver2\share"

"\fileserver3\share"

Then export only the top-level directory path (UNC) with the size in MB of the entire directory and sub directories on a single line and get any errors that are thrown also exported to the CSV. I do get multiple "Get-ChildItem : The specified path, file name, or both are too long." errors and need the path...

FolderName FolderSizeMB

"\fileserver1\share" 1.19

"\fileserver2\share" 2.19

"\fileserver3\share" 3.19

I have manually run this script but it only gives the size for the top level and not the entire directory

$targetfolder = "\\fileserver\share"
gci $targetfolder -Directory -force -ea SilentlyContinue | % {
    $len = 0
    gci $_.fullname -Directory -force -ea SilentlyContinue | % { $len += $_.length }

    [PSCustomObject]@{
        FolderName   =  $_.fullname
        FolderSizeMB = '{0:N2}' -f ($len / 1MB)
    }
}

I have also tried this

Listing directories with name and size

But I am not able to get errors exported.

Upvotes: 0

Views: 40

Answers (1)

Someone
Someone

Reputation: 335

$targetfolder = "\\fileserver\share"
Get-ChildItem $targetfolder -Directory -force -ErrorAction SilentlyContinue | foreach {
    $measure =
        Get-ChildItem $_.fullname -File -Recurse -force -ErrorAction SilentlyContinue -ErrorVariable err |
        measure -Property 'Length' -Sum 

    [PSCustomObject]@{
        FolderName   =  $_.fullname
        FolderSizeMB = ($measure.Sum / 1MB).ToString('N2')
        Errors = "$err"
    }
} |
Export-Csv -Path 'C:\Users\Admin\Documents\Report.csv' -NoTypeInformation

Upvotes: 0

Related Questions