Obtém o tamanho de cada pasta dentro de uma função

1

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!

    
por russell 28.06.2017 / 22:53

0 respostas

Tags