Celebrate National IT Professionals Day with 3 months of free Premium Membership. Use Code ITDAY17

x
?
Solved

Windows Server Environment Disk Usage monitoring solution?

Posted on 2012-03-29
8
Medium Priority
?
395 Views
Last Modified: 2012-03-29
Hi guys,

I have about 30 Win 2003/2008 servers which need to have Disk Capacity monitored, the snag is, heavy corporate IT policy governance towards third party applications.

Is there any bolt-on services/scripting I can use as a workaround? I basically need to create daily reports and perhaps alerts regarding capacity management, as some of our critical applications require space available across various volumes.

Thanks in advance.

Regards.
0
Comment
Question by:Robokiller
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 4
  • 4
8 Comments
 
LVL 13

Accepted Solution

by:
stergium earned 2000 total points
ID: 37780675
hello.
you can use the above script and feed it a txt file with your server names (1 per row)
<head>
<title>Check Hard Drive and stuff!</title>
<HTA:APPLICATION 
     APPLICATIONNAME="Check Hard Drive Failure Events"
     SCROLL="yes"
     SINGLEINSTANCE="yes"
     WINDOWSTATE="maximize"
>
</head>
 
<script language="VBScript">
  Sub Window_onLoad
        window.resizeTo 400,250
    End Sub 
	
sub CheckFromFile
	dim strComputerList, objFSO, objFile, arrComputers, i
	strComputerList=ComputerListFile.Value
	redim arrComputers(0)
	
	set objFSO=CreateObject("Scripting.FileSystemObject")
	if strComputerList="" then
		ShowStatus.InnerHTML="<p>Please select a file containing a list of computer names, one per line.</p>"
		exit sub
	end if
	if not objFSO.FileExists(strComputerList) then
		ShowStatus.InnerHTML="<p>File not found: " & strComputerList & "</p>"
		exit sub
	end if
	set objFile=objFSO.OpenTextFile(strComputerList, 1)
	i=0
	while not objFile.AtEndOfStream
		redim preserve arrComputers(i)
		arrcomputers(i)=objFile.ReadLine
		i=i+1
	wend
	objFile.Close
	
	strHTML=CheckComputers(arrComputers)
	ShowStatus.InnerHTML=""
	Results.InnerHTML=strHTML
	GetOptions.InnerHTML=""
end sub
 
function CheckComputers(arrList) 
	dim strResults, strComputer
	dim i
	 
	strResults = "<table width='90%' border=1>"
	strResults = strResults & VbCrLf & "<tr><th>Hostname</th><th>Status</th><th>IP Address</th><th>Logged On User</th><th>Total Space</th><th>%free Space</th><th>Total Mem</th></tr>"
	' Read list of computers and get reports
	for i=0 to ubound(arrList)
		strComputer = arrList(i)
		ShowStatus.InnerHTML="<p>Checking computer: " & strComputer & "</p>"
		If strComputer <> "" Then
			strResults = strResults & VbCrLf & "<tr><td>" & strComputer & "</td>"
			If Ping(strComputer) = True Then
				strResults = strResults & "<td><FONT COLOR=RED>" & CheckHardDriveEvents(strComputer) & "</FONT></td>"
				strResults = strResults & "<td>" & GetIPAddress(strComputer) & "</td>"
				strResults = strResults & "<td>" & GetLoggedOnUser(strComputer) & "</td>"
				freespace=GetFreeSpace(strComputer)
				strResults = strResults & "<td>" & GetTotalSpace(strComputer) & "GB"& "</td>"
					if freespace > 5 then
					strResults = strResults & "<td>" & GetFreeSpace(strComputer)& "GB" & "</td>"
					else
					strResults = strResults & "<td><FONT COLOR=RED>" & GetFreeSpace(strComputer)& "GB" & "</font></td>"
					end if
				strResults = strResults & "<td>" & GetTotalMem(strComputer) & "MB"& "</td>"
			Else
				strResults = strResults & "<td align='center' colspan=3>Offline</td>"
			End If
			strResults = strResults & "</tr>"
		End If
	next
	 
	strResults = strResults & VbCrLf & "</table>"
	CheckComputers=strResults
end function
 
