[Okta Webinar] Learn how to a build a cloud-first strategyRegister Now

x
?
Solved

Find .NET version through script

Posted on 2006-07-10
7
Medium Priority
?
224 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
  • 4
  • 2
6 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
Concerto's Cloud Advisory Services

Want to avoid the missteps to gaining all the benefits of the cloud? Learn more about the different assessment options from our Cloud Advisory team.

 

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

Technology Partners: We Want Your Opinion!

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

Question has a verified solution.

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

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…
Get people started with the process of using Access VBA to control Excel using automation, Microsoft Access can control other applications. An example is the ability to programmatically talk to Excel. Using automation, an Access application can laun…
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…
Suggested Courses
Course of the Month18 days, 20 hours left to enroll

834 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