Monitorar e analisar a Memória Virtual do Windows

Há algumas maneiras de monitorar a utilização da Memória Virtual do Windows, como através do Perfmon ou até do msinfo32. No entanto, o script abaixo nos mostra em forma de porcentagem a utilização e a quantidade disponível. O fato também de ser via script, permite inúmeras customizações e até a criação de alertas no Event Viewer, por meio do comando EVENTCREATE.
Abaixo o script e sua utilização!
O script é:

‘ Usage: cscript.exe Virtual_MemCheck.vbs [REMOTESRV] [THRESHOLD] ‘ [REMOTESRV] NetBIOS, FQDN or IP address to Remote server
‘ [THRESHOLD] Minimum percent Free Virtual Memory
Option Explicit
Const THRESHOLD_EXCEEDED = 1, PASS = 0, INVALID_PARAMS = -1, OBJECT_NOT_INITIALIZED = -2
Dim lstArgs, REMOTESRV, THRESHOLD, objWMIService, resultSetSWbemObject, element
Set lstArgs = WScript.Arguments
If lstArgs.Count = 2 Then
REMOTESRV = Trim( lstArgs( 0 ))
THRESHOLD = Trim( lstArgs( 1 ))
Else
WScript.Echo ” Usage: cscript.exe Virtual_MemCheck.vbs [REMOTESRV] [THRESHOLD]“
WScript.Echo vbTAB & “[REMOTESRV] NetBIOS, FQDN or IP address to Remote server”
WScript.Echo vbTAB & “[THRESHOLD] Percent Free Virtual Memory”
WScript.Quit( INVALID_PARAMS )
End If
Set objWMIService = GetObject(“winmgmts:\\” & REMOTESRV & “\root\CIMV2″)
If( IsEmpty( objWMIService ) = True ) Then
WScript.Echo( “OBJECT_NOT_INITIALIZED :: WMI ResultSet ” )
WScript.Quit( OBJECT_NOT_INITIALIZED )
End If
Set resultSetSWbemObject= objWMIService.ExecQuery(“SELECT * FROM Win32_OperatingSystem”)
For Each element In resultSetSWbemObject
WScript.Echo( “Free Virtual Memory Size in KBytes: ” & element.FreeVirtualMemory )
WScript.Echo( “Total Virtual Memory Size in KBytes: ” & element.TotalVirtualMemorySize )
WScript.Echo( “Virtual Memory Free %: ” & 100*element.FreeVirtualMemory/element.TotalVirtualMemorySize )
WScript.Echo( “Threshold %: ” & THRESHOLD )
If( CDbl( 100*element.FreeVirtualMemory/element.TotalVirtualMemorySize ) >= CDbl( THRESHOLD )) Then
WScript.Echo( “Threshold not exceeded” )
WScript.Quit( PASS )
Else
WScript.Echo( “THRESHOLD EXCEEDED” )
WScript.Quit( THRESHOLD_EXCEEDED )
End If
Next

Para executar este script VBS, basta utilizar o cscript e o parâmetro [server] e [threshold].
Veja:

D:\>cscript mem.vbs localhost 10
Microsoft (R) Windows Script Host Version 5.8
Copyright (C) Microsoft Corporation. All rights reserved.
Free Virtual Memory Size in KBytes: 2041476
Total Virtual Memory Size in KBytes: 4676704
Virtual Memory Free %: 43.6520250159086
Threshold %: 10
Threshold not exceeded

A sintaxe é simples, localhost é o server que quero consultar, no caso, o localhost e o 10 é a quantidade (em %) de utilização do pagefile.sys disponível – o retorno do threshold é apenas para saber se o valor informado foi ou não excedido. Se eu consultasse 50, daria como exceded.
Veja:

D:\>cscript mem.vbs localhost 50
Microsoft (R) Windows Script Host Version 5.8
Copyright (C) Microsoft Corporation. All rights reserved.
Free Virtual Memory Size in KBytes: 2048212
Total Virtual Memory Size in KBytes: 4676704
Virtual Memory Free %: 43.79605807851
Threshold %: 50
THRESHOLD EXCEEDED

[ ] ´s e até a próxima!!

Share

    Deixe um comentário

    O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

    © 2019 All Rights Reserved. Cooperati.