function CheckHardDriveEvents(Computer)
	dim objWMIService, colLoggedEvents, strResult
	
	'strResult="Event log check for computer: " & Computer
	'strResult=strResult & vbcrlf & string(Len(strResult), "-") & vbCrLf
 	
	On Error Resume Next
	Set objWMIService = GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & Computer & "\root\cimv2")
	If Err.Number = 0 Then
		Set colLoggedEvents = objWMIService.ExecQuery("Select * from Win32_NTLogEvent Where Logfile = 'System' and EventCode = 7")
		strResult=strResult & ReturnEventDetails(colLoggedEvents, "Disk")
	Else
		strResult=strResult & "WMI Error"
	End If
	Err.Clear
	
	CheckHardDriveEvents = strResult
end function
 
function ReturnEventDetails(colLoggedEvents, RequiredSource)
	dim objEvent, objSWbemDateTime, dicDupCount, dicEventDetails, k
	dim strHTML, strEvent, strResult, intCount, i
	
	set dicDupCount=CreateObject("Scripting.Dictionary")
	set dicEventDetails=CreateObject("Scripting.Dictionary")
	Set objSWbemDateTime = CreateObject("WbemScripting.SWbemDateTime")
	
	For Each objEvent in colLoggedEvents
		if objEvent.SourceName=RequiredSource then
			if not dicDupCount.Exists(objEvent.EventCode & objEvent.SourceName) then
				strEvent = vbCrLf & "Event Code: " & objEvent.EventCode
				strEvent = strEvent & VbCrLf & "Source: " & objEvent.SourceName    
				strEvent = strEvent & VbCrLf & "Message: " & objEvent.Message
				objSWbemDateTime.Value=objEvent.TimeWritten
				strEvent = strEvent &  "Time of first event: " & objSWbemDateTime.GetVarDate
				strEvent = strEvent & VbCrLf & "Type: " & objEvent.Type
				dicDupCount.Add objEvent.EventCode & objEvent.SourceName, "1"
				dicEventDetails.Add objEvent.EventCode & objEvent.SourceName, strEvent
			else
				intCount=dicDupCount(objEvent.EventCode & objEvent.SourceName)+1
				dicDupCount(objEvent.EventCode & objEvent.SourceName)=intCount
			end if
		end if
	Next    
 
	' Now loop through dictionary and add to output
	k=dicDupCount.Keys
	for i=0 to dicDupCount.Count-1
		strResult=strResult & dicEventDetails(k(i))
		strResult=strResult & VbCrLf & "Event count: " & dicDupCount(k(i)) & vbCrLf  & vbCrLf & vbCrLf
	next
	If strResult <> "" Then
		ReturnEventDetails=strResult
	Else
		ReturnEventDetails= "OK" & VbCrLf & VbCrLf
	End If
	set dicDupCount=Nothing
	set dicEventDetails=Nothing
end Function
 
Function Ping(strComputer)
	Dim objShell, boolCode
	Set objShell = CreateObject("WScript.Shell")
	boolCode = objShell.Run("Ping -n 1 -w 300 " & strComputer, 0, True)
	If boolCode = 0 Then
		Ping = True
	Else
		Ping = False
	End If
End Function
 
Function GetIPAddress(sComputer)
	Dim colComputerIP, objWMIService, IPConfig, strIPAddress, intIPCount
	On Error Resume Next
	Set objWMIService = GetObject("winmgmts:" _
	    & "{impersonationLevel=impersonate}!\\" & sComputer & "\root\cimv2")
	If Err.Number = 0 Then
		Set colComputerIP = objWMIService.ExecQuery _
		    ("Select IPAddress from Win32_NetworkAdapterConfiguration")
		strIPAddress = ""
		For Each IPConfig in colComputerIP
			If Not IsNull(IPConfig.IPAddress) Then 
				'strIPAddress = strIPAddress & IPConfig.Description & ": "
		        For intIPCount = LBound(IPConfig.IPAddress) To UBound(IPConfig.IPAddress)
					'strIPAddress = strIPAddress & "IP Address: " & IPConfig.IPAddress(intIPCount) & "~"
					If IPConfig.IPAddress(intIPCount) <> "0.0.0.0" Then
						If strIPAddress = "" Then
							strIPAddress = IPConfig.IPAddress(intIPCount)
						Else
							strIPAddress = strIPAddress & VbCrLf & IPConfig.IPAddress(intIPCount)
						End If
					End If
				Next
			End If
		Next
	Else
		strIPAddress = "WMI Error"
	End If
	Err.Clear
	GetIPAddress = strIPAddress
End Function
 
