1. This site uses cookies. By continuing to use this site, you are agreeing to our use of cookies. Learn More.

VBScript for checking diskspace; checking threshold & DataBase shrinking.

Discussion in 'Web Design, HTML And CSS' started by marconi, May 7, 2008.

  1. marconi

    marconi New Member

    Joined:
    May 7, 2008
    Messages:
    4
    Likes Received:
    0
    Trophy Points:
    0
    I have 3 jobservers and a database server.

    1) I need to first check the disk space.
    2) then check if the free space on each drive is greater than 15% of the
    total disk space(which is the threshold value) and notify the user.
    3) then shrink the databases.

    I have written the following VBSCript, but it is not serving the purpose.
    Request you to please provide me with the correct inputs/script.

    -------------------------------------------------------------------------------------
    Code:
     Set iFSO = CreateObject("Scripting.FilesyStemObject") 
     Set oFSO = CreateObject("Scripting.FilesyStemObject") 
     InputFile="Diskspace.txt" 
     Outputfile="Diskspacelist.csv"  
     Set ofile = ofso.createTextFile(OutputFile) 
     Set ifile = ifSO.OpenTextFile(inputfile) 
     Const GBCONVERSION= 1048576000 
     ofile.writeline "Server,Drive,Disk Size,FreeSpace" 
     Do until ifile.AtEndOfLine 
                     Server = ifile.ReadLine                 
                     Set objWMIService = GetObject("winmgmts://" & Server) 
                     Set colLogicalDisk = objWMIService.InstancesOf("Win32_LogicalDisk") 
                     For Each objLogicalDisk In colLogicalDisk 
                                     if objLogicalDisk.drivetype=3 then 
                                                     ofile.writeline Server & "," & objLogicalDisk.DeviceID &_ 
                                            "," & FormatNumber(objLogicalDisk.size/GBCONVERSION,2) & "GB, " &_ 
                                            FormatNumber(objLogicalDisk.freespace/GBCONVERSION,2) & "GB, " 
                                     end if 
            Next               
     Loop 
     
     iThreshold=(15/100)*(size)
     iSize=freespace
     If Int(iSize) < Int(iThreshold) Then
     'free space is less than the threshold so generate an alert
     wscript.Echo "Alert!"
     strDescription=objLogicalDisk.freespace & " is less than the specified threshold of " &_
     FormatNumber(iThreshold,2,,True) & " GB. Free space is " &_
     FormatNumber(iSize,2,,True) & " GB"
     wscript.echo strDescription
     Else
     'folder size is OK
     WScript.Echo "The size of " &freespace & " (" & iSize &_
      ") is at least the threshold of " & iThreshold
     End If
    -------------------------------------------------------------------------------------------

    Thanks a lot in advance.

    Marconi.
     
    Last edited by a moderator: May 7, 2008
  2. pradeep

    pradeep Team Leader

    Joined:
    Apr 4, 2005
    Messages:
    1,646
    Likes Received:
    86
    Trophy Points:
    0
    Occupation:
    Programmer
    Location:
    Kolkata, India
    Home Page:
    What exactly is the problem you are facing with this script?
     
  3. marconi

    marconi New Member

    Joined:
    May 7, 2008
    Messages:
    4
    Likes Received:
    0
    Trophy Points:
    0
    Hi,

    My implementation of the Logic for checking the threshold is incorrect. I am getting Syntax Errors. Could you please provide your inputs.

    Also could you please provide your inputs for shrinking the database wherein I am creating a .cmd file with the following code :-
    --------------------------------------------------------------------------------------------------------
    sqlcmd -s -Q –o switch "EXEC sp_MSForEachDB @Command1 = N'DBCC
    SHRINKDATABASE (jobserver1, 10)', @replacechar = 'jobserver1'" -c go



    sqlcmd -s -Q –o switch "EXEC sp_MSForEachDB @Command1 = N'DBCC
    SHRINKDATABASE (jobserver2, 10)', @replacechar = 'jobserver2'" -c go



    sqlcmd -s -Q –o switch "EXEC sp_MSForEachDB @Command1 = N'DBCC
    SHRINKDATABASE (jobserver3, 10)', @replacechar = 'jobserver2'" -c go



    sqlcmd -s -Q –o switch "EXEC sp_MSForEachDB @Command1 = N'DBCC
    SHRINKDATABASE (databaseserver, 10)', @replacechar = 'databaseserver'" -c go

    --------------------------------------------------------------------------------------------------------

    When this CMD File is run, the databases on each server need to be shrunk and the new output details will be redirected to a log/txt file.

    Thanks and Regards,
    Marconi.
     

Share This Page