I am writing a script to grab information, such as hard drive space or
memory availability, from remote servers then output that to a webpage
for viewing. So far I can only get it to work grabbing info from the
localhost, it keeps saying unable to connect to WMI for the remotes.

When I change the value of strComputer to something other than the
localhost, it fails.

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

Const HARD_DISK = 3

strComputer = "."
Set objWMIService = GetObject("winmgmts:" &
"{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")

Set colDisks = objWMIService.ExecQuery("Select * from Win32_LogicalDisk
Where DriveType = " & HARD_DISK & "")
Set colOSes = objWMIService.ExecQuery("Select * from
Win32_OperatingSystem")
Set colComputer = objWMIService.ExecQuery("Select * from
Win32_ComputerSystem")
Set objFS = CreateObject("Scripting.FileSystemObject")
Set objNewFile = objFS.CreateTextFile("stat.htm")

objNewFile.WriteLine "<html>"
objNewFile.WriteLine "<head>"
objNewFile.WriteLine "<title>Process Report</title>"
objNewFile.WriteLine "<meta http-equiv='Content-Type'
content='text/html; charset=iso-8859-1'>"
objNewFile.WriteLine "<link rel='stylesheet' href='stat.css'>"
objNewFile.WriteLine "</head>"
objNewFile.WriteLine "<body>"
objNewFile.WriteLine "<div class='header'>"
objNewFile.WriteLine "<img src='images/banner.gif'>"
objNewFile.WriteLine "<h2>Process Report -- Date: " & Now() & "</h2>" &
vbCrLf
objNewFile.WriteLine "</div>"
objNewFile.WriteLine "<b>"

For Each objOS in colOSes
objNewFile.WriteLine "<div class='info'>"
objNewFile.WriteLine "Computer Name: " & objOS.CSName & "<br>"
objNewFile.WriteLine "Caption: " & objOS.Caption & "<br>"
objNewFile.WriteLine "Version: " & objOS.Version & "<br>"
objNewFile.WriteLine "Build Number: " & objOS.BuildNumber & "<br>"
objNewFile.WriteLine "Build Type: " & objOS.BuildType & "<br>"
objNewFile.WriteLine "Service Pack: " & objOS.ServicePackMajorVersion &
"." & objOS.ServicePackMinorVersion
objNewFile.WriteLine "</div>"
Next

For Each objDisk in colDisks
objNewFile.WriteLine "<div class='hdd'>"
strUsedDisk =
FormatNumber((((objDisk.Size/1024/1024/1024)-(objDisk.FreeSpace/1024/1024/1024))/(objDisk.Size/1024/1024/1024))*100,
2)
if (strUsedDisk > 80) Then
strUD = "<font color='red'>" & strUsedDisk & "</font>%<br>"
elseif (strUsedDisk > 40) Then
strUD = "<font color='yellow'>" & strUsedDisk & "</font>%<br>"
else strUD = "<font color='green'>" & strUsedDisk & "</font>%<br>"
end if
strFreeDisk =
FormatNumber(((objDisk.FreeSpace/1024/1024/1024)/(objDisk.Size/1024/1024/1024)*100),
2)
if (strFreeDisk < 20 ) Then
strFD = "<font color='red'>" & strFreeDisk & "</font>%<p>"
elseif (strFreeDisk < 60 ) Then
strFD = "<font color='yellow'>" & strFreeDisk & "</font>%<p>"
else strFD = "<font color='green'>" & strFreeDisk & "</font>%<p>"
end if
objNewFile.WriteLine "Drive Letter: " & vbTab & objDisk.DeviceID &
"<br>"
objNewFile.WriteLine "Used Disk Space: " & vbTab &
FormatNumber((objDisk.Size/1024/1024/1024)-(objDisk.FreeSpace/1024/1024/1024),
2) & " GB / " & FormatNumber(objDisk.Size/1024/1024/1024, 2) & "
GB<br>"
objNewFile.WriteLine "Used Disk Space: " & vbTab & strUD
objNewFile.WriteLine "Free Disk Space: " & vbTab &
FormatNumber(objDisk.FreeSpace/1024/1024/1024, 2) & " GB / " &
FormatNumber(objDisk.Size/1024/1024/1024, 2) & " GB<br>"
objNewFile.WriteLine "Free Disk Space: " & vbTab & strFD
objNewFile.WriteLine "</div>"
Next

For Each objOperatingSystem in colOSes
strAvailMem =
FormatNumber((objOperatingSystem.FreePhysicalMemory/1024), 0)
Next

For Each objComputer in colComputer
strTotalMem = FormatNumber((objComputer.TotalPhysicalMemory/1024/1024),
0)
Next

strUsedMem = FormatNumber((strTotalMem-strAvailMem)/(strTotalMem)*100,
2)
if (strUsedMem > 80 ) Then
strUM = "<font color='red'>" & strUsedMem & "</font>%<br>"
elseif (strUsedMem > 40 ) Then
strUM = "<font color='yellow'>" & strUsedMem & "</font>%<br>"
else strUM = "<font color='green'>" & strUsedMem & "</font>%<br>"
end if
strFreeMem = FormatNumber((strAvailMem)/(strTotalMem)*100, 2)
if (strFreeMem < 20 ) Then
strFM = "<font color='red'>" & strFreeMem & "</font>%<br>"
elseif (strFreeMem < 60 ) Then
strFM = "<font color='yellow'>" & strFreeMem & "</font>%<br>"
else strFM = "<font color='green'>" & strFreeMem & "</font>%<br>"
end if
objNewFile.WriteLine "<div class='ram'>"
objNewFile.WriteLine "Used Physical Memory: " & vbTab &
(strTotalMem-strAvailMem) & " MB / " & strTotalMem & " MB<br>"
objNewFile.WriteLine "Used Physical Memory: " & vbTab & strUM
objNewFile.WriteLine "Free Physical Memory: " & vbTab & strAvailMem & "
MB / " & strTotalMem & " MB<br>"
objNewFile.WriteLine "Free Physical Memory: " & vbTab & strFM
objNewFile.WriteLine "</div>"

objNewFile.WriteLine "<div class='ramimg'>"
if ( strFreeMem >= 100 ) Then
objNewFile.WriteLine "<img src='images/100free.gif' width='100'
height='100'>"
elseif ( strFreeMem >= 90 ) Then
objNewFile.WriteLine "<img src='images/90free.gif' width='100'
height='100'>"
elseif ( strFreeMem >= 80 ) Then
objNewFile.WriteLine "<img src='images/80free.gif' width='100'
height='100'>"
elseif ( strFreeMem >= 70 ) Then
objNewFile.WriteLine "<img src='images/70free.gif' width='100'
height='100'>"
elseif ( strFreeMem >= 60 ) Then
objNewFile.WriteLine "<img src='images/60free.gif' width='100'
height='100'>"
elseif ( strFreeMem >= 50 ) Then
objNewFile.WriteLine "<img src='images/50free.gif' width='100'
height='100'>"
elseif ( strFreeMem >= 40 ) Then
objNewFile.WriteLine "<img src='images/40free.gif' width='100'
height='100'>"
elseif ( strFreeMem >= 30 ) Then
objNewFile.WriteLine "<img src='images/30free.gif' width='100'
height='100'>"
elseif ( strFreeMem >= 20 ) Then
objNewFile.WriteLine "<img src='images/20free.gif' width='100'
height='100'>"
elseif ( strFreeMem >= 10 ) Then
objNewFile.WriteLine "<img src='images/10free.gif' width='100'
height='100'>"
else
objNewFile.WriteLine "<img src='images/0free.gif' width='100'
height='100'>"
end if
objNewFile.WriteLine "</div>"

objNewFile.WriteLine "<div class='hddimg'>"
if ( strFreeDisk >= 100 ) Then
objNewFile.WriteLine "<img src='images/100free.gif' width='100'
height='100'>"
elseif ( strFreeDisk >= 90 ) Then
objNewFile.WriteLine "<img src='images/90free.gif' width='100'
height='100'>"
elseif ( strFreeDisk >= 80 ) Then
objNewFile.WriteLine "<img src='images/80free.gif' width='100'
height='100'>"
elseif ( strFreeDisk >= 70 ) Then
objNewFile.WriteLine "<img src='images/70free.gif' width='100'
height='100'>"
elseif ( strFreeDisk >= 60 ) Then
objNewFile.WriteLine "<img src='images/60free.gif' width='100'
height='100'>"
elseif ( strFreeDisk >= 50 ) Then
objNewFile.WriteLine "<img src='images/50free.gif' width='100'
height='100'>"
elseif ( strFreeDisk >= 40 ) Then
objNewFile.WriteLine "<img src='images/40free.gif' width='100'
height='100'>"
elseif ( strFreeDisk >= 30 ) Then
objNewFile.WriteLine "<img src='images/30free.gif' width='100'
height='100'>"
elseif ( strFreeDisk >= 20 ) Then
objNewFile.WriteLine "<img src='images/20free.gif' width='100'
height='100'>"
elseif ( strFreeDisk >= 10 ) Then
objNewFile.WriteLine "<img src='images/10free.gif' width='100'
height='100'>"
else
objNewFile.WriteLine "<img src='images/0free.gif' width='100'
height='100'>"
end if
objNewFile.WriteLine "</div>"

objNewFile.WriteLine "</b>"
objNewFile.WriteLine "</body>"
objNewFile.WriteLine "</html>"
objNewFile.Close

Re: VBScript to Remote Monitor by Jeffery

Jeffery
Mon Jan 22 12:18:34 CST 2007

On 22 Jan 2007 09:49:16 -0800, FireDrow wrote:

> I am writing a script to grab information, such as hard drive space or
> memory availability, from remote servers then output that to a webpage
> for viewing. So far I can only get it to work grabbing info from the
> localhost, it keeps saying unable to connect to WMI for the remotes.
>
> When I change the value of strComputer to something other than the
> localhost, it fails.
>
> -------
> -------
>
> Const HARD_DISK = 3
>
> strComputer = "."
> Set objWMIService = GetObject("winmgmts:" &
> "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
>
> Set colDisks = objWMIService.ExecQuery("Select * from Win32_LogicalDisk
> Where DriveType = " & HARD_DISK & "")
> Set colOSes = objWMIService.ExecQuery("Select * from
> Win32_OperatingSystem")
> Set colComputer = objWMIService.ExecQuery("Select * from
> Win32_ComputerSystem")
> Set objFS = CreateObject("Scripting.FileSystemObject")
> Set objNewFile = objFS.CreateTextFile("stat.htm")
>
> objNewFile.WriteLine "<html>"
> objNewFile.WriteLine "<head>"
> objNewFile.WriteLine "<title>Process Report</title>"
> objNewFile.WriteLine "<meta http-equiv='Content-Type'
> content='text/html; charset=iso-8859-1'>"
> objNewFile.WriteLine "<link rel='stylesheet' href='stat.css'>"
> objNewFile.WriteLine "</head>"
> objNewFile.WriteLine "<body>"
> objNewFile.WriteLine "<div class='header'>"
> objNewFile.WriteLine "<img src='images/banner.gif'>"
> objNewFile.WriteLine "<h2>Process Report -- Date: " & Now() & "</h2>" &
> vbCrLf
> objNewFile.WriteLine "</div>"
> objNewFile.WriteLine "<b>"
>
> For Each objOS in colOSes
> objNewFile.WriteLine "<div class='info'>"
> objNewFile.WriteLine "Computer Name: " & objOS.CSName & "<br>"
> objNewFile.WriteLine "Caption: " & objOS.Caption & "<br>"
> objNewFile.WriteLine "Version: " & objOS.Version & "<br>"
> objNewFile.WriteLine "Build Number: " & objOS.BuildNumber & "<br>"
> objNewFile.WriteLine "Build Type: " & objOS.BuildType & "<br>"
> objNewFile.WriteLine "Service Pack: " & objOS.ServicePackMajorVersion &
> "." & objOS.ServicePackMinorVersion
> objNewFile.WriteLine "</div>"
> Next
>
> For Each objDisk in colDisks
> objNewFile.WriteLine "<div class='hdd'>"
> strUsedDisk =
> FormatNumber((((objDisk.Size/1024/1024/1024)-(objDisk.FreeSpace/1024/1024/1024))/(objDisk.Size/1024/1024/1024))*100,
> 2)
> if (strUsedDisk > 80) Then
> strUD = "<font color='red'>" & strUsedDisk & "</font>%<br>"
> elseif (strUsedDisk > 40) Then
> strUD = "<font color='yellow'>" & strUsedDisk & "</font>%<br>"
> else strUD = "<font color='green'>" & strUsedDisk & "</font>%<br>"
> end if
> strFreeDisk =
> FormatNumber(((objDisk.FreeSpace/1024/1024/1024)/(objDisk.Size/1024/1024/1024)*100),
> 2)
> if (strFreeDisk < 20 ) Then
> strFD = "<font color='red'>" & strFreeDisk & "</font>%<p>"
> elseif (strFreeDisk < 60 ) Then
> strFD = "<font color='yellow'>" & strFreeDisk & "</font>%<p>"
> else strFD = "<font color='green'>" & strFreeDisk & "</font>%<p>"
> end if
> objNewFile.WriteLine "Drive Letter: " & vbTab & objDisk.DeviceID &
> "<br>"
> objNewFile.WriteLine "Used Disk Space: " & vbTab &
> FormatNumber((objDisk.Size/1024/1024/1024)-(objDisk.FreeSpace/1024/1024/1024),
> 2) & " GB / " & FormatNumber(objDisk.Size/1024/1024/1024, 2) & "
> GB<br>"
> objNewFile.WriteLine "Used Disk Space: " & vbTab & strUD
> objNewFile.WriteLine "Free Disk Space: " & vbTab &
> FormatNumber(objDisk.FreeSpace/1024/1024/1024, 2) & " GB / " &
> FormatNumber(objDisk.Size/1024/1024/1024, 2) & " GB<br>"
> objNewFile.WriteLine "Free Disk Space: " & vbTab & strFD
> objNewFile.WriteLine "</div>"
> Next
>
> For Each objOperatingSystem in colOSes
> strAvailMem =
> FormatNumber((objOperatingSystem.FreePhysicalMemory/1024), 0)
> Next
>
> For Each objComputer in colComputer
> strTotalMem = FormatNumber((objComputer.TotalPhysicalMemory/1024/1024),
> 0)
> Next
>
> strUsedMem = FormatNumber((strTotalMem-strAvailMem)/(strTotalMem)*100,
> 2)
> if (strUsedMem > 80 ) Then
> strUM = "<font color='red'>" & strUsedMem & "</font>%<br>"
> elseif (strUsedMem > 40 ) Then
> strUM = "<font color='yellow'>" & strUsedMem & "</font>%<br>"
> else strUM = "<font color='green'>" & strUsedMem & "</font>%<br>"
> end if
> strFreeMem = FormatNumber((strAvailMem)/(strTotalMem)*100, 2)
> if (strFreeMem < 20 ) Then
> strFM = "<font color='red'>" & strFreeMem & "</font>%<br>"
> elseif (strFreeMem < 60 ) Then
> strFM = "<font color='yellow'>" & strFreeMem & "</font>%<br>"
> else strFM = "<font color='green'>" & strFreeMem & "</font>%<br>"
> end if
> objNewFile.WriteLine "<div class='ram'>"
> objNewFile.WriteLine "Used Physical Memory: " & vbTab &
> (strTotalMem-strAvailMem) & " MB / " & strTotalMem & " MB<br>"
> objNewFile.WriteLine "Used Physical Memory: " & vbTab & strUM
> objNewFile.WriteLine "Free Physical Memory: " & vbTab & strAvailMem & "
> MB / " & strTotalMem & " MB<br>"
> objNewFile.WriteLine "Free Physical Memory: " & vbTab & strFM
> objNewFile.WriteLine "</div>"
>
> objNewFile.WriteLine "<div class='ramimg'>"
> if ( strFreeMem >= 100 ) Then
> objNewFile.WriteLine "<img src='images/100free.gif' width='100'
> height='100'>"
> elseif ( strFreeMem >= 90 ) Then
> objNewFile.WriteLine "<img src='images/90free.gif' width='100'
> height='100'>"
> elseif ( strFreeMem >= 80 ) Then
> objNewFile.WriteLine "<img src='images/80free.gif' width='100'
> height='100'>"
> elseif ( strFreeMem >= 70 ) Then
> objNewFile.WriteLine "<img src='images/70free.gif' width='100'
> height='100'>"
> elseif ( strFreeMem >= 60 ) Then
> objNewFile.WriteLine "<img src='images/60free.gif' width='100'
> height='100'>"
> elseif ( strFreeMem >= 50 ) Then
> objNewFile.WriteLine "<img src='images/50free.gif' width='100'
> height='100'>"
> elseif ( strFreeMem >= 40 ) Then
> objNewFile.WriteLine "<img src='images/40free.gif' width='100'
> height='100'>"
> elseif ( strFreeMem >= 30 ) Then
> objNewFile.WriteLine "<img src='images/30free.gif' width='100'
> height='100'>"
> elseif ( strFreeMem >= 20 ) Then
> objNewFile.WriteLine "<img src='images/20free.gif' width='100'
> height='100'>"
> elseif ( strFreeMem >= 10 ) Then
> objNewFile.WriteLine "<img src='images/10free.gif' width='100'
> height='100'>"
> else
> objNewFile.WriteLine "<img src='images/0free.gif' width='100'
> height='100'>"
> end if
> objNewFile.WriteLine "</div>"
>
> objNewFile.WriteLine "<div class='hddimg'>"
> if ( strFreeDisk >= 100 ) Then
> objNewFile.WriteLine "<img src='images/100free.gif' width='100'
> height='100'>"
> elseif ( strFreeDisk >= 90 ) Then
> objNewFile.WriteLine "<img src='images/90free.gif' width='100'
> height='100'>"
> elseif ( strFreeDisk >= 80 ) Then
> objNewFile.WriteLine "<img src='images/80free.gif' width='100'
> height='100'>"
> elseif ( strFreeDisk >= 70 ) Then
> objNewFile.WriteLine "<img src='images/70free.gif' width='100'
> height='100'>"
> elseif ( strFreeDisk >= 60 ) Then
> objNewFile.WriteLine "<img src='images/60free.gif' width='100'
> height='100'>"
> elseif ( strFreeDisk >= 50 ) Then
> objNewFile.WriteLine "<img src='images/50free.gif' width='100'
> height='100'>"
> elseif ( strFreeDisk >= 40 ) Then
> objNewFile.WriteLine "<img src='images/40free.gif' width='100'
> height='100'>"
> elseif ( strFreeDisk >= 30 ) Then
> objNewFile.WriteLine "<img src='images/30free.gif' width='100'
> height='100'>"
> elseif ( strFreeDisk >= 20 ) Then
> objNewFile.WriteLine "<img src='images/20free.gif' width='100'
> height='100'>"
> elseif ( strFreeDisk >= 10 ) Then
> objNewFile.WriteLine "<img src='images/10free.gif' width='100'
> height='100'>"
> else
> objNewFile.WriteLine "<img src='images/0free.gif' width='100'
> height='100'>"
> end if
> objNewFile.WriteLine "</div>"
>
> objNewFile.WriteLine "</b>"
> objNewFile.WriteLine "</body>"
> objNewFile.WriteLine "</html>"
> objNewFile.Close

The first thing to verify is credentials. Are you running the script with
amdmin credentials on the remote systems? Are the remote systems behind a
firewall or across a WAN? You need RPC connectivity to the server for WMI
queries to work. Try using WBEMTest to connect to remote systems and test
your queries. It sounds like their working locally. What is the exact
error message you get?

--
Jeffery Hicks
SAPIEN Technologies - Scripting, Simplified. www.SAPIEN.com
VBScript & Windows PowerShell Training -
www.ScriptingTraining.com/classes.asp
Windows PowerShell? - www.SAPIENPress.com/powershell.asp

blog: http://blog.SAPIEN.com
blog: http://jdhitsolutions.blogspot.com