Function GetLoggedOnUser(sComputer)
	Dim colComputer, objWMIService, objComputer, strUsername
	On Error Resume Next
	Set objWMIService = GetObject("winmgmts:" _
	    & "{impersonationLevel=impersonate}!\\" & sComputer & "\root\cimv2")
	If Err.Number = 0 Then
		Set colComputer = objWMIService.ExecQuery _
		    ("Select * from Win32_ComputerSystem")
		strUsername = ""
		For Each objComputer in colComputer
		    strUserName = objComputer.UserName
		Next
	Else
		strUsername = "WMI Error"
	End If
	Err.Clear
	GetLoggedOnUser = strUsername
End Function



Function GetFreeSpace(sComputer)
Dim colComputer, objWMIService, objLogicalDisk, strspace
On Error Resume Next
Set objWMIService = GetObject("winmgmts:"_
	    & "{impersonationLevel=impersonate}!\\" & sComputer & "\root\cimv2")

If Err.Number = 0 Then
'    SET objLogicalDisk = objWMIService.ExecQuery("Select * from Win32_LogicalDisk WHERE DriveType=3")
'		Set colComputer = objWMIService.ExecQuery _
'		    ("Select * from Win32_LogicalDisk")
 		Set objLogicalDisk = objWMIService.Get("Win32_LogicalDisk.DeviceID='c:'")	
		strspace = ""
		For Each objLogicalDisk in colComputer
		    strspace = objLogicalDisk.FreeSpace
			strtotspace=objLogicalDisk.Size
		Next
	Else
		strspace = "WMI Error"
	End If
	Err.Clear
	GetFreeSpace = int(strspace/1073741824)
End Function

Function GetTotalSpace(sComputer)
Dim colComputer, objWMIService, objLogicalDisk, strspace
On Error Resume Next
Set objWMIService = GetObject("winmgmts:"_
	    & "{impersonationLevel=impersonate}!\\" & sComputer & "\root\cimv2")
If Err.Number = 0 Then
 		Set objLogicalDisk = objWMIService.Get("Win32_LogicalDisk.DeviceID='c:'")	
		strtotspace = ""
		For Each objLogicalDisk in colComputer
		    
			strtotspace=objLogicalDisk.Size
		Next
	Else
		strtotspace = "WMI Error"
	End If
	Err.Clear
GetTotalSpace= int(strtotspace/1073741824)
End Function

Function GetTotalMem(sComputer)
Dim colComputer, objWMIService, objmem, totmem
On Error Resume Next
Set objWMIService = GetObject("winmgmts:"_
	    & "{impersonationLevel=impersonate}!\\" & sComputer & "\root\cimv2")
 If Err.Number = 0 Then
            Set colComputer = objWMIService.ExecQuery _
		    ("Select * from Win32_ComputerSystem")
 		Set objmem = objWMIService.Get("Win32_ComputerSystem")	
		totmem = ""
	For Each objmem in colComputer
			totmem=objmem.TotalPhysicalMemory
		Next
	Else
		totmem = "WMI Error"
	End If
	Err.Clear
GetTotalMem=int((totmem/1024)/1024)' /1073741824)
End Function




</script>
 
<body>
<span id = "GetOptions">
<input type="file" name="ComputerListFile"> 
<input type="button" value="Check computers" name="run_button" onClick="CheckFromFile">
</span>
<span id = "ShowStatus"></span>
<span id = "Results"></span>
</body>
</html>

Open in new window


I use the above script to check on memory , hard disk space etc. . you , of course can remove whatever you do not need.
hope that helps
0
 
LVL 13

Expert Comment

by:stergium
ID: 37780679
i failed to mention that you should copy the code and save it on a file with an .hta extention using a notepad editor.
0
 

Author Closing Comment

by:Robokiller
ID: 37780695
Thank you very much for taking the time to help.
0
 [eBook] Windows Nano Server

Download this FREE eBook and learn all you need to get started with Windows Nano Server, including deployment options, remote management
and troubleshooting tips and tricks

 

Author Comment

by:Robokiller
ID: 37780736
@stergium How would I add more volumes?  Currently it only scans "C" drive.

Thanks in advance, again.

Regards.
0
 
LVL 13

Expert Comment

by:stergium
ID: 37780845
Hello again.
A not so smart solution would be to create functions like GetFreeSpace, GetTotalSpace with the corresponding driver letter.
i'm trying to create a loop though local logical drives.
0
 

Author Comment

