Re: Script Need to check disk space on remote servers
- From: "Jeffery Hicks [MVP]" <jhicks@xxxxxxxxxx>
- Date: Tue, 20 Nov 2007 16:36:12 -0500
You might find this easier using WMIC (PowerShell would be even easier).
A command like this will check one computer, myComputer and create a simple HTML table with the name, size and freespace.
C:\Scripts>wmic /node:MyComputer /append:"c:\test\report.html" logicaldisk where drivetype=3 get Name,Size,FreeSpace /format:htable.xsl > NULL
You can easily check a list of computers like this:
C:\Scripts>wmic /node:@servers.txt /append:"c:\test\report.html" logicaldisk where drivetype=3 get Name,Size,FreeSpace /format:htable.xsl > NULL
This is reporting all fixed logical drives. I thought I'd be able to modify the query to also check freespace, but that part isn't working. I'll have to see why.
Here's how easy it is to create the html report in PowerShell:
PS C:\test> get-wmiobject -computer (get-content servers.txt) -query "Select * from win32_logicaldisk where freespace <=
32212254720 and drivetype=3" | Select SystemName,DeviceID,Size,FreeSpace | convertto-html | out-file c:\test\report.html
It may look complicated but it is one line that goes through a list of servers (servers.txt) and uses WMI to find all logical disks with less then 30GB of free space. Any matches are sent to the HTML report. PowerShell only needs to be installed where you run the script. Not necessarily on the remote systems. Sending an email through PowerShell is pretty simple as well.
--
Jeffery Hicks
Microsoft PowerShell MVP
http://www.scriptinganswers.com
http://www.powershellcommunity.org
Now Available: WSH and VBScript Core: TFM
Coming Soon: Windows PowerShell: TFM 2nd Ed.
"screwuphead" <screwuphead.30czze@xxxxxxxxxxxxx> wrote in message news:screwuphead.30czze@xxxxxxxxxxxxxxxx
I know i could always a program to do this but wheres the fun in that?
so I need a program that will go through a list of servers and then a
list of their drives and check to see how much free space is left on
those drives, from their if it is anything less then 30GB i need it to
send an email to me.
i am using psexec to access these remote servers and run cmd. then to
email myself i am using postie.
the problem i am having is wrapping that all up in a if-then-else
command that will look for the specified free space. It doesnt work
right now beacuse for whatever reason it is bring back a true statement
when the statement is false because i know the server its checking is
more then 30GB free.
This is what i have so far:
@echo off
for /f %%S IN (serverPClist.txt) DO (
echo Checking drives on Server %%S...
for /D %%D IN (C D F G H I J K X V E) DO (
psexec \\%%S cmd /c if exist %%D:\* dir %%D:\ | findstr /c:"bytes" >
%temp%\%%S-%%D.txt
)
)
color 0D
for /f %%S IN (serverPClist.txt) DO (
echo. & echo.
echo ********** Displaying output for server %%S... **********
for /D %%D IN (C D E F G I J K) DO (
for /f "tokens=1,2,3,4" %%F IN ('if exist %temp%\%%S-%%D.txt type
%temp%\%%S-%%D.txt') DO (
if /i "%%G" == "Dir(s)" echo For the %%D: drive: %%H bytes free space.
if /i "%%G" == "bytes" echo For the %%D: drive: %%F bytes free space.
echo.
)
)
echo Done!
)
echo Generating HTML...
REM this part of the script generates an HTML file with all the
relevant information
REM and then launches it using the default browser.
set FileName="C:\Report.html"
echo ^<HTML^> > %FileName%
echo ^<HEAD^> >> %FileName%
echo ^<TITLE^>Free Space on NRCE Servers^</TITLE^> >> %FileName%
echo ^</HEAD^> >> %FileName%
echo ^<BODY^> >> %FileName%
echo ^<CENTER^>^<FONT SIZE=6 COLOR=BLUE^>Free Hard Drive Space
Report^</FONT^>^</CENTER^>^<BR^> >> %FileName%
for /f %%S IN (serverPClist.txt) DO (
REM mark the server
echo ^<FONT SIZE=4^>^<B^>%%S^</B^>^</FONT^>^<BR^> >> %FileName%
for /D %%D IN (C D E F G I J K) DO (
for /f "tokens=1,2,3,4" %%F IN ('if exist %temp%\%%S-%%D.txt type
%temp%\%%S-%%D.txt') DO (
REM add a line for the drive and free space
if /i "%%G" == "Dir(s)" echo ^<FONT SIZE=3^>Free space on
^<B^>%%D:^</B^> drive: ^<B^>^<FONT
COLOR=GREEN^>%%H^</FONT^>^</B^> bytes free^</FONT^>^<BR^> >> %FileName%
if /i "%%G" == "bytes" echo ^<FONT SIZE=3^>Free space on
^<B^>%%D:^</B^> drive: ^<B^>^<FONT
COLOR=GREEN^>%%F^</FONT^>^</B^> bytes free^</FONT^>^<BR^> >> %FileName%
)
)
REM mark some spacing lines into the HTML file
echo ^<BR^> >> %FileName%
)
echo ^</BODY^> >> %FileName%
echo ^</HTML^> >> %FileName%
REM launch the HTML file
set positive=1
set amount="30,000,000,000"
if %%f leq %amount% set violation=1
if %%h leq %amount% set violation=1
echo %violation%
if %violation% equ %positive% postie -host:(SMTP SERVER) -to:(MY EMAIL)
-from:(NETWORK EMAIL) -s:"Server Report" -msg:"THERE IS A VIOLATION!"
-a:"C:\ServerReports\Report.html"
echo Done!
If anybody else has anything better plz show me, otherwise i will keep
playing around with this coding.
--
screwuphead
------------------------------------------------------------------------
screwuphead's Profile: http://forums.techarena.in/member.php?userid=34605
View this thread: http://forums.techarena.in/showthread.php?t=856460
http://forums.techarena.in
.
- Follow-Ups:
- Re: Script Need to check disk space on remote servers
- From: screwuphead
- Re: Script Need to check disk space on remote servers
- References:
- Script Need to check disk space on remote servers
- From: screwuphead
- Script Need to check disk space on remote servers
- Prev by Date: Re: Need a script to capture computer names in IP range
- Next by Date: Re: Deleting Files and folders
- Previous by thread: Script Need to check disk space on remote servers
- Next by thread: Re: Script Need to check disk space on remote servers
- Index(es):
Relevant Pages
|
Loading