Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

DISC SPACE

6 views
Skip to first unread message

Eldingo

unread,
Jul 8, 2009, 8:01:24 PM7/8/09
to
Hello friends:

Is there a way to get a report on disc space usage on all the servers in the
domain. I need to do report on disc space availability on a monthly basis.
Appreciate your help.

-ciao


kj [SBS MVP]

unread,
Jul 8, 2009, 8:06:15 PM7/8/09
to

What server OS versions?


--
/kj


Richard Mueller [MVP]

unread,
Jul 8, 2009, 9:54:19 PM7/8/09
to

"Eldingo" <eld...@dingo.net> wrote in message
news:%236aumhC...@TK2MSFTNGP03.phx.gbl...

A VBScript program to retrieve disk space information from computers read
from a text file:
=========
Option Explicit

Dim strServerFile, objFSO, objFile
Dim objShell, strTemp, strTempFile, strComputer
Dim objWMIService, colDisks, objDisk

Const ForReading = 1
Const HARD_DISK = 3

' Specify file of server NetBIOS names.
strServerFile = "c:\rlm\Scripts\Servers.txt"

' Specify temporary file to save ping results.
Set objShell = CreateObject("Wscript.Shell")
strTemp = objShell.ExpandEnvironmentStrings("%TEMP%")
strTempFile = strTemp & "\RunResult.tmp"

' Open the file for reading.
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objFile = objFSO.OpenTextFile(strServerFile, ForReading)

' Read server names from the file.
Do Until objFile.AtEndOfStream
strComputer = Trim(objFile.ReadLine)
' Skip blank lines.
If (strComputer <> "") Then
' Ping computer to see if online.
If (IsConnectible(strComputer, 1, 750) = True) Then
' Connect to server with WMI.
On Error Resume Next
Set objWMIService = GetObject("winmgmts:" _
&
"{impersonationLevel=impersonate,authenticationLevel=Pkt}!\\" _
& strComputer & "\root\cimv2")
If (Err.Number <> 0) Then
On Error GoTo 0
Wscript.Echo strComputer & ": WMI not installed"
Else
On Error GoTo 0
Wscript.Echo strComputer
' Enumerate hard disks.
Set colDisks = objWMIService.ExecQuery _
("SELECT * FROM Win32_LogicalDisk " _
& "WHERE DriveType = " & HARD_DISK & "")
For Each objDisk In colDisks
Wscript.Echo "-- Device ID: " & objDisk.DeviceID
Wscript.Echo "-- File System: " & objDisk.FileSystem
Wscript.Echo "-- Disk Size: " &
FormatNumber(objDisk.Size, 0)
Wscript.Echo "-- Free Disk Space: " &
FormatNumber(objDisk.FreeSpace, 0)
Next
End If
Else
Wscript.Echo strServer & " not available"
End If
End If
Loop

' Clean up.
objFile.Close
If (objFSO.FileExists(strTempfile) = True) Then
objFSO.DeleteFile(strTempFile)
End If

Function IsConnectible(ByVal strHost, ByVal intPings, ByVal intTO)
' Returns True if strHost can be pinged.
' Based on a program by Alex Angelopoulos and Torgeir Bakken.
Dim objFile, strResults

If (intPings = "") Then
intPings = 2
End If
If (intTO = "") Then
intTO = 750
End If

Const OpenAsDefault = -2
Const FailIfNotExist = 0
Const ForReading = 1

objShell.Run "%comspec% /c ping -n " & intPings & " -w " & intTO _
& " " & strHost & ">" & strTempFile, 0, True

Set objFile = objFSO.OpenTextFile(strTempFile, ForReading, _
FailIfNotExist, OpenAsDefault)
strResults = objFile.ReadAll
objFile.Close

Select Case InStr(strResults, "TTL=")
Case 0
IsConnectible = False
Case Else
IsConnectible = True
End Select
End Function
=====
This should be run from a command prompt using cscript. The output can be
redirected to a text file. The text file should have the NetBIOS names of
the computers, one per line. Change the name and path of this file to suit
your situation.