by:Robokiller
ID: 37780989
@stergium, thanks, let me know if you make any progress with that, I'm fooling around iwth the script at the moment.  Will give feedback.
0
 
LVL 13

Expert Comment

by:stergium
ID: 37781218
from what i've tested (and actually had the chance to readjust the script for me also) this should give you all of the local hard disks.
<!--stergium Expert-Exchange 2012-->
<head>
<title>stergium Expert-Exchange 2012</title>
<HTA:APPLICATION 
     APPLICATIONNAME="Check Hard Drive Failure Events"
     SCROLL="yes"
     SINGLEINSTANCE="yes"
     WINDOWSTATE="maximize"
>
</head>
 
<script language="VBScript">
  Sub Window_onLoad
        window.resizeTo 400,250
    End Sub 
	
sub CheckFromFile
	dim strComputerList, objFSO, objFile, arrComputers, i
	strComputerList=ComputerListFile.Value
	redim arrComputers(0)
	
	set objFSO=CreateObject("Scripting.FileSystemObject")
	if strComputerList="" then
		ShowStatus.InnerHTML="<p>Please select a file containing a list of computer names, one per line.</p>"
		exit sub
	end if
	if not objFSO.FileExists(strComputerList) then
		ShowStatus.InnerHTML="<p>File not found: " & strComputerList & "</p>"
		exit sub
	end if
	set objFile=objFSO.OpenTextFile(strComputerList, 1)
	i=0
	while not objFile.AtEndOfStream
		redim preserve arrComputers(i)
		arrcomputers(i)=objFile.ReadLine
		i=i+1
	wend
	objFile.Close
	
	strHTML=CheckComputers(arrComputers)
	ShowStatus.InnerHTML=""
	Results.InnerHTML=strHTML
	GetOptions.InnerHTML=""
end sub
 
function CheckComputers(arrList) 
	dim strResults, strComputer
	dim i
	 
	strResults = "<table width='90%' border=1>"
	strResults = strResults & VbCrLf & "<tr><th>Hostname</th><th>Status</th><th>IP Address</th><th>Logged On User</th><th>Total Space</th><th>%free Space</th><th>Total Mem</th></tr>"
	' Read list of computers and get reports
	for i=0 to ubound(arrList)
		strComputer = arrList(i)
		ShowStatus.InnerHTML="<p>Checking computer: " & strComputer & "</p>"
		If strComputer <> "" Then
			strResults = strResults & VbCrLf & "<tr><td>" & strComputer & "</td>"
			If Ping(strComputer) = True Then
				strResults = strResults & "<td><FONT COLOR=RED>" & CheckHardDriveEvents(strComputer) & "</FONT></td>"
				strResults = strResults & "<td>" & GetIPAddress(strComputer) & "</td>"
				strResults = strResults & "<td>" & GetLoggedOnUser(strComputer) & "</td>"
				freespace=GetFreeSpace(strComputer)
				strResults = strResults & "<td>" & GetTotalSpace(strComputer) & "GB"& "</td>"
				
					strResults = strResults & "<td>" & GetFreeSpace(strComputer)& "GB" & "</td>"
					
				strResults = strResults & "<td>" & GetTotalMem(strComputer) & "MB"& "</td>"
			Else
				strResults = strResults & "<td align='center' colspan=3>Offline</td>"
			End If
			strResults = strResults & "</tr>"
		End If
	next
	 
	strResults = strResults & VbCrLf & "</table>"
	CheckComputers=strResults
end function
 
function CheckHardDriveEvents(Computer)
	dim objWMIService, colLoggedEvents, strResult
	
	'strResult="Event log check for computer: " & Computer
	'strResult=strResult & vbcrlf & string(Len(strResult), "-") & vbCrLf
 	
	On Error Resume Next
	Set objWMIService = GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & Computer & "\root\cimv2")
	If Err.Number = 0 Then
		Set colLoggedEvents = objWMIService.ExecQuery("Select * from Win32_NTLogEvent Where Logfile = 'System' and EventCode = 7")
		strResult=strResult & ReturnEventDetails(colLoggedEvents, "Disk")
	Else
		strResult=strResult & "WMI Error"
	End If
	Err.Clear
	
	CheckHardDriveEvents = strResult
end function
 
