我正在尝试使用 VBScript 获取用户本地配置文件的大小。我知道配置文件的目录(通常是“C:\Users\blah”)。
以下代码不适用于大多数配置文件(权限被拒绝错误 800A0046):
Dim folder
Dim fso
Set fso = WScript.CreateObject("Scripting.FileSystemObject")
Set folder = fso.GetFolder("C:\Users\blah")
MsgBox folder.Size ' Error occurs here
还有其他方法可以做到这一点吗?
更新:
我做了一些深入的研究,结果发现如果拒绝对目录中的某些子文件夹或文件(我希望获取其大小)授予权限,就会发生权限被拒绝错误。在用户配置文件的情况下,总会有一些系统文件,即使是管理员组也没有权限访问。
为了解决这个问题,我编写了一个函数,尝试以正常方式(上面)获取文件夹大小,然后,如果发生错误,它会递归到文件夹的子目录中,忽略权限被拒绝的文件夹大小(但不忽略其余文件夹)。
Dim fso
Set fso = WScript.CreateObject("Scripting.FileSystemObject")
Function getFolderSize(folderName)
On Error Resume Next
Dim folder
Dim subfolder
Dim size
Dim hasSubfolders
size = 0
hasSubfolders = False
Set folder = fso.GetFolder(folderName)
' Try the non-recursive way first (potentially faster?)
Err.Clear
size = folder.Size
If Err.Number <> 0 then ' Did not work; do recursive way:
For Each subfolder in folder.SubFolders
size = size + getFolderSize(subfolder.Path)
hasSubfolders = True
Next
If not hasSubfolders then
size = folder.Size
End If
End If
getFolderSize = size
Set folder = Nothing ' Just in case
End Function
答案1
就像您说的,您遇到了权限被拒绝的错误。运行此脚本的帐户是否真的有权遍历这些用户配置文件文件夹并计算大小?如果您无法使用 Explorer 手动查看它,那么您的脚本就不会做得更好。
答案2
谢谢!!
我以为我遇到了一些奇怪的 2008 问题,其中许可似乎被允许,但实际上却不是......
我需要一个脚本代码来检查回收站的物理大小,并将其与用户或管理员看到的内容进行比较。
到目前为止,我在所有服务器上发现了 2GB 到 8GB 的丢失文件。
代码很简单:
Const RECYCLE_BIN = &Ha&
Set objShell = CreateObject("Shell.Application")
Set objFolder = objShell.Namespace(RECYCLE_BIN)
Set objFolderItem = objFolder.Self
Set RecycledObjects = objFolder.Items
For Each objItem in RecycledObjects
TotalVisibleSize = TotalVisibleSize + objItem.Size
Next
WriteLog "Obtaining size for C:\" & BinFolder, LOG_VERBOSE
WriteLog "Trying to get size", LOG_VERBOSE
TotalPhysicalSize = getFolderSize("c:\" & BinFolder)
if objFSO.FolderExists("d:\" & BinFolder) then
WriteLog "Obtaining size for D:\" & BinFolder, LOG_VERBOSE
TotalPhysicalSize = TotalPhysicalSize + getFolderSize("d:\" & BinFolder)
end if
剩下的就交给你了!
再次感谢迈克尔。
答案3
我创建了一个脚本,用于从 Active Directory 中的所有 Windows XP 和 Windows 7 计算机获取本地用户配置文件及其大小。该脚本可在此处找到:
Active Directory:VBscript 用于枚举 Active Directory 中所有计算机和用户的本地配置文件大小
答案4
如果你想使用 powershell,这个也很好,尽管这个是专门为我的文档文件夹的大小编写的: http://gallery.technet.microsoft.com/ScriptCenter/en-us/149ef544-a34a-4896-b6c3-b09491757f04