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!
Bu senin başlamanı sağlamalı: technet.microsoft.com/en-us/library/ff730945.aspx
—
Cory Knutson
@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.
—
Cory Knutson
$objFSO = New-Object -com Scripting.FileSystemObject
bunu takiben ($objFSO.GetFolder("C:\Scripts").Size)