I need help trying to list Folders and Subfolders and get there size in KB or MB or GB or TB or PT
and finally I need to export it to a CSV .
$events = @()
$startfolder = "c:\Temp"
$folders = get-childitem $startfolder | where {$_.PSiscontainer -eq "True"}
foreach ($fol in $Folders) {
$colItems = (Get-ChildItem $fol.fullname -recurse | Measure-Object -property length -sum)
If ( $colItems.sum -lt 1KB ) { $colItemsOutput = "$("{0:N0}" -f ($colItems.sum / 1)) Bytes" }
ElseIf ( $colItems.sum -lt 1MB ) { $colItemsOutput = "$("{0:N2}" -f ($colItems.sum / 1KB)) KB" }
ElseIf ( $colItems.sum -lt 1GB ) { $colItemsOutput = "$("{0:N2}" -f ($colItems.sum / 1MB)) MB" }
ElseIf ( $colItems.sum -lt 1TB ) { $colItemsOutput = "$("{0:N2}" -f ($colItems.sum / 1GB)) GB" }
ElseIf ( $colItems.sum -lt 1PB ) { $colItemsOutput = "$("{0:N2}" -f ($colItems.sum / 1TB)) TB" }
ElseIf ( $colItems.sum -ge 1PB ) { $colItemsOutput = "$("{0:N2}" -f ($colItems.sum / 1PB)) PB" }
$Event = "$($fol.fullname) $colItemsOutput `r`n"
$events+=$event
$events | export-csv -notypeinformation -path c:\Temp\files.csv
}
Here is the current output with out the export , but not sure why it is grabbing the test folder twice.
C:\Temp\test 1.86 GB
C:\Temp\test 1.86 GB
C:\Temp\welltesting 0 Bytes
I updated the script now able to export it to a CVS but lost the sizes of folders.
$events = @()
$startfolder = "c:\Temp"
$folders = get-childitem $startfolder | Where-Object {$_.PSiscontainer -eq "True"}
ForEach ($fol in $Folders) {
$colItems = (Get-ChildItem $fol.fullname -recurse | Measure-Object -property length -sum | Select-Object Folders, Size)
If ( $colItems.sum -lt 1KB ) { $colItemsOutput = "$("{0:N0}" -f ($colItems.sum / 1)) Bytes" }
ElseIf ( $colItems.sum -lt 1MB ) { $colItemsOutput = "$("{0:N2}" -f ($colItems.sum / 1KB)) KB" }
ElseIf ( $colItems.sum -lt 1GB ) { $colItemsOutput = "$("{0:N2}" -f ($colItems.sum / 1MB)) MB" }
ElseIf ( $colItems.sum -lt 1TB ) { $colItemsOutput = "$("{0:N2}" -f ($colItems.sum / 1GB)) GB" }
ElseIf ( $colItems.sum -lt 1PB ) { $colItemsOutput = "$("{0:N2}" -f ($colItems.sum / 1TB)) TB" }
ElseIf ( $colItems.sum -ge 1PB ) { $colItemsOutput = "$("{0:N2}" -f ($colItems.sum / 1PB)) PB" }
# $Event = "$($fol.fullname) $colItemsOutput `r`n"
# $events += $Event
$output= New-Object -TypeName PSObject -Property @{
Size = $colItemsOutput
Folders = $($fol.fullname)
}
$events+=$output
}
$events | select Folders, Size | export-csv -notypeinformation -path c:\Temp\files.csv
Output :
| Folders | Size |
| C:\Temp\test | 0 Bytes |
| C:\Temp\welltesting | 0 Bytes |