May 2 2009 6:19PM GMT
Posted by: Jerry Lees
VBScipt,
VBScript Functions,
file access,
file modified,
modification date,
System Administration,
Disk space,
disk utilities
I recently needed a way to tell if a file had been accessed or modified recently, something that has always been a question when you’re out of space on a server and can’t just add more space to it. What do you delete??? The Old files are the obvious answer… except if people are using them.
Here is teh script I wrote to tell if a file had been accessed or modified in the last X days. In the example I use 5 days, but you can use a different number of days when you call the function.
Enjoy!
Option Explicit
Dim fName
Const DateLastModified = 1, DateLastAccessed = 2
fName=”c:\temp2.txt”
if FileAge(fname,5,DateLastAccessed) = True Then
WScript.Echo (”The file was accessed recently enough!”)
Else
WScript.Echo (”The file was not accessed recently enough!”)
End If
if FileAge(fname,5,DateLastModified) = True Then
WScript.Echo (”The file was modified recently!”)
Else
WScript.Echo (”The file was not modified recently!”)
End If
Function FileAge(fName,fAge, CompareType)
‘function returns True if the file is older than the fAge (File Age) specified and false if it isn’t
Dim LastModified, LastAccessed, FSO, DateDifference
Set FSO = CreateObject(”Scripting.FileSystemObject”)
LastModified = FSO.GetFile(fname).DateLastModified
LastAccessed = FSO.GetFile(fname).DateLastAccessed
Select Case CompareType
Case 1
DateDifference = DateDiff(”n”,LastModified, Now())
Case 2
DateDifference = DateDiff(”n”,LastAccessed, Now())
End Select
If DateDifference > fage Then
FileAge = False
Else
FileAge = True
End If
End Function
Apr 20 2009 1:44PM GMT
Posted by: Jerry Lees
Eventlogs,
Win32_NTLogEvent,
System Administration,
systems management,
VBScript
If you’ve ever tried to find a specific event log entry in a system you know what a chore it can be to find them. Sure, you can filter on the event ID and get closer but, some applications (and system components) log every event that’s from the same source as the same event ID.
IIS is terribly bad about this! Additionally, Microsoft’s search filtering isn’t powerful enough to search in the even description or the event message. The script below solves that problem!
GetLogInfo “ServerName”,”EventID”, “application”, “20081218″
Function GetLogInfo( StrComputer1, EventID, EventLogType, YYYYMMDD)
Dim objWMIService, colItems, objItem
Dim TempStr
On Error Resume Next
‘ error control block
Set objWMIService = GetObject(”winmgmts:{impersonationLevel=impersonate}//” & strComputer1 & “\root\cimv2″)
Set colItems = objWMIService.ExecQuery (”Select * from Win32_NTLogEvent Where EventCode=” & EventID & ” and logfile=’” & EventlogType & “‘”)
For Each objItem in colItems
TempStr = “”
If mid(objItem.timegenerated,1,8) = YYYYMMDD Then
TempStr = objItem.message
If Replace(TempStr,”Exception message: Request timed out.”,””) <> TempStr Then
TempStr = Mid(TempStr,InStr(1,TempStr,”Request URL: “)+13, 100)
TempStr = Mid(TempStr,1,InStr(1,TempStr,”.aspx”)+4)
WScript.Echo StrComputer1 & “,” & TempStr
End if
End if
Next
On Error GoTo 0
End Function
Apr 13 2009 3:18PM GMT
Posted by: Jerry Lees
WMI,
Windows Management Interface,
win32_process,
System Administration,
Systems Administration,
Administration tools,
VBScript,
VBScript Functions,
Functions
Recently I had an issue where I needed to find the user running a series of processes on a large number of servers. Initially, it was a long process of logging onto each server then opening task manager and sorting by process name. After about 5 servers, I realized it was going to take hours to sort out the users running the processes… so I spent 30 minutes not preforming this process and wrote a script to do the rest of the work in less than a minute!
The function below uses the Win32_Process WMI class to enumerate processes running on a server that are named the same as the process name you give it. It then outputs the name of the user running the process.
Below is the function… Enjoy!
Function FindProcessOwner( StrComputer1, ProcessName)
Dim objWMIService, colItems, objItem, Username, Domain
On Error Resume Next
‘ error control block
Set objWMIService = GetObject(”winmgmts:{impersonationLevel=impersonate}//” & strComputer1 & “\root\cimv2″)
If Err.Number <> 0 Then
WScript.Echo “An Error Occured (” & StrComputer1 & “): ” & Err.Description
End If
Set colItems = objWMIService.ExecQuery (”Select * from Win32_Process Where Name = ‘” & ProcessName & “‘”)
WScript.Echo “Searching for processes on ” & StrComputer1 & “.”
WScript.Echo colItems.count & ” processes found.”
For Each objItem in colItems
objItem.getowner Username, Domain
FindProcessOwner = FindProcessOwner & VbCrLf & strComputer1 & “: ” & objItem.name &_
“(PID: ” & objItem.processid & “) the owner is: ” & Domain & “\” & Username
Next
On Error GoTo 0
End Function
Apr 9 2009 4:23PM GMT
Posted by: Jerry Lees
bginfo,
VBScript,
VBScript Functions,
Systems Administration,
systems management,
Systems administrator tools,
systems reporting
I recently had to provide the information displayed with BGINFO on a number of systems. Unfortunately, BGInfo only generates a bitmap, so far as I know, so I decided to write a script to generate the information and use this displayed information to send back to the person who requested it.
The function below is a part of the script I mentioned. It retrieves and returns text that represents the IP address settings for the network cards installed in a system.
You can view all the scripts in this BGINFO series here.
Here is the code:
Function GetIPAddresses(strComputer)
Dim colItems, objItem, address
Dim StrQuery
Dim objWMIService
Dim IP
StrQuery = “SELECT * FROM Win32_NetworkAdapterConfiguration WHERE IPEnabled = True”
Set objWMIService = GetObject(”winmgmts:\\” & strComputer & “\root\CIMV2″)
Set colItems = objWMIService.ExecQuery(strQuery,,48)
For Each objItem in colItems
For Each address In objItem.ipaddress
IP = replace(address,”:”,””)
‘IP = Replace(IP,vbnull,”No IP Assigned”)
GetIPAddresses = GetIPAddresses & vbTab & mid(objItem.caption,InStr(objItem.caption,”]”)+2) & “: ” & IP & vbcrLF
Next
Next
End Function
Apr 7 2009 4:23PM GMT
Posted by: Jerry Lees
bginfo,
VBScript,
VBScript Functions,
Systems Administration,
systems management,
Systems administrator tools,
systems reporting
I recently had to provide the information displayed with BGINFO on a number of systems. Unfortunately, BGInfo only generates a bitmap, so far as I know, so I decided to write a script to generate the information and use this displayed information to send back to the person who requested it.
The function below is a part of the script I mentioned. It retrieves and returns text that represents the operating system and service pack information installed on a system.
You can view all the scripts in this BGINFO series here.
Here is the code:
Function GetOSVersion(strComputer)
Dim colItems, objItem, address
Dim StrQuery
Dim objWMIService
GetOSVersion = VbCrLfStrQuery = “SELECT * FROM Win32_OperatingSystem”
Set objWMIService = GetObject(”winmgmts:\\” & strComputer & “\root\CIMV2″)
Set colItems = objWMIService.ExecQuery(strQuery,,48)
For Each objItem in colItems
GetOSVersion = GetOSVersion & vbTab & replace(objItem.caption,”(R)”,””) & VbCrLf
GetOSVersion = GetOSVersion & vbTab & “Service Pack ” & objitem.ServicePackMajorVersion & VbCrLf
Next
End Function
Apr 2 2009 1:23PM GMT
Posted by: Jerry Lees
bginfo,
VBScript,
VBScript Functions,
Systems Administration,
systems management,
Systems administrator tools,
systems reporting
I recently had to provide the information displayed with BGINFO on a number of systems. Unfortunately, BGInfo only generates a bitmap, so far as I know, so I decided to write a script to generate the information and use this displayed information to send back to the person who requested it.
The function below is a part of the script I mentioned. It retrieves and returns text that represents the total page file space allocated in a system.
You can view all the scripts in this BGINFO series here.
Here is the code:
Function GetPageFile(strComputer)
Dim colItems, objItem, address
Dim StrQuery
Dim objWMIService
GetPageFile = VbCrLfStrQuery = “SELECT * FROM Win32_PageFile”
Set objWMIService = GetObject(”winmgmts:\\” & strComputer & “\root\CIMV2″)
Set colItems = objWMIService.ExecQuery(strQuery,,48)
For Each objItem in colItems
GetPageFile = GetPageFile & vbTab & ((objItem.filesize/1024)/1024) & ” Mb” & vbcrlf
Next
End Function
Mar 31 2009 1:22PM GMT
Posted by: Jerry Lees
bginfo,
VBScript,
VBScript Functions,
Systems Administration,
systems management,
Systems administrator tools,
systems reporting
I recently had to provide the information displayed with BGINFO on a number of systems. Unfortunately, BGInfo only generates a bitmap, so far as I know, so I decided to write a script to generate the information and use this displayed information to send back to the person who requested it.
The function below is a part of the script I mentioned. It retrieves and returns text that represents the total amount of physical memory in a system.
You can view all the scripts in this BGINFO series here.
Here is the code:
Function GetPhysicalMemory(strComputer)
Dim colItems, objItem, address
Dim StrQuery
Dim objWMIService, RAM
GetPhysicalMemory = VbCrLf
RAM = 0
StrQuery = “SELECT * FROM Win32_PhysicalMemory”
Set objWMIService = GetObject(”winmgmts:\\” & strComputer & “\root\CIMV2″)
Set colItems = objWMIService.ExecQuery(strQuery,,48)
For Each objItem in colItems
RAM = RAM + objItem.capacity
Next
GetPhysicalMemory = GetPhysicalMemory & vbTab & (((RAM/1024)/1024)/1024) & ” Gb” & VbCrLf
End Function
Mar 30 2009 4:13PM GMT
Posted by: Jerry Lees
bginfo,
VBScript,
VBScript Functions,
Systems Administration,
systems management,
Systems administrator tools,
systems reporting
I recently had to provide the information displayed with BGINFO on a number of systems. Unfortunately, BGInfo only generates a bitmap, so far as I know, so I decided to write a script to generate the information and use this displayed information to send back to the person who requested it.
The function below is a part of the script I mentioned. It retrieves and returns text that represents the Processor information in the system and teh number of processors in the system. (Note: At this time I don’t have a dual core system to test it with, I believe that it will diplay the number of cores in the system. So, 4 dual core processors will be displayed as 8 processors/cores.)
You can view all the scripts in this BGINFO series here.
Here is the code:
Function GetCPUs(strComputer)
Dim colItems, objItem, address
Dim StrQuery
Dim objWMIService
Dim CoresCores = 0
StrQuery = “SELECT * FROM Win32_Processor”
Set objWMIService = GetObject(”winmgmts:\\” & strComputer & “\root\CIMV2″)
Set colItems = objWMIService.ExecQuery(strQuery,,48)
For Each objItem in colItems
If Replace objItem.name,”GHz”,””) = objItem.name then
GetCPUs =(round(objItem.CurrentClockSpeed/1024,1)) & “GHz” & ” ” & objItem.name & VbCrLf
Else
GetCPUs = objItem.name & VbCrLf
end if
Cores = Cores + 1
Next
GetCPUs = vbTab & Cores & ” Processors/Cores that are: ” & GetCPUs
End Function
Mar 25 2009 2:49PM GMT
Posted by: Jerry Lees
bginfo,
VBScript,
VBScript Functions,
Systems Administration,
systems management,
Systems administrator tools,
systems reporting
I recently had to provide the information displayed with BGINFO on a number of systems. Unfortunately, BGInfo only generates a bitmap, so far as I know, so I decided to write a script to generate the information and use this displayed information to send back to the person who requested it.
The function below is a part of the script I mentioned. It retrieves and returns text that represents the total space and the total free space on all the physical hard drives in a system.
You can view all the scripts in this BGINFO series here.
Here is the code:
Function GetMACAddress(strComputer)
Dim colItems, objItem, address
Dim StrQuery
Dim objWMIService
StrQuery = “SELECT * FROM Win32_NetworkAdapter”
Set objWMIService = GetObject(”winmgmts:\\” & strComputer & “\root\CIMV2″)
Set colItems = objWMIService.ExecQuery(strQuery,,48)
For Each objItem in colItems
if objitem.MACAddress <> vbnull Then
GetMACAddress = GetMACAddress & vbTab & objItem.name & “: ” & objItem.MACAddress & VbCrLf
End If
Next
End Function