Discussion:
DISC SPACE
(too old to reply)
Eldingo
2009-07-09 00:01:24 UTC
Permalink
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]
2009-07-09 00:06:15 UTC
Permalink
Post by Eldingo
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
What server OS versions?
--
/kj
Eldingo
2009-07-09 02:15:55 UTC
Permalink
Hi kj, it is window server 2003.
Post by kj [SBS MVP]
Post by Eldingo
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
What server OS versions?
--
/kj
jeff archacki
2009-07-09 19:59:53 UTC
Permalink
Hello Eldingo,
Post by Eldingo
Hi kj, it is window server 2003.
Post by kj [SBS MVP]
Post by Eldingo
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
What server OS versions?
-- /kj
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
Richard Mueller [MVP]
2009-07-09 01:54:19 UTC
Permalink
Post by Eldingo
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
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
2009-07-09 02:21:03 UTC
Permalink
Richard, thanks much for the script. I'll start using it right away.
Post by Richard Mueller [MVP]
Post by Eldingo
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
A VBScript program to retrieve disk space information from computers read
=========
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
--
Paul Bergson [MVP-DS]
2009-07-09 12:18:34 UTC
Permalink
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.
Post by Eldingo
Richard, thanks much for the script. I'll start using it right away.
Post by Richard Mueller [MVP]
Post by Eldingo
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
A VBScript program to retrieve disk space information from computers read
=========
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
2009-07-12 16:31:44 UTC
Permalink
Hi Paul:
What script did you use? is it similar to one that Richard wrote? Thanks
Post by Paul Bergson [MVP-DS]
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.
Post by Eldingo
Richard, thanks much for the script. I'll start using it right away.
Post by Richard Mueller [MVP]
Post by Eldingo
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
A VBScript program to retrieve disk space information from computers
=========
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
--
Paul Bergson [MVP-DS]
2009-07-14 12:14:35 UTC
Permalink
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.
Post by Eldingo
What script did you use? is it similar to one that Richard wrote? Thanks
Post by Paul Bergson [MVP-DS]
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.
Post by Eldingo
Richard, thanks much for the script. I'll start using it right away.
Post by Richard Mueller [MVP]
Post by Eldingo
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
A VBScript program to retrieve disk space information from computers
=========
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
--
SimeonD
2009-07-09 11:54:16 UTC
Permalink
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
Post by Eldingo
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
Eldingo
2009-07-12 16:32:23 UTC
Permalink
Thanks SimeonD, I will check out spiceworks.
Post by SimeonD
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
Post by Eldingo
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
Mark D. MacLachlan
2009-07-10 16:12:28 UTC
Permalink
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]
--
Loading...