function ReturnEventDetails(colLoggedEvents, RequiredSource)
	dim objEvent, objSWbemDateTime, dicDupCount, dicEventDetails, k
	dim strHTML, strEvent, strResult, intCount, i
	
	set dicDupCount=CreateObject("Scripting.Dictionary")
	set dicEventDetails=CreateObject("Scripting.Dictionary")
	Set objSWbemDateTime = CreateObject("WbemScripting.SWbemDateTime")
	
	For Each objEvent in colLoggedEvents
		if objEvent.SourceName=RequiredSource then
			if not dicDupCount.Exists(objEvent.EventCode & objEvent.SourceName) then
				strEvent = vbCrLf & "Event Code: " & objEvent.EventCode
				strEvent = strEvent & VbCrLf & "Source: " & objEvent.SourceName    
				strEvent = strEvent & VbCrLf & "Message: " & objEvent.Message
				objSWbemDateTime.Value=objEvent.TimeWritten
				strEvent = strEvent &  "Time of first event: " & objSWbemDateTime.GetVarDate
				strEvent = strEvent & VbCrLf & "Type: " & objEvent.Type
				dicDupCount.Add objEvent.EventCode & objEvent.SourceName, "1"
				dicEventDetails.Add objEvent.EventCode & objEvent.SourceName, strEvent
			else
				intCount=dicDupCount(objEvent.EventCode & objEvent.SourceName)+1
				dicDupCount(objEvent.EventCode & objEvent.SourceName)=intCount
			end if
		end if
	Next    
 
	' Now loop through dictionary and add to output
	k=dicDupCount.Keys
	for i=0 to dicDupCount.Count-1
		strResult=strResult & dicEventDetails(k(i))
		strResult=strResult & VbCrLf & "Event count: " & dicDupCount(k(i)) & vbCrLf  & vbCrLf & vbCrLf
	next
	If strResult <> "" Then
		ReturnEventDetails=strResult
	Else
		ReturnEventDetails= "OK" & VbCrLf & VbCrLf
	End If
	set dicDupCount=Nothing
	set dicEventDetails=Nothing
end Function
 
Function Ping(strComputer)
	Dim objShell, boolCode
	Set objShell = CreateObject("WScript.Shell")
	boolCode = objShell.Run("Ping -n 1 -w 300 " & strComputer, 0, True)
	If boolCode = 0 Then
		Ping = True
	Else
		Ping = False
	End If
End Function
 
Function GetIPAddress(sComputer)
	Dim colComputerIP, objWMIService, IPConfig, strIPAddress, intIPCount
	On Error Resume Next
	Set objWMIService = GetObject("winmgmts:" _
	    & "{impersonationLevel=impersonate}!\\" & sComputer & "\root\cimv2")
	If Err.Number = 0 Then
		Set colComputerIP = objWMIService.ExecQuery _
		    ("Select IPAddress from Win32_NetworkAdapterConfiguration")
		strIPAddress = ""
		For Each IPConfig in colComputerIP
			If Not IsNull(IPConfig.IPAddress) Then 
				'strIPAddress = strIPAddress & IPConfig.Description & ": "
		        For intIPCount = LBound(IPConfig.IPAddress) To UBound(IPConfig.IPAddress)
					'strIPAddress = strIPAddress & "IP Address: " & IPConfig.IPAddress(intIPCount) & "~"
					If IPConfig.IPAddress(intIPCount) <> "0.0.0.0" Then
						If strIPAddress = "" Then
							strIPAddress = IPConfig.IPAddress(intIPCount)
						Else
							strIPAddress = strIPAddress & VbCrLf & IPConfig.IPAddress(intIPCount)
						End If
					End If
				Next
			End If
		Next
	Else
		strIPAddress = "WMI Error"
	End If
	Err.Clear
	GetIPAddress = strIPAddress
End Function
 
Function GetLoggedOnUser(sComputer)
	Dim colComputer, objWMIService, objComputer, strUsername
	On Error Resume Next
	Set objWMIService = GetObject("winmgmts:" _
	    & "{impersonationLevel=impersonate}!\\" & sComputer & "\root\cimv2")
	If Err.Number = 0 Then
		Set colComputer = objWMIService.ExecQuery _
		    ("Select * from Win32_ComputerSystem")
		strUsername = ""
		For Each objComputer in colComputer
		    strUserName = objComputer.UserName
		Next
	Else
		strUsername = "WMI Error"
	End If
	Err.Clear
	GetLoggedOnUser = strUsername
End Function



