?
Solved

Find .NET version through script

Posted on 2006-07-10
7
Medium Priority
?
223 Views
Last Modified: 2008-01-09
Does anyone have a script that I could run to tell me what version of .NET framework is installed on a client machine?
0
Comment
Question by:Mike Miller
[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
  • 2
7 Comments
 
LVL 44

Expert Comment

by:bruintje
ID: 17073835
Hi mwmiller78,
----------

there is a script posted here
http://66.249.93.104/search?q=cache:0cI8uxtfW7UJ:www.codecomments.com/archive299-2005-10-658987.html

----------
bruintje
share what you know, learn what you don't
0
 

Author Comment

by:Mike Miller
ID: 17074406
Here's what i've got...

On Error Resume Next

Const wbemFlagReturnImmediately = &h10
Const wbemFlagForwardOnly = &h20


WScript.Echo " =========================================="
WScript.Echo "Computer: " & strComputer
WScript.Echo " =========================================="

strExecQuery = "SELECT * FROM Win32_SoftwareElement where Manufacturer = 'Microsoft'"

Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\CIMV2")
Set colItems = objWMIService.ExecQuery(strExecQuery, "WQL", wbemFlagReturnImmediately + wbemFlagForwardOnly)

For Each objItem In colItems

If InStr(1, objItem.Path, "Microsoft.NET\Framework", 1) <> 0 And InStr(1, objItem.Path, "mscoree", 1) <> 0 Then

WScript.Echo "Dot.Net Framework Version: " & objItem.Version

End If
Next


It's skipping over the .NET part for some reason
0
 
LVL 44

Accepted Solution

by:
bruintje earned 2000 total points
ID: 17074558
you are right that one is not giving me anything but errors, found a working script here

http://www.visualbasicscript.com/m_35340/tm.htm
0
What does it mean to be "Always On"?

Is your cloud always on? With an Always On cloud you won't have to worry about downtime for maintenance or software application code updates, ensuring that your bottom line isn't affected.

 

Author Comment

by:Mike Miller
ID: 17076042
Ok here's what I've got now...

Dim OutPutFile
Dim FileSystem
Set FileSystem = WScript.CreateObject("Scripting.FileSystemObject")
Set OutPutFile = FileSystem.CreateTextFile("dotnet.txt", True)

OutPutFile.WriteLine ".NET Framework 2.0 Version " & GetDotNet("2.0")
OutPutFile.WriteLine ".NET Framework 1.1 Version " & GetDotNet("1.1")
OutPutFile.WriteLine ".NET Framework 1.0 Version " & GetDotNet("1.0")

Function GetDotNet(dnVer)
'Requires Function CompareVersion
Dim Fso : Set Fso = CreateObject("Scripting.FileSystemObject")
   Dim frameWorkFolder
   frameWorkFolder = fso.GetSpecialFolder(0) & "\Microsoft.NET\Framework" '0=WindowsFolder
   
   If dnVer = "2.0" Then
       If fso.FolderExists(frameWorkFolder & "\v2.0.50727") AND fso.FileExists(frameWorkFolder & "\v2.0.50727\Mscorlib.dll") Then
           If CompareVersion(fso.GetFileVersion(frameWorkFolder & "\v2.0.50727\Mscorlib.dll"),"2.0.50727.42") = 0 Then
               GetDotNet = "RTM is installed on machine "
           Else
               GetDotNet = "- unknown is installed on machine "
           End If
       Else
           GetDotNet = "is not installed on machine "
       End If
   End If
   
   If dnVer = "1.1" Then
       If fso.FolderExists(frameWorkFolder & "\v1.1.4322") And Fso.FileExists(frameWorkFolder & "\v1.1.4322\Mscorlib.dll") Then
           If CompareVersion(fso.GetFileVersion(frameWorkFolder & "\v1.1.4322\Mscorlib.dll"),"1.1.4322.573") = 0 Then
               GetDotNet = "RTM"
           ElseIf CompareVersion(fso.GetFileVersion(frameWorkFolder & "\v1.1.4322\Mscorlib.dll"),"1.1.4322.2032") = 0 Or _
               CompareVersion(fso.GetFileVersion(frameWorkFolder & "\v1.1.4322\Mscorlib.dll"),"1.1.4322.2300") = 0 Then
               GetDotNet = "SP1 is installed on machine "
           Else
               GetDotNet = "- unknown is installed on machine "
           End If
       Else
           GetDotNet = "is not installed on machine "
       End If
   End If
   
   If dnVer = "1.0" then
       If fso.FolderExists(frameWorkFolder & "\v1.0.03705") AND fso.FileExists(frameWorkFolder & "\v1.0.03705\Mscorlib.dll") Then
           If CompareVersion(fso.GetFileVersion(frameWorkFolder & "\v1.0.03705\Mscorlib.dll"),"1.0.3705.0") = 0 Then
               GetDotNet = "RTM"
           ElseIf CompareVersion(fso.GetFileVersion(frameWorkFolder & "\v1.0.03705\Mscorlib.dll"),"1.0.3705.209") = 0 Then
               GetDotNet = "SP1"
           ElseIf CompareVersion(fso.GetFileVersion(frameWorkFolder & "\v1.0.03705\Mscorlib.dll"),"1.0.3705.288") = 0 Then
               GetDotNet = "SP2"
           ElseIf CompareVersion(fso.GetFileVersion(frameWorkFolder & "\v1.0.03705\Mscorlib.dll"),"1.0.3705.6018") = 0 Then
               GetDotNet = "SP3 is installed on machine "
           Else
               GetDotNet = "- unknown is installed on machine "
           End If
       Else
           GetDotNet = "is not installed on machine "   
       End If
   End If

End Function

Function CompareVersion(ByVal strVersion1, ByVal strVersion2)
   Dim v1, v2, t1, t2
   'Returns -1 if strVersion1<strVersion2
   'Returns 1 if strVersion1>strVersion2
   'Returns 0 if strVersion1=strVersion2
   CompareVersion = 0
   If strVersion1="" Or strVersion2="" Then
       If strVersion1<strVersion2 Then
           CompareVersion = -1
           Exit Function
       Else
           If v1>v2 Then
               CompareVersion = 1
               Exit Function
           Else
               CompareVersion = 0
               Exit Function
           End If
       End If
   End If
   t1 = Instr(strVersion1, ".")
   If t1 = 0 Then t1 = Len(strVersion1)+1
   t2 = Instr(strVersion2, ".")
   If t2 = 0 Then t2 = Len(strVersion2)+1
   Do While True
       v1 = CLng(Left(strVersion1,t1-1))
       v2 = CLng(Left(strVersion2,t2-1))
       If v1<v2 Then
           CompareVersion = -1
           Exit Function
       Else
           If v1>v2 Then
               CompareVersion = 1
               Exit Function
           End If
       End iF
       strVersion1 = Mid(strVersion1,t1+1)
       strVersion2 = Mid(strVersion2,t2+1)
       If strVersion1="" Or strVersion2="" Then
           If strVersion1<strVersion2 Then
               CompareVersion = -1
               Exit Function
           Else
               If v1>v2 Then
                   CompareVersion = 1
                   Exit Function
               Else
                   CompareVersion = 0
                   Exit Function
               End If
           End If
       End iF
       t1 = Instr(strVersion1, ".")
       If t1 = 0 Then t1 = Len(strVersion1)+1
       t2 = Instr(strVersion2, ".")
       If t2 = 0 Then t2 = Len(strVersion2)+1
   Loop
End Function


It works fine. I've been playing around with it a bit. I'd like to be able to have it look at AD and run this script on the machines from that list. I can't get anything to
work though. So basically I want to use the code above to check all the computers on a network.
0
 

Author Comment

by:Mike Miller
ID: 17295888
Sorry! I did end up getting thatscript to work. Thanks!
0
 

Author Comment

by:Mike Miller
ID: 17295899
If anyone cares, here's the final product. Works great!

Dim OutPutFile
Dim FileSystem
Set FileSystem = WScript.CreateObject("Scripting.FileSystemObject")
Set OutPutFile = FileSystem.CreateTextFile("dotnet.txt", True)

OutPutFile.WriteLine ".NET Framework 2.0 Version " & GetDotNet("2.0")
OutPutFile.WriteLine ".NET Framework 1.1 Version " & GetDotNet("1.1")
OutPutFile.WriteLine ".NET Framework 1.0 Version " & GetDotNet("1.0")

Function GetDotNet(dnVer)
'Requires Function CompareVersion
Dim Fso : Set Fso = CreateObject("Scripting.FileSystemObject")
   Dim frameWorkFolder
   frameWorkFolder = fso.GetSpecialFolder(0) & "\Microsoft.NET\Framework" '0=WindowsFolder
   
   If dnVer = "2.0" Then
       If fso.FolderExists(frameWorkFolder & "\v2.0.50727") AND fso.FileExists(frameWorkFolder & "\v2.0.50727\Mscorlib.dll") Then
           If CompareVersion(fso.GetFileVersion(frameWorkFolder & "\v2.0.50727\Mscorlib.dll"),"2.0.50727.42") = 0 Then
               GetDotNet = "RTM is installed on machine "
           Else
               GetDotNet = "- unknown is installed on machine "
           End If
       Else
           GetDotNet = "is not installed on machine "
       End If
   End If
   
   If dnVer = "1.1" Then
       If fso.FolderExists(frameWorkFolder & "\v1.1.4322") And Fso.FileExists(frameWorkFolder & "\v1.1.4322\Mscorlib.dll") Then
           If CompareVersion(fso.GetFileVersion(frameWorkFolder & "\v1.1.4322\Mscorlib.dll"),"1.1.4322.573") = 0 Then
               GetDotNet = "RTM"
           ElseIf CompareVersion(fso.GetFileVersion(frameWorkFolder & "\v1.1.4322\Mscorlib.dll"),"1.1.4322.2032") = 0 Or _
               CompareVersion(fso.GetFileVersion(frameWorkFolder & "\v1.1.4322\Mscorlib.dll"),"1.1.4322.2300") = 0 Then
               GetDotNet = "SP1 is installed on machine "
           Else
               GetDotNet = "- unknown is installed on machine "
           End If
       Else
           GetDotNet = "is not installed on machine "
       End If
   End If
   
   If dnVer = "1.0" then
       If fso.FolderExists(frameWorkFolder & "\v1.0.03705") AND fso.FileExists(frameWorkFolder & "\v1.0.03705\Mscorlib.dll") Then
           If CompareVersion(fso.GetFileVersion(frameWorkFolder & "\v1.0.03705\Mscorlib.dll"),"1.0.3705.0") = 0 Then
               GetDotNet = "RTM"
           ElseIf CompareVersion(fso.GetFileVersion(frameWorkFolder & "\v1.0.03705\Mscorlib.dll"),"1.0.3705.209") = 0 Then
               GetDotNet = "SP1"
           ElseIf CompareVersion(fso.GetFileVersion(frameWorkFolder & "\v1.0.03705\Mscorlib.dll"),"1.0.3705.288") = 0 Then
               GetDotNet = "SP2"
           ElseIf CompareVersion(fso.GetFileVersion(frameWorkFolder & "\v1.0.03705\Mscorlib.dll"),"1.0.3705.6018") = 0 Then
               GetDotNet = "SP3 is installed on machine "
           Else
               GetDotNet = "- unknown is installed on machine "
           End If
       Else
           GetDotNet = "is not installed on machine "   
       End If
   End If

End Function

Function CompareVersion(ByVal strVersion1, ByVal strVersion2)
   Dim v1, v2, t1, t2
   'Returns -1 if strVersion1<strVersion2
   'Returns 1 if strVersion1>strVersion2
   'Returns 0 if strVersion1=strVersion2
   CompareVersion = 0
   If strVersion1="" Or strVersion2="" Then
       If strVersion1<strVersion2 Then
           CompareVersion = -1
           Exit Function
       Else
           If v1>v2 Then
               CompareVersion = 1
               Exit Function
           Else
               CompareVersion = 0
               Exit Function
           End If
       End If
   End If
   t1 = Instr(strVersion1, ".")
   If t1 = 0 Then t1 = Len(strVersion1)+1
   t2 = Instr(strVersion2, ".")
   If t2 = 0 Then t2 = Len(strVersion2)+1
   Do While True
       v1 = CLng(Left(strVersion1,t1-1))
       v2 = CLng(Left(strVersion2,t2-1))
       If v1<v2 Then
           CompareVersion = -1
           Exit Function
       Else
           If v1>v2 Then
               CompareVersion = 1
               Exit Function
           End If
       End iF
       strVersion1 = Mid(strVersion1,t1+1)
       strVersion2 = Mid(strVersion2,t2+1)
       If strVersion1="" Or strVersion2="" Then
           If strVersion1<strVersion2 Then
               CompareVersion = -1
               Exit Function
           Else
               If v1>v2 Then
                   CompareVersion = 1
                   Exit Function
               Else
                   CompareVersion = 0
                   Exit Function
               End If
           End If
       End iF
       t1 = Instr(strVersion1, ".")
       If t1 = 0 Then t1 = Len(strVersion1)+1
       t2 = Instr(strVersion2, ".")
       If t2 = 0 Then t2 = Len(strVersion2)+1
   Loop
End Function
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

The debugging module of the VB 6 IDE can be accessed by way of the Debug menu item. That menu item can normally be found in the IDE's main menu line as shown in this picture.   There is also a companion Debug Toolbar that looks like the followin…
Most everyone who has done any programming in VB6 knows that you can do something in code like Debug.Print MyVar and that when the program runs from the IDE, the value of MyVar will be displayed in the Immediate Window. Less well known is Debug.Asse…
As developers, we are not limited to the functions provided by the VBA language. In addition, we can call the functions that are part of the Windows operating system. These functions are part of the Windows API (Application Programming Interface). U…
This lesson covers basic error handling code in Microsoft Excel using VBA. This is the first lesson in a 3-part series that uses code to loop through an Excel spreadsheet in VBA and then fix errors, taking advantage of error handling code. This l…
Suggested Courses

649 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