1

Я пытаюсь получить размер каждой папки и ее подпапок вместе с владельцем, путем и датой последнего изменения - также до глубины 5. У меня есть все, кроме размера папки, я пытаюсь получить размер в МБ. Я использую PowerShell 4. Структура, которую я пытаюсь получить:

 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

Кодекс, который я имею до сих пор:

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 

Спасибо заранее!

0