"Eldingo" <> wrote in message
news:%...
> 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
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,authenticationLev el=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
--