'tempAccount = "Win32_Account.Domain=""NTDEV"",Name=""harshita""" dim strNamespace dim tempAccount dim objAdmin dim strUsage strUsage = "usage: Quotas.vbs " 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