|
|
Option Explicit '//on error resume next
Dim objArgs Dim objVolume, objSet, obj Dim strQuery, strVolume, strHost, strNamespace
set objArgs = wscript.Arguments
if objArgs.count < 2 then wscript.echo "Usage rwprop <host> <volumePath>" wscript.quit(1) end if
strHost = objArgs(0) strVolume = Replace(objArgs(1), "\", "\\") strNamespace = "winmgmts://" & strHost & "/root/cimv2"
'// Get the volume strQuery = "select * from Win32_Volume where Name = '" & strVolume & "'" set objSet = GetObject(strNamespace).ExecQuery(strQuery) for each obj in objSet set objVolume = obj exit for next
wscript.echo "Volume: " & objVolume.Name
wscript.echo "----------------------------------------------" wscript.echo "--DriveLetter tests" wscript.echo "----------------------------------------------" Call DriveLetter(objVolume) wscript.echo "----------------------------------------------" wscript.echo "--Label tests" wscript.echo "----------------------------------------------" Call Label(objVolume) wscript.echo "----------------------------------------------" wscript.echo "--IndexingEnabled tests" wscript.echo "----------------------------------------------" Call IndexingEnabled(objVolume)
sub DriveLetter(ByRef objVolume) 'on error resume next Dim rc Dim strOrigDriveLetter
strOrigDriveLetter = objVolume.DriveLetter wscript.echo "DriveLetter= " & objVolume.DriveLetter if IsNull(objVolume.DriveLetter) then call SetVerifyProperty(objVolume, "DriveLetter", "M:") else call SetVerifyProperty(objVolume, "DriveLetter", Null) end if
call SetVerifyProperty(objVolume, "DriveLetter", "N:") call SetVerifyProperty(objVolume, "DriveLetter", "P:") call SetVerifyProperty(objVolume, "DriveLetter", Null) wscript.echo "EXPECT FAILURE - assigning SuperBogusDriveLetter string" call SetVerifyProperty(objVolume, "DriveLetter", "SuperBogusDriveLetter") wscript.echo "EXPECT FAILURE - assigning -1" call SetVerifyProperty(objVolume, "DriveLetter", -1)
call SetVerifyProperty(objVolume, "DriveLetter", strOrigDriveLetter) end sub
sub Label(ByRef objVolume) on error resume next Dim rc, strOrigLabel
strOrigLabel = objVolume.Label wscript.echo "Label= " & objVolume.Label if IsNull(objVolume.Label) then call SetVerifyProperty(objVolume, "Label", "superbad") else call SetVerifyProperty(objVolume, "Label", Null) end if call SetVerifyProperty(objVolume, "Label", "sexmachine")
call SetVerifyProperty(objVolume, "Label", "getonup")
call SetVerifyProperty(objVolume, "Label", "")
call SetVerifyProperty(objVolume, "Label", Null)
wscript.echo "EXPECT FAILURE - assigning SuperLongBogusLabelString..." call SetVerifyProperty(objVolume, "Label", "SuperLongBogusLabelStringThatShouldBeWayTooLongForSuccess")
wscript.echo "EXPECT FAILURE - assigning -1" call SetVerifyProperty(objVolume, "Label", -1) call SetVerifyProperty(objVolume, "Label", strOrigLabel)
end sub
sub IndexingEnabled(ByRef objVolume) on error resume next Dim rc, fIndex
fIndex = objVolume.IndexingEnabled if fIndex = True then call SetVerifyProperty(objVolume, "IndexingEnabled", False) else call SetVerifyProperty(objVolume, "IndexingEnabled", True) end if call SetVerifyProperty(objVolume, "IndexingEnabled", False)
call SetVerifyProperty(objVolume, "IndexingEnabled", 0)
call SetVerifyProperty(objVolume, "IndexingEnabled", True)
call SetVerifyProperty(objVolume, "IndexingEnabled", 1)
wscript.echo "EXPECT FAILURE - assigning perLongBogusLabelString..." call SetVerifyProperty(objVolume, "IndexingEnabled", "SuperLongBogusLabelStringThatShouldBeWayTooLongForSuccess")
wscript.echo "EXPECT FAILURE - assigning -102331" call SetVerifyProperty(objVolume, "IndexingEnabled", -102331)
call SetVerifyProperty(objVolume, "IndexingEnabled", fIndex) end sub
sub SetVerifyProperty(ByRef objInOut, ByRef strProp, ByRef Value) on error resume next dim objPropSet, objProp, RefreshValue, rc set objPropSet = objInOut.Properties_ set objProp = objPropSet.Item(strProp) wscript.echo "setting " & objInOut.Path_.Class & "." & strProp & "=" & Value objProp.Value = Value objInOut.Put_ rc = ReportIfErr(Err, "FAILED - " & objInOut.Path_.Class & " put operation") set objInOut = RefreshObject(objInOut) rc = ReportIfErr(Err, "FAILED - " & objInOut.Path_.Class & " refresh operation") set objPropSet = objInOut.Properties_ set objProp = objPropSet.Item(strProp) RefreshValue = objProp.Value wscript.echo "refreshed " & objInOut.Path_.Class & "." & strProp & "=" & RefreshValue end sub
Function MapErrorCode(ByRef strClass, ByRef strMethod, ByRef intCode) Dim objClass, objMethod Dim values set objClass = GetObject(strNamespace).Get(strClass, &h20000) set objMethod = objClass.methods_(strMethod) values = objMethod.qualifiers_("values") if ubound(values) < intCode then wscript.echo " FAILED - no error message found for " & intCode & " : " & strClass & "." & strMethod MapErrorCode = "" else MapErrorCode = values(intCode) end if End Function
Function ReportIfErr(ByRef objErr, ByRef strMessage) Dim strError ReportIfErr = objErr.Number if objErr.Number <> 0 then strError = strMessage & " : " & Hex(objErr.Number) & " : " & objErr.Description wscript.echo (strError) objErr.Clear Set objLastError = CreateObject("wbemscripting.swbemlasterror") wscript.wcho("Provider: " & objLastError.ProviderName) wscript.wcho("Operation: " & objLastError.Operation) wscript.wcho("Description: " & objLastError.Description) wscript.wcho("StatusCode: 0x" & Hex(objLastError.StatusCode)) end if End Function
Function RefreshObject(ByRef objIn) on error resume next Dim strRelPath, rc set RefreshObject = GetObject(strNamespace).Get(objIn.Path_) rc = ReportIfErr(Err, "FAILED - " & objIn.Path_.Class & ".Get operation") End Function
|