Eu sei que isso não irá responder à sua pergunta pelo vbscript, mas eu recomendaria o powershell se você estiver aberto a isso. Normalmente é muito mais fácil, apenas para dar um exemplo ...
Este é um link para começar: link
e aqui está uma versão modificada de seu exemplo:
$colItems = (Get-ChildItem C:\users\username\desktop -recurse | Measure-Object -property length -sum)
"{0:N2}" -f ($colItems.sum / 1MB) + " MB"
Altere os valores em C:\users\username\desktop
e diga-me se você gostou dos resultados. Se você quiser e quiser ajuda com looping e pegar os dados de computadores remotos, me avise.
Script v1: Não é perfeito, mas acho que funcionará na maior parte do tempo. Você precisará fazer o download dos CMDlets da Quest AD e instalá-los no sistema a partir do qual será executado. Além disso, você precisará definir sua política de execução como remotesigned. Em seguida, copie esse script para a unidade local desse sistema. Você precisará editar três valores, o $ rootou (essa é a UO que deseja pesquisar) e as duas linhas em #Exportar caminhos. Deixe-me saber como funciona. ou se você precisar de uma cópia do script carregado.
#Script used to gather data size of remote computers user profiles by Eric C. Singer
#a generic powershell object used to group a collection of various objects into a single object
$data = new-object psobject
$columns = @"
ComputerName
ProfileName
DocumentsSizeMB
DesktopSizeMB
"@
$columns -split "'n" |%{$data | add-member -membertype noteproperty -name $_.trim() -value $null}
#Store a list of computers that we couldn't connect to
$failedcomputers = New-Object System.Collections.ArrayList
#Store the results of the gathered data
$foldersize = New-Object System.Collections.ArrayList
#Root OU that you want to start searching for computers
$RootOU = "yourdomain.org/your ou/ your sub-ou"
#Getting a list of all computers
$allcomputers = Get-QADComputer -SearchRoot "$rootou" -SizeLimit 0
#Export paths
$failedcomputersfiles = "c:\yourpath\yourfile.csv"
$foldersizefile = "c:\yourpath\yourfile.csv"
#Looping through each computer
Foreach ($computer in $allcomputers)
{
#Seeing if we can connect to the computer, if not, we're going to add it to the failedcomputers array.
If (Test-Path "\$($computer.name)\c$")
{
#Setting the two possiable paths based on whether its Windows 7 or XP
$Windows7ProfileRoot = "\$($computer.name)\c$\Users"
$WindowsXPProfileRoot = "\$($computer.name)\c$\Documents and Settings"
#if the computer is windows 7 run this, or go to the else statement
If ($($computer.OSName) -like "Windows 7*")
{
#getting a list of profiles
$allprofiles = Get-ChildItem $Windows7ProfileRoot | Where-Object {$_.PSIsContainer -eq $true}
#Looping through each profile and running the following.
Foreach ($user in $allprofiles)
{
$data.ComputerName = $computer.name
$data.ProfileName = $user.name
$userdesktop = (Get-ChildItem "$Windows7ProfileRoot\$($user.name)\desktop" -recurse | Measure-Object -property length -sum).sum / 1MB
$userdocuments = (Get-ChildItem "$Windows7ProfileRoot\$($user.name)\documents" -recurse | Measure-Object -property length -sum).sum / 1MB
$data.DesktopSizeMB = $userdesktop
$data.DocumentsSizeMB = $userdocuments
$data | Select-Object * | ForEach-Object {$foldersize.Add($_)}
}
}
Else
{
$allprofiles = Get-ChildItem $WindowsXPProfileRoot | Where-Object {$_.PSIsContainer -eq $true}
Foreach ($user in $allprofiles)
{
$data.ComputerName = $computer.name
$data.ProfileName = $user.name
$userdesktop = (Get-ChildItem "$WindowsXPProfileRoot\$($user.name)\desktop" -recurse | Measure-Object -property length -sum).sum / 1MB
$userdocuments = (Get-ChildItem "$WindowsXPProfileRoot\$($user.name)\my documents" -recurse | Measure-Object -property length -sum).sum / 1MB
$data.DesktopSizeMB = $userdesktop
$data.DocumentsSizeMB = $userdocuments
$data | Select-Object * | ForEach-Object {$foldersize.Add($_)}
$data
}
}
}
Else
{
$failedcomputers.Add("$($computer.name)")
}
}
$failedcomputers | Export-Csv $failedcomputersfiles -NoTypeInformation
$foldersize | Export-Csv $foldersizefile -NoTypeInformation