Listing 1: User Quota Utility Excerpt
<script language="vbscript">
Sub Window_Onload
self.Focus()
self.ResizeTo 900,600
qlimit.value = "5368709120"
End Sub
Sub RunMod
On Error Resume Next
statval.value = ""
If Right(usrlist.value,1) <> Chr(10) Then
If Trim(usrlist.value) <> "" Then
usrlist.value = usrlist.value&VbCrLf
Else
statval.value = statval.value & "No users listed " & now()
Exit Sub
End If
End If
ulist = usrlist.Value
spulist = Split(ulist,vbcrlf)
strComputer = Trim(Computer.value)
strDrive = Trim(Drive.value)
strDomain = Trim(Domain.value)
If trim(computer.value) = "" Then
strComputer = "."
Else
strComputer = Trim(computer.value)
End If
' BEGIN CALLOUT A
For f = 0 to UBound(spulist)-1
UserID = Trim(spulist(f))
If Trim(UserID) <> "" Then
usr=UserID
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\CIMV2")
If strDomain = "" Then
Set colItems = _
objWMIService.ExecQuery("Select Name from Win32_ComputerSystem",,48)
For Each objItem in colItems
strdomain = objItem.name
Next
Set colItems = nothing
End If
Set objQuota = objWMIService.Get("Win32_DiskQuota.QuotaVolume=" & _
"'Win32_LogicalDisk.DeviceID=""" & strDrive & """'," & _
"User='Win32_Account.Domain=""" & strDomain &""",Name=""" & usr & """'")
If err.number <> 0 Then
statval.value = statval.value & "Error " & usr & " " & err.Description & VbCrLf
err.Clear
Else
objQuota.Limit = qlimit.value
objQuota.Put_
End If
End If
Next
' END CALLOUT A
Set objquota = nothing
Set objWMIService = nothing
statval.value = "Finished - Errors if Any listed below " & now() & VbCrLf & statval.value
End Sub
Sub RunQuery
On Error Resume Next
statval.value = ""
strDrive = Trim(Drive.value)
do_once = True
If trim(computer.value) = "" Then
strComputer = "."
Else
strComputer = trim(computer.value)
End If
Const wbemFlagReturnImmediately = &h10
Const wbemFlagForwardOnly = &h20
Row = 1 : Col = 1
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\CIMV2")
If err.number <> 0 Then
statval.value = statval.value & err.description & " - Error " & err.number & _
"Query Terminated"
Set objWMIService = nothing
Set wmiLocator = nothing
WScript.Quit
End If
' BEGIN CALLOUT B
Set colQuotas = objWMIService.ExecQuery("Select * from Win32_DiskQuota" & _
"Where quotaVolume='Win32_LogicalDisk.DeviceID=""" & strDrive & _
"""'", "WQL", wbemFlagReturnImmediately + wbemFlagForwardOnly)
' END CALLOUT B
For Each objQuota in colQuotas
If do_once Then
Set XL = CreateObject("Excel.Application")
XL.workbooks.add : XL.Visible = True
Row = 1 : Col = 1
XL.Cells(Row, Col).Value = "Status" : Col = Col + 1
XL.Cells(Row, Col).Value = "Volume" : Col = Col + 1
XL.Cells(Row, Col).Value = "User" : Col = Col + 1
XL.Cells(Row, Col).Value = "Limit" : Col = Col + 1
XL.Cells(Row, Col).Value = "WarningLimit" : Col = Col + 1
XL.Cells(Row, Col).Value = "Space Used Bytes" : Col = Col + 1
Row =2 : Col = 1
do_once = False
End If
statusconv = ConvStatus(objQuota.status)
XL.Cells(Row, Col).Value = statusconv : Col = Col + 1
XL.Cells(Row, Col).Value = objQuota.QuotaVolume : Col = Col + 1
XL.Cells(Row, Col).Value = objQuota.User : Col = Col + 1
XL.Cells(Row, Col).Value = objQuota.limit : Col = Col + 1
XL.Cells(Row, Col).Value = objQuota.warninglimit : Col = Col + 1
XL.Cells(Row, Col).Value = objQuota.DiskSpaceUsed : Col = Col + 1
Row = Row + 1 : Col = 1
Next
Set objWMIService = nothing
Set colQuotas = nothing
XL.Cells.EntireColumn.AutoFit
XL.Rows("2:2").Select
XL.ActiveWindow.FreezePanes = True
XL.Range("A2").Select
Set XL = nothing
statval.value = statval.value & " Query Finished " & now()
End Sub
' BEGIN CALLOUT C
Function ConvStatus(fnStatus)
Select Case fnStatus
Case 0
ConvStatus = "OK"
Case 1
ConvStatus = "Warning"
Case 2
ConvStatus = "Exceeded"
End Select
End Function
' END CALLOUT C
</script>