我需要一个powershell脚本,它将遍历系统中的所有用户,并找到任何用户拥有的所有文件的总大小...我有一个遍历所有用户的脚本,但我不知道继续计算每个用户拥有的总大小
这是我现在的脚本:
$users = Get-WmiObject -class Win32_UserAccount
foreach($user in $users) {
$name = $user.Name
$fullName = $user.FullName;
if(Test-Path "C:\Users\$name") {
$path = "C:\Users\$name"
} else {
$path = "C:\Users\Public"
}
$dirSize = (Get-ChildItem $path -recurse | Measure-Object -property length -sum)
"{0:N2}" -f ($dirSize.sum / 1Gb) + " Gb"
echo "$dirSize"
Add-Content -path "pathototxt..." -value "$name $fullName $path"
}
如果有人知道答案并告诉我,我会非常高兴...... 谢谢
最佳答案
如果有很多文件,您可能需要考虑:
$oSIDs = @{}
get-childitem <filespec> |
foreach {
$oSID = $_.GetAccessControl().Sddl -replace '^o:(.+?).:.+','$1'
$oSIDs[$oSID] += $_.length
}
完成后解析 SID。从 SDDL 字符串中解析所有者 SID 或众所周知的安全主体 ID 可以使提供者不必执行大量重复的名称解析来返回“友好”名称。
关于Powershell获取用户拥有的文件的总大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14753279/