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!
Isso deve começar: technet.microsoft.com/pt-pt/library/ff730945.aspx
—
Cory Knutson
@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.
—
Cory Knutson
$objFSO = New-Object -com Scripting.FileSystemObject
Seguido por ($objFSO.GetFolder("C:\Scripts").Size)