--
Richard Mueller
MVP Directory Services
Hilltop Lab - http://www.rlmueller.net
--


Eldingo

unread,
Jul 8, 2009, 10:15:55 PM7/8/09
to

Hi kj, it is window server 2003.

"kj [SBS MVP]" <Kevin...@SPAMFREE.gmail.com> wrote in message
news:%23%23fNWkCA...@TK2MSFTNGP03.phx.gbl...

Eldingo

unread,
Jul 8, 2009, 10:21:03 PM7/8/09
to

Richard, thanks much for the script. I'll start using it right away.


"Richard Mueller [MVP]" <rlmuelle...@ameritech.nospam.net> wrote in
message news:u6KP5gDA...@TK2MSFTNGP04.phx.gbl...

SimeonD

unread,
Jul 9, 2009, 7:54:16 AM7/9/09
to

I had a similar requirement last month. I had started to script it, but
found that Spiceworks did what I was looking for.
Its free. Will check the disks as often as you require. Then allows you to
write a report on it. There are some built in reports do, will probably do
what you need.
Comes with some fancy charts that you can use, but I prefer just seeing the
values.

SimeonD

"Eldingo" <eld...@dingo.net> wrote in message
news:%236aumhC...@TK2MSFTNGP03.phx.gbl...

Paul Bergson [MVP-DS]

unread,
Jul 9, 2009, 8:18:34 AM7/9/09
to

We script ours as well, we output to a csv file and it is kept for
historical purposes so we can go back and look at growth and project out on
future disk consumption as well as look at pig users who consume and never
clean up disk space.

--
Paul Bergson
MVP - Directory Services
MCTS, MCT, MCSE, MCSA, Security+, BS CSci
2008, 2003, 2000 (Early Achiever), NT4
Microsoft's Thrive IT Pro of the Month - June 2009

http://www.pbbergs.com

Please no e-mails, any questions should be posted in the NewsGroup This
posting is provided "AS IS" with no warranties, and confers no rights.

"Eldingo" <eld...@dingo.net> wrote in message

news:eU0bovDA...@TK2MSFTNGP04.phx.gbl...

jeff archacki

unread,
Jul 9, 2009, 3:59:53 PM7/9/09
to
Hello Eldingo,

As long as they all have SNMP enabled you can use any program that can trap
SNMP info. There's a whole page of them here: http://www.practicallynetworked.com/support/snmp_apps.htm
I just use Cacti on a Linux box.


Mark D. MacLachlan

unread,
Jul 10, 2009, 12:12:28 PM7/10/09
to

I would just use VBScript and WMI to gather the information.

[code]
'=======================================================================
===
'
' NAME: ReportServerDiskUtilization.vbs
'
' AUTHOR: Mark D. MacLachlan , The Spider's Parlor
' URL: http://www.thespidersparlor.com
' DATE : 7/9/2009
' COPYRIGHT C 2009, All Rights Reserved
'
' COMMENT:
' THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF
' ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED To
' THE IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A
' PARTICULAR PURPOSE.
'
' IN NO EVENT SHALL THE SPIDER'S PARLOR AND/OR ITS RESPECTIVE
SUPPLIERS
' BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY
' DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
' WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS
' ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE
' OF THIS CODE OR INFORMATION.
'
'=======================================================================
===


Set objFSO = CreateObject("Scripting.FileSystemObject")

Set WshShell = CreateObject("WScript.Shell")
'Create our log
Set ts = objFSO.CreateTextFile("DiskUtilization.txt",True)

'Enum Servers In Domain
Set oRootDSE = GetObject("LDAP://rootDSE")
strDom = oRootDSE.Get("DefaultNamingContext")

' available categories = computer, user, printqueue, group
qQuery = "<LDAP://" & strDom & ">;" & _
"(objectCategory=computer)" & _
";name,operatingSystem;subtree"

