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
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
|
|
|