Estou tentando obter o tamanho de cada pasta e suas subpastas junto com o proprietário, o caminho e a data da última modificação - também até uma profundidade de 5. Tenho tudo, exceto o tamanho da pasta concluída. Estou tentando obter o tamanho em MB. Eu estou usando o PowerShell 4. A estrutura que estou tentando obter:
The structure I am trying to obtain:
Date Modified Owner FullName Size
------------- ----- -------- ------
06/26/2017 /Users/demo/main/1slevel 12.0MB
06/26/2017 /Users/demo/main/1slevel/2nlvel 8.0MB
06/26/2017 /Users/demo/main/1slevel/2nlvel/3rdlvel 5.0MB
06/26/2017 /Users/demo/main/1slevel/2nlvel/3rdlvel/4thlev
06/26/2017 /Users/demo/main/1slevel/2nlvel/3rdlvel/4thlev/5thlevl
06/26/2017 /Users/demo/main/uns
06/26/2017 /Users/demo/main/uns/swan
06/26/2017 /Users/demo/main/uns/swan/drins
06/26/2017 /Users/demo/main/uns/swan/drins/furth
06/26/2017 /Users/demo/main/uns/swan/drins/furth/firf
O código que tenho até agora:
Function Get-Depth {
Param(
[String]$Path = '/Users/demo/main',
[String]$Filter = "*",
[Int]$ToDepth = 4,
[Int]$CurrentDepth = 0
)
#incrimintation
$CurrentDepth++
#obtains the path and passes the filter values. KEEP in mind that level 1 is 0.
Get-ChildItem $Path | %{
$_ | ?{ $_.Name -Like $Filter }
#if thier is a folder, use the depth and run function until to depth value is 4
If ($_.PsIsContainer) {
If ($CurrentDepth -le $ToDepth) {
# Call to function
#adds the filter values and depth to the path..
Get-Depth -Path $_.FullName -Filter $Filter '
-ToDepth $ToDepth -CurrentDepth $CurrentDepth
}
}
}
}
#just calling the function and and adding what we want!
Get-Depth|? {$_.PsIsContainer}| select @{Name='Date Modified';
Expression={$_.LastWriteTime.ToString('MM/dd/yyyy')}},
@{Name='Owner'; E={(($_.GetAccessControl().Owner.Split('\'))[1])}}, Fullname
Obrigado, avance!
Tags powershell