Chris Crowe's Blog
Ramblings of an IIS MVP ( MVP Since 1997 )

Powered By IIS 7

Search my blog

Some of my readers



My Microsoft Certifications


Dec 15, 1998

Dec 20, 2000

Jan 31, 2001

Jul 22, 2002

Nov 1, 2004

My Microsoft MVP Awards




1997
1998
1999
2000
2001
2002
2003
2004
2005
2006
mvp.support.microsoft.com

When running IIS on a server edition you can create multiple web sites and over time you may add and remove sites. When you do this the Log Files are still retained

The following script can be used to find unused log file directories that are no longer associated with any IIS Web Sites - it does not delete them just displays them.

Example Output

Usage

  • cscript LocateUnusedLogFileDirectories.VBS

Source Code

You can download the source code by clicking here.

Option Explicit

dim LogFileDirectory
dim Folders()
dim Sites()
dim Valid()

function EnumerateFolders()
 Dim FSO, Dir, File, Index

 set FSO = createobject("Scripting.FileSystemObject")
 set Dir = fso.GetFolder(LogFileDirectory)

 redim Folders(Dir.SubFolders.Count)
 redim Valid(Dir.SubFolders.Count)

 Index =0

 for each File in Dir.SubFolders
  if (left(File.Name,5) = "W3SVC") then
   Folders(Index) = File.Name
   Valid(Index) = false
   Index = Index+1
  end if
 next

 redim Preserve Folders(Index-1)
 redim Preserve Valid(Index-1)

 set Dir = Nothing
 set FSO = Nothing
end function

function DisplayFolders()
 dim Folder, Index, Bad

 Bad = 0
 for Index= 0 to UBound(Folders)
  if (Valid(Index) = false) then
   Bad = Bad + 1
   WScript.echo LogFileDirectory & "\" & Folders(Index)
  end if
 next
 if (Bad = 0) then
  WScript.echo "There are no Log directories found that are not associated with IIS"
 else
  WScript.echo ""
  WScript.echo Bad & " directories were found..."
 end if
end function

function EnumerateSites()
 Dim IISObj, Web, Index

 Index = 0 
 Set IISOBJ = getObject("IIS://localhost/w3svc")
 for each Web in IISOBJ
  if (Web.Class = "IIsWebServer") then 
    Index = Index + 1
    redim Preserve Sites(Index)
    Sites(Index) = "W3SVC" & Web.Name 
  end if
 next
 Set IISOBj=Nothing
end function

Function ProcessFolders()
 dim Folder, Index, fIndex

 for Index = 0 to UBound(Sites) 
  for fIndex= 0 to UBound(Folders) 
   if (Sites(Index) = Folders(fIndex)) then
    Valid(fIndex) = true
   end if
  next
 next
end Function

function GetDefaultLogFolderPath
 Dim IISObj

 Set IISOBJ = getObject("IIS://localhost/w3svc")
 LogFileDirectory =  IISObj.LogFileDirectory
 Set IISOBj = Nothing
end function

function WriteHeader
 WScript.Echo "The following directories are no longer associated with any IIS Web Sites."
 WScript.Echo ""
end function

call WriteHeader
call GetDefaultLogFolderPath
call EnumerateFolders
call EnumerateSites
call ProcessFolders
call DisplayFolders
posted on Tuesday, May 09, 2006 1:08 AM | Filed Under [ IIS IIS / Tools / Scripts ]

Comments


No comments posted yet.

Post Comment


Title *
Name *
Email
Url
Comment *  
Please add 3 and 6 and type the answer here: