Обнаружил, на мой взгляд, интересный скрипт, для получения информации о версии Exchange и установленных на нем накопительных пакетов обновлений (Rollup Update). За скрипт спасибо Jason Sherry, а также авторам более ранней версии скрипта Jeff Guillet’s и Paul Faherty.
Этот скрипт выводит на экран список всех серверов, установленных в организации Exchange, с указанием: имени сервера, установленных ролей, основной версии Exchange, а также список установленных на сервере накопительных пакетов обновлений (Rollup Update).
Этот скрипт полезен тем, что позволяет узнать различия в установленных обновлениях на серверах Exchange в организации, если по каким-либо причинам такое могло произойти. Для того, чтобы запустить скрипт достаточно его запустить на машине с установленным Exchange Management Shell или на одном из серверов Exchange.
Данный скрипт корректно работает для версий Exchange 2007, 2010 и 2013.
# This script will get the Exchange 2007+ version and Update Rollup numbers
# Source: http://izzy.org/scripts/Exchange/Admin/Get-ExchangeVer.ps1
# Created by Paul Flaherty, v 1.2 source from Jeff Guillet 9/17/2009
# Orginal source: http://www.expta.com/2009/05/powershell-script-to-get-exchange.html
# Modifed by Jason Sherry | Last Updated: 10/22/2012 | Version 1.2
# 05/15/2011 1.1 - Added logging to a file
# 12/27/2022 2.0 - Changed code to match latest 1.2 code from Jeff Guillet and added support for Exchange 2010 and 2013
#Get a list of Exchange Server in the Org excluding Edge servers
$MsxServers = Get-ExchangeServer | where {$_.ServerRole -ne "Edge"} | sort Name
$filename = "MBServerVer-Info.txt"
#Loop through each Exchange server that is found
ForEach ($MsxServer in $MsxServers)
{
#Get Exchange server version
$MsxVersion = $MsxServer.ExchangeVersion
#Create "header" string for output
# Servername [Role] [Edition] Version Number
$txt1 = $MsxServer.Name + " [" + $MsxServer.ServerRole + "] [" + $MsxServer.Edition + "] " + $MsxServer.AdminDisplayVersion #$MsxVersion.ExchangeBuild.toString()
$txt1 | Out-File -FilePath $FileName -Append
write-host $txt1
$Version= $MsxServer.AdminDisplayVersion
If ($Version -Like "Version 8*") {
$key = "SOFTWARE\Microsoft\Windows\CurrentVersion\Installer\UserData\S-1-5-18\Products\461C2B4266EDEF444B864AD6D9E5B613\Patches\"
$Version = 2007}
If ($Version -Like "Version 14*") {
$key = "SOFTWARE\Microsoft\Windows\CurrentVersion\Installer\UserData\S-1-5-18\Products\AE1D439464EB1B8488741FFA028E291C\Patches\"
$Version = 2010}
If ($Version -Like "Version 15*") {
$key = "SOFTWARE\Microsoft\Windows\CurrentVersion\Installer\UserData\S-1-5-18\Products\AE1D439464EB1B8488741FFA028E291C\Patches\"
$Version = 2013}
#Connect to the Server's remote registry and enumerate all subkeys listed under "Patches"
$Srv = $MsxServer.Name
$type = [Microsoft.Win32.RegistryHive]::LocalMachine
$regKey = [Microsoft.Win32.RegistryKey]::OpenRemoteBaseKey($type, $Srv)
$regKey = $regKey.OpenSubKey($key)
#Loop each of the subkeys (Patches) and gather the Installed date and Displayname of the Exchange patch
$ErrorActionPreference = "SilentlyContinue"
ForEach($sub in $regKey.GetSubKeyNames())
{
$SUBkey = $key + $Sub
$SUBregKey = [Microsoft.Win32.RegistryKey]::OpenRemoteBaseKey($type, $Srv)
$SUBregKey = $SUBregKey.OpenSubKey($SUBkey)
ForEach($SubX in $SUBRegkey.GetValueNames())
{
# Display Installed date and Displayname of the Exchange 2007 patch
Installed = ""
IF ($Subx -eq "Installed") {
$Installed = $SUBRegkey.GetValue($SubX)
$Installed = $Installed.substring(4,2) + "/" + $Installed.substring(6,2) + "/" + $Installed.substring(0,4)
}
$DisplayName = ""
IF ($Subx -eq "DisplayName") {
$DisplayName = $SUBRegkey.GetValue($SubX) }
If ($Installed -ne "" -And $DisplayName -ne "") {
Write-Host "`t$Installed : $DisplayName"
"`t$Installed : $DisplayName" | Out-File -FilePath $FileName -Append }
}
}
write-host ""
}
Скачать скрипт можно по ссылке:
Get-ExchangeServerVersion.zip (1,4 КиБ, 309 hits)
Get-ExchangeServerVersion.ps1 (3,1 КиБ, 1 100 hits)
Конечно, существуют и другие способы определения установленных обновлений на Exchange, например:
- Просмотр информации об установленных продуктах на сервере: Control Panel –> Programs and Features –> View Installed Updates:
- В Exchange Management Console открыть в меню Help –> About Exchange Server 2010
- По версии файла ExSetup.exe, расположенного по умолчанию C:\Program Files\Microsoft\Exchange Server\V14\Bin:
Однако для второго и третьего случаев можно определить версию крайнего обновления, хотя, наверное, это и есть необходимая информация. Но для того чтобы определить какой именно RU, был установлен придется воспользоваться таблице номеров билдов Exchange на странице: http://technet.microsoft.com/en-us/library/hh135098%28v=exchg.141%29.aspx или http://social.technet.microsoft.com/wiki/contents/articles/240.exchange-server-and-update-rollups-build-numbers.aspx
Как найти актуальные версии Microsoft Exchange server можно в статье: Exchange Server: версии билдов и даты релизов



