Obter o tamanho de cada pasta dentro de uma função


1

Eu estou tentando obter o tamanho de cada pasta e suas subpastas, juntamente com o proprietário, caminho e data da última modificação - também até uma profundidade de 5. Eu tenho tudo, exceto para o tamanho da pasta concluída que eu estou tentando obtenha 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 avancar!



@CoryKnutson obrigado cory, eu já olhei para isso. A única maneira de obter o tamanho de uma pasta é através dos comprimentos de cada arquivo? obrigado!
russell


@ ruslive109, sim. Isso ou fazendo uma referência fora do powershell como .NET ou VB. Há um exemplo disso na parte inferior do link que postei. $objFSO = New-Object -com Scripting.FileSystemObject Seguido por ($objFSO.GetFolder("C:\Scripts").Size)
Cory Knutson
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.