Function GetFreeSpace(sComputer)
Dim colComputer, objWMIService, objLogicalDisk, strspace , strcaption , temp
On Error Resume Next
Set objWMIService = GetObject("winmgmts:"_
	    & "{impersonationLevel=impersonate}!\\" & sComputer & "\root\cimv2")

If Err.Number = 0 Then
		Set colComputer = objWMIService.ExecQuery _
		    ("Select * from Win32_LogicalDisk", "WQL", _
            wbemFlagReturnImmediately + wbemFlagForwardOnly)
		strspace = ""
		For Each objLogicalDisk in colComputer
		 if objLogicalDisk.DriveType = 3  then
		    strcaption= " " & objLogicalDisk.Caption
			strspace = objLogicalDisk.FreeSpace
			strtotspace=objLogicalDisk.Size
			temp = temp & strcaption & "=>" & int(strspace/1073741824)
		end if
		Next
	Else
		strspace = "WMI Error"
	End If
	Err.Clear
	GetFreeSpace = temp 
'	GetFreeSpace = int(strspace/1073741824)
End Function

Function GetTotalSpace(sComputer)
Dim colComputer, objWMIService, objLogicalDisk, strspace , temp
On Error Resume Next
Set objWMIService = GetObject("winmgmts:"_
	    & "{impersonationLevel=impersonate}!\\" & sComputer & "\root\cimv2")
If Err.Number = 0 Then
Set colComputer = objWMIService.ExecQuery _
		    ("Select * from Win32_LogicalDisk", "WQL", _
            wbemFlagReturnImmediately + wbemFlagForwardOnly)
		strspace = ""
		For Each objLogicalDisk in colComputer
		     if objLogicalDisk.DriveType = 3  then
			 strtotspace=objLogicalDisk.Size
			 strcaption= " " & objLogicalDisk.Caption
			 temp = temp & strcaption & "=>" & int(strtotspace/1073741824)
			 end if
			 Next
	Else
		strtotspace = "WMI Error"
	End If
	Err.Clear
GetTotalSpace= temp 
'GetTotalSpace= temp int(strtotspace/1073741824)
End Function

Function GetTotalMem(sComputer)
Dim colComputer, objWMIService, objmem, totmem , temp
On Error Resume Next
Set objWMIService = GetObject("winmgmts:"_
	    & "{impersonationLevel=impersonate}!\\" & sComputer & "\root\cimv2")
 If Err.Number = 0 Then
            Set colComputer = objWMIService.ExecQuery _
		    ("Select * from Win32_ComputerSystem")
 		Set objmem = objWMIService.Get("Win32_ComputerSystem")	
		totmem = ""
	For Each objmem in colComputer
			totmem=objmem.TotalPhysicalMemory
		Next
	Else
		totmem = "WMI Error"
	End If
	Err.Clear
GetTotalMem=int((totmem/1024)/1024)' /1073741824)
End Function




</script>
 
<body>
<span id = "GetOptions">
<input type="file" name="ComputerListFile"> 
<input type="button" value="Check computers" name="run_button" onClick="CheckFromFile">
</span>
<span id = "ShowStatus"></span>
<span id = "Results"></span>
</body>
</html>

Open in new window

i hope that is what you need.
please feedback.
0
 

Author Comment

by:Robokiller
ID: 37781244
@stergium, absolutely perfect, thank you very much stergium, also, extra thanks for helping me out after I have resolved the issue! Five stars.
0

Featured Post

Free Tool: SSL Checker

Scans your site and returns information about your SSL implementation and certificate. Helpful for debugging and validating your SSL configuration.

One of a set of tools we are providing to everyone as a way of saying thank you for being a part of the community.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

When we purchase storage, we typically are advertised storage of 500GB, 1TB, 2TB and so on. However, when you actually install it into your computer, your 500GB HDD will actually show up as 465GB. Why? It has to do with the way people and computers…
Many businesses neglect disaster recovery and treat it as an after-thought. I can tell you first hand that data will be lost, hard drives die, servers will be hacked, and careless (or malicious) employees can ruin your data.
This video teaches viewers how to encrypt an external drive that requires a password to read and edit the drive. All tasks are done in Disk Utility. Plug in the external drive you wish to encrypt: Make sure all previous data on the drive has been …
With the advent of Windows 10, Microsoft is pushing a Get Windows 10 icon into the notification area (system tray) of qualifying computers. There are many reasons for wanting to remove this icon. This two-part Experts Exchange video Micro Tutorial s…

730 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question