Leaked source code of windows server 2003
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

288 lines
8.7 KiB

'tempAccount = "Win32_Account.Domain=""NTDEV"",Name=""harshita"""
dim strNamespace
dim tempAccount
dim objAdmin
dim strUsage
strUsage = "usage: Quotas.vbs <host|.> <drivePath>"
if (wscript.Arguments.Count <> 2) then
wscript.echo ("wrong number of arguments")
wscript.echo (strUsage)
wscript.quit
end if
strNamespace = "winmgmts://" & wscript.Arguments(0) & "/root/cimv2"
strVolume = wscript.Arguments(1)
strVolume = Replace (strVolume, "\", "\\")
set objNSVolumeUserQuota = GetObject(strNamespace & ":Win32_VolumeUserQuota").SpawnInstance_
sysAccountName = "NETWORK SERVICE"
logFileName = "log_Quotas.txt"
Set fso = CreateObject("Scripting.FileSystemObject")
result = fso.FileExists(logFileName)
if (result = true) then
fso.DeleteFile(logFileName)
end if
set f = fso.CreateTextFile(logFileName)
strQuery = "select * from Win32_Volume where Name = '" & strVolume & "'"
set VolumeSet = GetObject(strNamespace).ExecQuery(strQuery)
rc = ReportIfErr(Err, " FAILED - volume query operation failed")
for each obj in VolumeSet
set Volume = obj
exit for
next
if IsNull(Volume.DriveLetter) then
wscript.echo ("specified volume must have a drive letter assigned")
wscript.echo (strUsage)
wscript.quit
end if
strQuery1 = "select * from Win32_LogicalDisk where Name = '" & volume.driveletter & "'"
set DiskSet = GetObject(strNamespace).ExecQuery(strQuery1)
rc = ReportIfErr(Err, " FAILED - logicaldisk query operation failed")
for each diskobj in DiskSet
set disk = diskobj
exit for
next
call VUQTests ()
call ClassComparisons()
call DisplaySummary()
'********************************************************************************
function VUQTests ()
on error resume next
Set objSystemAccount = GetObject(strNamespace).ExecQuery _
("Select * from Win32_SystemAccount where name ='NETWORK SERVICE'")
rc = ReportIfErr(Err, " FAILED - SystemAccount query operation failed")
for each objSysAccount in objSystemAccount
strAccountRef = objSysAccount.Path_.RelPath
exit for
next
strVolumeRef = volume.Path_.RelPath
objNSVolumeUserQuota.Volume = strVolumeRef
objNSVolumeUserQuota.Account = strAccountRef
objNSVolumeUserQuota.Limit = 10000
objNSVolumeUserQuota.WarningLimit = 500
objNSVolumeUserQuota.DiskSpaceUsed = 0
objNSVolumeUserQuota.Status = 0
wscript.echo ("attempting creation of VolumeUserQuota")
objNSVolumeUserQuota.Put_
rc = ReportIfErr(Err, " FAILED - VolumeUserQuota Put operation failed")
wscript.echo ("checking creation of new VolumeUserQuota")
tempAccount = strAccountRef 'used in tests later
set myAssoc = volume.Associators_("Win32_VolumeUserQuota")
rc = ReportIfErr(Err, "FAILED - volume associators query operation failed")
found = FALSE
for each account in myAssoc
if (account.name = sysAccountName) then
found = TRUE
call WriteLog (" success - new VolumeUserQuota created")
end if
next
if (found = FALSE) then
call WriteLog (" FAILURE - new VolumeUserQuota creation")
call WriteLog (" SKIPPING - updation and deletion of VolumeUserQuota")
end if
objNSVolumeUserQuota.Refresh_
rc = ReportIfErr(Err, " FAILED - VolumeUserQuota Refresh operation failed")
wscript.echo ("")
wscript.echo ("Attempting updation of VolumeUserQuota")
wscript.echo (" objNSVolumeUserQuota.WarningLimit = "&objNSVolumeUserQuota.WarningLimit)
wscript.echo (" objNSVolumeUserQuota.Limit = "&objNSVolumeUserQuota.Limit)
wscript.echo (" setting WarningLimit = Limit")
objNSVolumeUserQuota.WarningLimit = objNSVolumeUserQuota.Limit
objNSVolumeUserQuota.Put_
rc = ReportIfErr(Err, " FAILED - VolumeUserQuota Put operation failed")
wscript.echo (" doing a refresh")
objNSVolumeUserQuota.Refresh_
rc = ReportIfErr(Err, " FAILED - VolumeUserQuota Refresh operation failed")
wscript.echo (" validating updation")
if (objNSVolumeUserQuota.WarningLimit = objNSVolumeUserQuota.Limit) then
call WriteLog (" success - updation of VolumeUserQuota")
else
call WriteLog (" FAILURE - updation of VolumeUserQuota")
end if
wscript.echo ("")
wscript.echo ("deleting above VolumeUserQuota")
objNSVolumeUserQuota.Delete_
rc = ReportIfErr(Err, " FAILED - VolumeUserQuota Delete operation failed")
set myAssoc = volume.Associators_("Win32_VolumeUserQuota")
found = FALSE
for each account in myAssoc
if (account.name = sysAccountName) then
found = TRUE
call WriteLog (" FAILED - new VolumeUserQuota deletion")
end if
next
if (found = FALSE) then
call WriteLog (" success - new VolumeUserQuota deletion")
end if
end function
'********************************************************************************
function DisplaySummary()
f.Close
Set f = fso.OpenTextFile(logFileName)
wscript.echo ("")
wscript.echo ("***************************************")
wscript.echo (" Test Summary ")
wscript.echo ("***************************************")
wscript.echo ("")
Do While f.AtEndOfStream <> True
wscript.echo(f.ReadLine)
Loop
wscript.echo ("")
wscript.echo ("***************************************")
wscript.echo (" End of Test Summary ")
wscript.echo ("***************************************")
wscript.echo ("")
f.Close
end function
'********************************************************************************
Function MapErrorCode(ByRef strClass, ByRef strMethod, ByRef intCode, ByRef strMessage)
set objClass = GetObject(strNamespace).Get(strClass, &h20000)
set objMethod = objClass.methods_(strMethod)
values = objMethod.qualifiers_("values")
if ubound(values) < intCode then
call WriteLog(" FAILURE - no error message found for " & intCode & " : " & strClass & "." & strMethod)
strMessage = ""
else
strMessage = values(intCode)
end if
End Function
'********************************************************************************
function classComparisons()
wscript.echo ("")
wscript.echo ("VolumeQuota Association Classes:")
set volumeReferences = volume.References_("Win32_VolumeQuota")
set diskReferences = disk.References_("Win32_VolumeQuotaSetting")
for each myThing in volumeReferences
Wscript.Echo " Element: "&myThing.Element
Wscript.Echo " Setting: "&myThing.Setting
next
wscript.echo ("")
wscript.echo ("VolumeQuotaSetting Association Classes:")
for each myThing in diskReferences
Wscript.Echo " Element: "&myThing.Element
Wscript.Echo " Setting: "&myThing.Setting
next
wscript.echo ("")
wscript.echo ("VolumeUserQuota Association Classes:")
set myReferences = volume.References_("Win32_VolumeUserQuota")
set diskReferences = disk.References_("Win32_DiskQuota")
For each myThing in myReferences
wscript.echo ""
Wscript.Echo " Volume: "& vbTab & myThing.Volume
Wscript.Echo " Account: "&myThing.Account
Wscript.Echo " Status: "&myThing.Status
Wscript.Echo " Limit: "&myThing.Limit
Wscript.Echo " Warning Limit: "&myThing.WarningLimit
Wscript.Echo " DiskSpaceUsed: "&myThing.DiskSpaceUsed
Next
wscript.echo ("")
wscript.echo ("DiskQuota Association Classes:")
For each myThing in diskReferences
wscript.echo ""
Wscript.Echo " QuotaVolume: "& vbTab & myThing.QuotaVolume
wscript.echo " User: "& myThing.User
Wscript.Echo " Status: "&myThing.Status
Wscript.Echo " Limit: "&myThing.Limit
Wscript.Echo " Warning Limit: "&myThing.WarningLimit
Wscript.Echo " DiskSpaceUsed: "&myThing.DiskSpaceUsed
Next
wscript.echo ("")
call WriteLog (" success - all associator classes retrieved")
end function
'********************************************************************************
function DisplayVUQ (byref obj)
wscript.echo ""
Wscript.Echo " Volume: "& vbTab & obj.Volume
Wscript.Echo " Account: "&obj.Account
Wscript.Echo " Status: "&obj.Status
Wscript.Echo " Limit: "&obj.Limit
Wscript.Echo " Warning Limit: "&obj.WarningLimit
Wscript.Echo " DiskSpaceUsed: "&obj.DiskSpaceUsed
end function
'********************************************************************************
Function ReportIfErr(ByRef objErr, ByRef strMessage)
ReportIfErr = objErr.Number
if objErr.Number <> 0 then
strError = strMessage & " : " & Hex(objErr.Number) & " : " & objErr.Description
call WriteLog (strError)
objErr.Clear
end if
End Function
Sub WriteLog(ByRef strMessage)
wscript.echo strMessage
f.writeline strMessage
End Sub