Set objConnection = CreateObject("ADODB.Connection")
Set objCommand = CreateObject("ADODB.Command")
objConnection.Open "Provider=ADsDSOObject;"
objCommand.ActiveConnection = objConnection
objCommand.CommandText = qQuery
Set objRecordSet = objCommand.Execute

Do until objRecordSet.EOF
If InStr(objRecordSet.Fields("operatingSystem"),"Server") > 1 Then
'Verify server is online first
strComputer = objRecordSet.Fields("name")
PingCheck = PingStatus(strComputer)
If PingCheck = "Success" Then
Report = GetServerDiskInfo(objRecordSet.Fields("name"))
Else
Report = strComputer & " is offline" & vbCrLf &
"******************************************" & vbCrLf

End If
PingCheck = ""
strComputer = ""
ts.Write Report
End If
objrecordset.MoveNext
loop
objConnection.Close
'Close the report file
ts.Close

WshShell.Run("notepad.exe DiskUtilization.txt")

WScript.Quit


Function PingStatus(strComputer)


On Error Resume Next
Set objWMIService = GetObject("winmgmts:" _

& "{impersonationLevel=impersonate}!\\" & strComputer &
"\root\cimv2")
Set colPings = objWMIService.ExecQuery _
("SELECT * FROM Win32_PingStatus WHERE Address = '" & strComputer
& "'")
For Each objPing in colPings
Select Case objPing.StatusCode
Case 0 PingStatus = "Success"
Case Else PingStatus = "Offline"
End Select
Next
End Function


Function GetServerDiskInfo(strComputer)
'Now Get Disk Information For the Servers
'Bind to WMI on the target server
On Error Resume Next
Set objWMIService = GetObject("winmgmts:\\" & strComputer &
"\root\cimv2")
If Err.Number = 0 Then
report = report & strComputer & " Disk Drive Information" & vbCrLf &
"******************************************" & vbCrLf & vbCrLf
Set colItems = objWMIService.ExecQuery("Select * from
Win32_LogicalDisk where DriveType = '3'",,48)
For Each objItem in colItems
report = report & "Drive: " & objItem.Caption & vbCrLf
report = report & "VolumeSerialNumber: " &
objItem.VolumeSerialNumber& vbCrLf
report = report & "Description: " & objItem.Description& vbCrLf
report = report & "Size: " & objItem.Size /1024\1024+1 & "MB
Total Disk Space" & vbCrLf
report = report & "Free Space: " & objItem.FreeSpace /1024\1024+1
& "MB Free Disk Space" & vbCrLf & vbCrLf
Next
Else
report = strComputer & " is unreachable via WMI" & vbCrLf &
"******************************************" & vbCrLf
End If
On Error Goto 0
GetServerDiskInfo = report
End Function

[/code]
--

Eldingo

unread,
Jul 12, 2009, 12:31:44 PM7/12/09
to
Hi Paul:
What script did you use? is it similar to one that Richard wrote? Thanks

"Paul Bergson [MVP-DS]" <pbbergs@no_spammsn.com> wrote in message
news:%23sUmi9I...@TK2MSFTNGP05.phx.gbl...

Eldingo

unread,
Jul 12, 2009, 12:32:23 PM7/12/09
to
Thanks SimeonD, I will check out spiceworks.
"SimeonD" <sim...@nospam.nospam> wrote in message
news:OHNCvvIA...@TK2MSFTNGP05.phx.gbl...

Paul Bergson [MVP-DS]

unread,
Jul 14, 2009, 8:14:35 AM7/14/09
to
No it is written in Perl.

--
Paul Bergson
MVP - Directory Services
MCTS, MCT, MCSE, MCSA, Security+, BS CSci
2008, 2003, 2000 (Early Achiever), NT4
Microsoft's Thrive IT Pro of the Month - June 2009

http://www.pbbergs.com

Please no e-mails, any questions should be posted in the NewsGroup This
posting is provided "AS IS" with no warranties, and confers no rights.

"Eldingo" <eld...@dingo.net> wrote in message

news:u2Jh94wA...@TK2MSFTNGP02.phx.gbl...

0 new messages