Solved

Find .NET version through script

Posted on 2006-07-10
7
209 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:mwmiller78
  • 4
  • 2
7 Comments
 
LVL 44

Expert Comment

by:bruintje
Comment Utility
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:mwmiller78
Comment Utility
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
Comment Utility
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
Highfive + Dolby Voice = No More Audio Complaints!

Poor audio quality is one of the top reasons people don’t use video conferencing. Get the crispest, clearest audio powered by Dolby Voice in every meeting. Highfive and Dolby Voice deliver the best video conferencing and audio experience for every meeting and every room.

 

Author Comment

by:mwmiller78
Comment Utility
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:mwmiller78
Comment Utility
Sorry! I did end up getting thatscript to work. Thanks!
0
 

Author Comment

by:mwmiller78
Comment Utility
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

How to run any project with ease

Manage projects of all sizes how you want. Great for personal to-do lists, project milestones, team priorities and launch plans.
- Combine task lists, docs, spreadsheets, and chat in one
- View and edit from mobile/offline
- Cut down on emails

Join & Write a Comment

When designing a form there are several BorderStyles to choose from, all of which can be classified as either 'Fixed' or 'Sizable' and I'd guess that 'Fixed Single' or one of the other fixed types is the most popular choice. I assume it's the most p…
You can of course define an array to hold data that is of a particular type like an array of Strings to hold customer names or an array of Doubles to hold customer sales, but what do you do if you want to coordinate that data? This article describes…
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…
Get people started with the process of using Access VBA to control Outlook using automation, Microsoft Access can control other applications. An example is the ability to programmatically talk to Microsoft Outlook. Using automation, an Access applic…

743 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

Need Help in Real-Time?

Connect with top rated Experts

17 Experts available now in Live!

Get 1:1 Help Now