Solved

Find .NET version through script

Posted on 2006-07-10
7
220 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 500 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
PeopleSoft Has Never Been Easier

PeopleSoft Adoption Made Smooth & Simple!

On-The-Job Training Is made Intuitive & Easy With WalkMe's On-Screen Guidance Tool.  Claim Your Free WalkMe Account Now

 

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

I’ve seen a number of people looking for examples of how to access web services from VB6.  I’ve been using a test harness I built in VB6 (using many resources I found online) that I use for small projects to work out how to communicate with web serv…
If you need to start windows update installation remotely or as a scheduled task you will find this very helpful.
Get people started with the utilization of class modules. Class modules can be a powerful tool in Microsoft Access. They allow you to create self-contained objects that encapsulate functionality. They can easily hide the complexity of a process from…
Show developers how to use a criteria form to limit the data that appears on an Access report. It is a common requirement that users can specify the criteria for a report at runtime. The easiest way to accomplish this is using a criteria form that a…

696 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