hier noch ein Ansatz. Aber bitte erst ausprobieren an einem nicht so großen Verzeichnis...
AutoIt
#include <Array.au3>
#include <File.au3>
Global $sHDD, $sfoldername, $aOutput, $aTemp
$sHDD = "C:\"
$sfoldername = "Users"
RunWait(@ComSpec & " /c " & "dir " & $sHDD & $sfoldername & " /A:D /Q /S /B > output.txt", @DesktopDir, @SW_HIDE)
_FileReadToArray(@DesktopDir & "\output.txt", $aOutput)
;If FileExists(@DesktopDir & "\output.txt") Then FileDelete(@DesktopDir & "\output.txt")
Global $aArray2[$aOutput[0] + 1][5]
$aArray2[0][0] = $aOutput[0]
$aArray2[0][1] = "Owner"
$aArray2[0][2] = "Size"
$aArray2[0][3] = "Files Count"
$aArray2[0][4] = "Dir Count"
For $i = 1 To $aOutput[0]
$aArray2[$i][0] = $aOutput[$i]
$aArray2[$i][1] = _GetOwner($aOutput[$i])
$aTemp = DirGetSize($aOutput[$i], 3)
If Not @error Then
$aArray2[$i][2] = $aTemp[0]
$aArray2[$i][3] = $aTemp[1]
$aArray2[$i][4] = $aTemp[2]
EndIf
Next
_ArrayDisplay($aArray2)
Func _GetOwner($sFile_Folder)
Local $objSD, $oWMIService = ObjGet("winmgmts:")
Local $oFolderSecuritySettings = $oWMIService.Get("Win32_LogicalFileSecuritySetting='" & $sFile_Folder & "'")
Local $intRetVal = $oFolderSecuritySettings.GetSecurityDescriptor($objSD)
If $intRetVal = 0 Then
Return $objSD.Owner.Domain & "\" & $objSD.Owner.Name
Else
Return
EndIf
EndFunc ;==>_GetOwner
Alles anzeigen
Das Array sollte alle Ordner rekursiv liefern alphabetisch sortiert, den Besitzer, die Größe (im Moment nicht rekursiv), Anzahl Ordner und Anzahl Dateien.
Wenn die Größe rekursiv ermittelt werden soll, dann in Zeile 19 die 3 mit einer 1 ersetzen
Bei fehlender Leseberechtigung auf einen Ordner bricht das Script bis jetzt ab. Das müsste man sich noch ansehen um das abzufangen.