Bir fonksiyondaki her klasörün boyutunu al


1

Her klasörün ve alt klasörlerinin boyutunu sahip, yol ve en son değiştirilen tarihle birlikte almaya çalışıyorum - ayrıca 5 derinliğe kadar. Tamamlanan klasörün boyutu dışında her şeye sahibim. MB cinsinden boyutunu al. PowerShell 4 kullanıyorum. Elde etmeye çalıştığım yapı:

 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

Şimdiye kadar sahip olduğum Kod:

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 

Şimdiden teşekkür ederim!



@CoryKnutson teşekkür ederim cory, ben zaten bu içine baktım. Bir klasörün boyutunu elde etmenin tek yolu, her bir dosyanın uzunluğundan mı geçiyor? Teşekkürler!
russell


@ ruslive109, Evet. Bu veya .NET veya VB gibi powershell dışında bir referans yapmak Gönderdiğim bağlantının altında bunun bir örneği var. $objFSO = New-Object -com Scripting.FileSystemObject bunu takiben ($objFSO.GetFolder("C:\Scripts").Size)
Cory Knutson
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.