Updated : Exchange version powershell script
Further to my blog post on April 30th, I have updated the powershell script to output in a more usable manner and also detect more information about your exchange servers…
ServerName | TransportVer | CASver | StoreVer |
SERVER1 | 08.01.0336.000 | 08.01.0336.000 | Not Installed |
SERVER2 | 08.01.0336.000 | 08.01.0336.000 | Not Installed |
SERVER3 | 08.01.0336.000 | 08.01.0336.002 | Not Installed |
SERVER4 | 08.01.0336.000 | 08.01.0336.002 | Not Installed |
SERVER5 | 08.01.0336.000 | 08.01.0336.002 | Not Installed |
SERVER6 | 08.01.0336.000 | 08.01.0336.002 | Not Installed |
SERVER7 | 08.01.0336.000 | 08.01.0336.000 | Not Installed |
SERVER8 | 08.01.0336.000 | 08.01.0336.000 | Not Installed |
SERVER9 | 08.01.0336.000 | 08.01.0336.002 | Not Installed |
SERVER10 | 08.01.0336.000 | 08.01.0336.002 | Not Installed |
SERVER11 | 08.01.0336.000 | 08.01.0336.002 | Not Installed |
SERVER12 | 08.01.0336.000 | 08.01.0336.002 | Not Installed |
SERVER13 | Not Installed | Not Installed | 08.01.0336.000 |
SERVER14 | 08.01.0336.000 | 08.01.0336.002 | Not Installed |
SERVER15 | 08.01.0336.000 | 08.01.0336.002 | Not Installed |
SERVER16 | 08.01.0336.000 | 08.01.0336.002 | Not Installed |
SERVER17 | 08.01.0336.000 | 08.01.0336.002 | Not Installed |
SERVER18 | Not Installed | Not Installed | 08.01.0336.000 |
SERVER19 | 08.01.0336.000 | 08.01.0336.002 | Not Installed |
SERVER20 | 08.01.0336.000 | 08.01.0336.002 | Not Installed |
SERVER21 | 08.01.0336.000 | 08.01.0336.002 | Not Installed |
SERVER22 | 08.01.0336.000 | 08.01.0336.002 | Not Installed |
SERVER23 | 08.01.0336.000 | 08.01.0336.000 | Not Installed |
SERVER24 | 08.01.0336.000 | 08.01.0336.000 | Not Installed |
SERVER25 | 08.01.0336.000 | 08.01.0336.000 | Not Installed |
SERVER26 | 08.01.0336.000 | 08.01.0336.000 | Not Installed |
SERVER27 | 08.01.0336.000 | 08.01.0336.000 | Not Installed |
SERVER28 | 08.01.0336.000 | 08.01.0336.000 | Not Installed |
Powershell Code…
$exservers = get-exchangeserver
function MakeData($server,$transportver,$casver,$storever) {
$data1 = $server
$data2 = $transportver
$data3 = $casver
$data4 = $storever
$out = new-object psobject
$out | add-member noteproperty ServerName $data1
$out | add-member noteproperty TransportVer $data2
$out | add-member noteproperty CASver $data3
$out | add-member noteproperty StoreVer $data4
write-output $out
}
foreach ($server in $exservers)
{
#
# We need to test for three occurrences here
#
# To get around cluster share scoping we need to query this via IP...
$ping = new-object System.Net.NetworkInformation.Ping
$reply = $ping.send("$server")
if ($reply.status -ne "success")
{
#
# Sometimes if the server is distant the first ping fails
# this is just a last chance to see if its really down...
#
$reply = $ping.send("$server")
$reply = $ping.send("$server")
}
$ipaddress = $reply.address
if ($reply.status -eq "success")
{
#
# Check Store Version
#
if (Test-Path -path "\\$ipaddress\c$\program files\microsoft\exchange server\bin\store.exe")
{
$storever = [System.Diagnostics.FileVersionInfo]::GetVersionInfo("\\$ipaddress\c$\program files\microsoft\exchange server\bin\store.exe").Fileversion
}
else
{
$storever = "Not Installed"
}
#
# Check Transport Version
#
if (Test-Path -path "\\$ipaddress\c$\program files\microsoft\exchange server\TransportRoles\data")
{
$transportver = [System.Diagnostics.FileVersionInfo]::GetVersionInfo("\\$ipaddress\c$\program files\microsoft\exchange server\bin\EdgeTransport.exe").Fileversion
}
else
{
$transportver = "Not Installed"
}
#
# Check Client Access Version
#
if (Test-Path -path "\\$ipaddress\c$\Program Files\Microsoft\Exchange Server\ClientAccess\Owa\Bin\Microsoft.Exchange.Clients.Owa.dll")
{
$casver = [System.Diagnostics.FileVersionInfo]::GetVersionInfo("\\$ipaddress\c$\Program Files\Microsoft\Exchange Server\ClientAccess\Owa\Bin\Microsoft.Exchange.Clients.Owa.dll").Fileversion
}
else
{
$casver = "Not Installed"
}
MakeData $server $transportver $casver $storever
}
else
{
$transportver = "down"
$casver = "down"
$storever = "down"
MakeData $server $transportver $casver $storever
}
}
Posted by Neil Johnson , MCS UK, MCM Exchange 2007