Проверка установленных версий .Net


Учитывая актуальность версии .Net на серверах Exchange (Exchange Server 2013 и .Net), иной раз бывает нужно быстро посмотреть, какая версия .Net стоит и с какими обновлениями.

Вот скрипт переделанный на основе кода взятого с MSDN:

$Source = @" 
using System;
using Microsoft.Win32;

public class dotNetVersions
{
public static void GetUpdateHistory()
{
using (RegistryKey baseKey = RegistryKey.OpenBaseKey(RegistryHive.LocalMachine, RegistryView.Registry32).OpenSubKey(@"
SOFTWARE\Microsoft\Updates"))
{
foreach (string baseKeyName in baseKey.GetSubKeyNames())
{
if (baseKeyName.Contains("
.NET Framework") || baseKeyName.StartsWith("KB") || baseKeyName.Contains(".NETFramework"))
{

using (RegistryKey updateKey = baseKey.OpenSubKey(baseKeyName))
{
string name = (string)updateKey.GetValue("
PackageName", "");
Console.WriteLine(baseKeyName + "
" + name);
foreach (string kbKeyName in updateKey.GetSubKeyNames())
{
using (RegistryKey kbKey = updateKey.OpenSubKey(kbKeyName))
{
name = (string)kbKey.GetValue("
PackageName", "");
Console.WriteLine("
" + kbKeyName + " " + name);

if (kbKey.SubKeyCount > 0)
{
foreach (string sbKeyName in kbKey.GetSubKeyNames())
{
using (RegistryKey sbSubKey = kbKey.OpenSubKey(sbKeyName))
{
name = (string)sbSubKey.GetValue("
PackageName", "");
if (name == "
")
name = (string)sbSubKey.GetValue("
Description", "");
Console.WriteLine("
" + sbKeyName + " " + name);

}
}
}
}
}
}

}
}
}
}

public static void GetVersionFromRegistry()
{
// Opens the registry key for the .NET Framework entry.
using (RegistryKey ndpKey =
RegistryKey.OpenRemoteBaseKey(RegistryHive.LocalMachine, "
").
OpenSubKey(@"
SOFTWARE\Microsoft\NET Framework Setup\NDP\"))
{
// As an alternative, if you know the computers you will query are running .NET Framework 4.5
// or later, you can use:
// using (RegistryKey ndpKey = RegistryKey.OpenBaseKey(RegistryHive.LocalMachine,
// RegistryView.Registry32).OpenSubKey(@"
SOFTWARE\Microsoft\NET Framework Setup\NDP\"))
foreach (string versionKeyName in ndpKey.GetSubKeyNames())
{
if (versionKeyName.StartsWith("
v"))
{

RegistryKey versionKey = ndpKey.OpenSubKey(versionKeyName);
string name = (string)versionKey.GetValue("
Version", "");
string sp = versionKey.GetValue("
SP", "").ToString();
string install = versionKey.GetValue("
Install", "").ToString();
if (install == "
") //no install info, must be later.
Console.WriteLine(versionKeyName + "
" + name);
else
{
if (sp != "
" && install == "1")
{
Console.WriteLine(versionKeyName + "
" + name + " SP" + sp);
}

}
if (name != "
")
{
continue;
}
foreach (string subKeyName in versionKey.GetSubKeyNames())
{
RegistryKey subKey = versionKey.OpenSubKey(subKeyName);
name = (string)subKey.GetValue("
Version", "");
if (name != "
")
sp = subKey.GetValue("
SP", "").ToString();
install = subKey.GetValue("
Install", "").ToString();
if (install == "
") //no install info, must be later.
Console.WriteLine(versionKeyName + "
" + name);
else
{
if (sp != "
" && install == "1")
{
Console.WriteLine("
" + subKeyName + " " + name + " SP" + sp);
}
else if (install == "
1")
{
Console.WriteLine("
" + subKeyName + " " + name);
}

}
string Release = subKey.GetValue("
Release", "").ToString();
if (Release != "
") // Release info.
Console.WriteLine( "
" + "Release " + Release);

}

}
}
}

}


}



"
@

$Comment = @"

Value of the Release DWORD Version

378389`t .NET Framework 4.5
378675`t .NET Framework 4.5.1 installed with Windows 8.1
378758`t .NET Framework 4.5.1 installed on Windows 8, Windows 7 SP1, or Windows Vista SP2
379893`t .NET Framework 4.5.2
"
@

Add-Type -TypeDefinition $Source -Language CSharp

[dotNetVersions]::GetUpdateHistory()

[dotNetVersions]::GetVersionFromRegistry()

$Comment

 

Полезные ссылки:

Installing the .NET Framework 4.5, 4.5.1, and 4.5.2

How to: Determine Which .NET Framework Versions Are Installed

.NET Framework Versions and Dependencies

http://gallery.technet.microsoft.com/scriptcenter/DemoofcallingCand-6ef0cd2b

Реклама

Добавить комментарий

Заполните поля или щелкните по значку, чтобы оставить свой комментарий:

Логотип WordPress.com

Для комментария используется ваша учётная запись WordPress.com. Выход / Изменить )

Фотография Twitter

Для комментария используется ваша учётная запись Twitter. Выход / Изменить )

Фотография Facebook

Для комментария используется ваша учётная запись Facebook. Выход / Изменить )

Google+ photo

Для комментария используется ваша учётная запись Google+. Выход / Изменить )

Connecting to %s

%d такие блоггеры, как: