' ********************************************************************* ' ' Name : Verify Remote Available Memory.vbs ' Author : 3Ds (UK) Limited ' Description : Example VBScript to check the current available ' memory on a remote machine & compare it against a ' permitted value ' ' Arguments : 1 - Server Name. ' 2 - Min permitted Mb (numeric). ' ' WIZARD:PARAMS=1 = Server Name or . for Local Machine|2 = Min. permitted memory (in Mb) ' WIZARD:PARAMEXAMPLE=MyServer 10 ' ' Returns : 0 - OK, memory OK. ' 1 - Parameter error. ' 2 - WMI error. ' 3 - Insufficient memory available. ' ' WIZARD:RESULTS=Return code ...||0 = OK|1 = Parameter Error|2 = WMI error or script not supported on O/S|3 = Insufficient memory available on the server.||Script output also indicates "OK" for success, or "Error" with details of the faults found. ' ' Notes : Requires Windows Scripting Host (for VBScript) & ' WMI installed. ' ' WIZARD:REMOTE ' ' ********************************************************************* ' Enable in-line error handling On Error Resume Next ' ------ Local declarations ------ Dim objArguments ' Command line arguments Dim objWMIService ' WMI object Dim objRefresh ' Refresh object Dim objData ' Data object Dim strServer ' The server on which the shared drive is held Dim strData ' The data name Dim colData ' Data collection Dim blnFoundItem ' True if we found an entry Dim intResult ' Result Dim intMinMemory ' Min memory to check for ' ------ Main Logic ------ ' Default the answer intResult = 0 ' Retrieve Parameters, server name Set objArguments = WScript.Arguments strServer = objArguments.Item(0) If Len (strServer) = 0 Then WScript.Echo "Error. Cannot verify Available Memory. No server name specified" WScript.Quit (1) End If ' Size intMinMemory = CInt(objArguments.Item(1)) If Err.number <> 0 Then Err.Clear() WScript.Echo "Error. Cannot verify Available Memory. Min. memory not numeric or 0" WScript.Quit (1) End If ' Connect to WMI Set objWMIService = GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & strServer & "\root\cimv2") If Err.Number <> 0 Then WScript.Echo "Error. Cannot connect to WMI." WScript.Echo Err.Description WScript.Quit (2) End If Set objRefresh = CreateObject("WbemScripting.Swbemrefresher") Set objData = objRefresh.AddEnum (objWMIService, "Win32_PerfFormattedData_PerfOS_Memory").objectSet ' Repeat to ensure baseline figure retrieved first objRefresh.Refresh Wscript.Sleep 1000 objRefresh.Refresh ' Check the value returned (in Mb) For Each colData in objData If CLng (Round (colData.AvailableMBytes, 2) < intMinMemory) Then intResult = 3 Wscript.Echo "Error. Insufficient memory available. Current value is " & colData.AvailableMBytes & " Mb" End If Next If intResult = 0 Then Wscript.Echo "OK. Available Memory is within permitted limits ... " End If ' ------ Cleanup & Return ------ Set colData = Nothing Set objData = Nothing Set objRefresh = Nothing Set objWMIService = Nothing WScript.Quit (intResult) ' ------ End of Script ------