25 stycznia 2014

Klienci Office 365 – zapomnijcie o Windows XP i Office 2007

Jakiś czas temu Tony Redmond napisał ciekawy artykuł o problemach z Internet Explorerem 8 po zainstalowaniu CU3 do Exchange. zarówno na tenancie Office 365 jak i Exchange 2013 CU3 on-premises. Przez dłuższy czas miałem nadzieję, że jest to tymczasowy problem, jednakże po zapoznaniu się z informacjami o zasadach wsparcia pakietów Office i Internet Explorer na stronie Wiki Office365 https://technet.microsoft.com/en-us/library/office-365-system-requirements.aspx okazuje się, że prawda jest jeszcze gorsza, niż można by się spodziewać. Z zapisów na stronie jasno wynika, że wspierane są tylko wersje Office objęte pełnym wsparciem (mainstream support). Kilka akapitów niżej jasno jest wyjaśnione dla osób, które nie zrozumiały tego zapisu, że ponieważ Mainstream support skończył się w 2012 roku, to nie będzie poprawiany kod aplikacji w przypadku znalezienia błędów zgodności z Office 2007 i z biegem czasu współpraca będzie coraz słabsza. Podobnie sytuacja wygląda z przeglądarkami Internet Explorer 8, a nawet Internet Explorer 9.
Niestety oznacza to kłopoty dla firm, które jeszcze używają Windows XP i nie zdążą przed kwietniem się zaktualizować do Windows 7, a które chcą używać najnowszej wersji Exchange lub kupiły subskrypcję Office365. Najtaniej i najszybciej można pozbyć się kłopotów wdrażając Chrome lub Firefoxa na komputerach w domenie. Ostatnio poprawiły się możliwości centralnego zarządzania Chrome poprzez Group Policy - Chrome policies for devices i Chrome policies for users, można także znaleźć szablony administracyjne dla Firefoxa. Jednak nadal możliwości zarządzania są uboższe niż ma to miejsce w przypadku Internet Explorera. Ale znam firmy w Polsce, które nie mogąc opuścić platformy XP zdecydowały się na migrację przeglądarek do Chroma. W końcu nie tylko Exchange 2013 nie działą poprawnie w IE8.
Dura lex, sed lex, jak mawiali Rzymianie. Musimy aktualizować systemy i aplikacje, bo świat nie stoi w miejscu, a Microsoft nie ogląda się na maruderów.

24 stycznia 2014

Kemp Load Master dla Azure – nowa odsłona

Kiedy na konferencji preMTS prezentowałem publikację farmy serwerów Exchange działającej w Azure przez bezpłatny load balancer Kemp LoadMaster for Azure byłem zadowolony. Wszystko działało dobrze. Instrukcja wdrożenia jest prosta i przejrzysta, (są nawet filmiki video dla opornych). Jednakże czas, potrzebny do pobrania obrazu dysku vhd z LoadMasterem, a następnie załadowania go do Azura był bardzo długi.Jednakże, kiedy ostatnio chciałem zaktualizować firmware, dowiedziałem się, że dużo szybciej można przeprowadzić wdrożenie korzystając z biblioteki obrazów VMDepot, gdzie Bhagrav Shukla wrzucił obraz maszyny z aktualną wersją firmware. Ścieżka ta jak na razie nie jest opisana w dokumentacji Kempa, więc parę słów warto jej poświęcić.

Po zalogowaniu się do panelu administracyjnego swojej subskrypcji Azure w lewym pasku wybieramy pozycję “Virtual Machines”, a następnie w prawym oknie przechodzimy do zakładki “Images”. W tym momencie na środku okna, na dolnym pasku widzimy pozycję “Browse VM Depot” (jak na poniższym rysunku).

Azure-VirtualMachinesImages

Po kliknięciu pojawia nam się przeglądarka wszystkich obrazów dysków, które zostały zaimportowane do VM Depotu.

VM Depot - Kemp Load Master

Możemy kliknąć More, żeby przejść do VM Depotu i przeczytać dodatkowe informacje (kolejny rysunek), lub kliknąć strzałeczkę w prawym dolnym rogu, żeby przejść do okna zatwierdzenia wyboru.

Kemp LoadMaster 4 Azure on VMDepot

Teraz tylko musimy wybrać region, gdzie mamy utworzone swoje konto składowania danych i zatwierdzić wybór klikając na “ptaszku” w prawym, dolnym rogu.

VM Depot - wybór miejsca skopiowania obrazu

Kopiowanie obrazu trwa tylko 1 minutę (w odróżnieniu od kilkugodzinnego uploadu do chmury ze swojego komputera).

Image from VM Depot Copied

Teraz tylko wystarczy zarejestrować obraz maszyny. Na dolnym pasku pojawił się przycisk “Register”. Po kliknięciu możemy zmienić nazwę obrazu i url do VHD.

VHD - Registering an image

Ostatnim krokiem jest dodanie maszyny wirtualnej z zaimportowanego do Azure’a obrazu. Ale to robimy już standardowo, jak przy każdym innym obrazie.

09 stycznia 2014

Styczniowe poprawki dla serwerów i klientów Lynca

Wczoraj Microsoft opublikował aktualizacje dla większości produktów z linii Lynca, łącznie z klientami, dodatkowymi narzędziami i oprogramowaniem dla telefonów:

Produkt

Wersja

Artykuł KB z linkiem do pobrania

Lync Server 2013

5.0.8308.577

2809243

Lync Server 2013 Debugging Tools

5.0.8308.577

2905051

Lync Server 2013 Resource Kit Tools

5.0.8308.577

2905053

Lync 2010 (64bit client)

4.0.7577.4419

2912208

Lync 2010 (32bit client)

4.0.7577.4419

2912208

Lync Server 2010

4.0.7577.225

2493736

Lync Phone Edition (for Aastra 6721ip and Aastra 6725ip)

4.0.7577.4420

2918033

Lync Phone Edition (for HP 4110 and HP 4120)

4.0.7577.4420

2918035

Lync Phone Edition (for Polycom CX500, Polycom CX600, and Polycom CX3000)

4.0.7577.4420

2918038

Lync Phone Edition (for Polycom CX700 and LG-Nortel IP Phone 8540)

4.0.7577.4420

2889244

06 stycznia 2014

Sprawdzanie i włączanie komponentów Exchange raz jeszcze

Niedawno pisałem na tym blogu o sprawdzaniu komponentów serwera Exchange. Ponieważ standardowe cmdlety niezbyt wygodnie prezentują stan komponentów, zacząłem używać skryptu, który opublikował na swoim blogu Michael Van Horenbeeck. Jednak oryginalny skrypt tylko sprawdzał stan komponentów, więc postarałem się go trochę rozbudować. Wykorzystałem do tego funkcję get-choice, opracowaną dwa lata wcześniej przez Andy Schneidera. Oczywiście można to zrobić na wiele sposobów, ale uznałem, że wygodnie będzie dać możliwość wyboru, czy na pewno chcemy dany komponent ponownie aktywować. Jeżeli znajdę czas ja albo Michael to skrypt będzie rozbudowany.

Poniżej skrypt:

<#
.SYNOPSIS
Checks component state of local Exchange
2013 server and give choice to activate any inactive component
.DESCRIPTION
Checks component state of local Exchange
2013 server. You have choice to activate any inactive component
.NOTES
Prepared by Konrad Sagala
Sched Task Required : No
Exchange Version :
2013
Disclaimer : You running this script means you won't blame me
if this breaks your stuff.
Code used
in script : First version of this script prepared by Michael Van Horenbeeck, function new-choice by Andy Schneider
.LINK
http:
//michaelvh.wordpress.com/tag/compontent-state/
.LINK
http:
//poshcode.org/2660
.EXAMPLE
.\Query
-componentstates.ps1
.INPUTS
None. You cannot pipe objects to this script. But you can add server name.
#>

function New-Choice {
<
#
.SYNOPSIS
The New
-Choice function is used to provide extended control to a script author who writing code
that will prompt a user
for information.

.PARAMETER Choices
An Array of Choices, ie Yes, No and Maybe

.PARAMETER Caption
Caption to present to
end user

.EXAMPLE
PS C:\
> New-Choice -Choices 'Yes','No' -Caption "PowerShell makes choices easy"

.NOTES
Author: Andy Schneider
Date:
5/6/2011
#>

[CmdletBinding()]
param(

[Parameter(Position
=0, Mandatory=$True, ValueFromPipeline=$True)]
$Choices,

[Parameter(Position
=1)]
$Caption,

[Parameter(Position
=2)]
$Message

)

process {

$resulthash += @{}
for ($i = 0; $i -lt $choices.count; $i++)
{

$ChoiceDescriptions += @(New-Object System.Management.Automation.Host.ChoiceDescription ("&" + $choices[$i]))
$resulthash.$i = $choices[$i]
}
$AllChoices = [System.Management.Automation.Host.ChoiceDescription[]]($ChoiceDescriptions)
$result = $Host.UI.PromptForChoice($Caption,$Message, $AllChoices, 1)
$resulthash.$result -replace "&", ""
}
}

#
#
main part of the script
#
$localserver = $env:computerName
$components = Get-ChildItem HKLM:\SOFTWARE\Microsoft\ExchangeServer\v15\ServerComponentStates\ -Recurse | select PSPath

foreach($component in $components){

$componentstates = (Get-ItemProperty $component.PSPath | Select * -ExcludeProperty PS* ) | Get-Member -MemberType NoteProperty

$i=0

do {

$componentstate = ($componentstates[$i].Definition).split("=")
$statebreakdown = $componentstate[1].Split(":")

#$componentActualState = $statebreakdown[1]

switch($statebreakdown[1]){
1 {$componentActualState = "Active"}
0 {$componentActualState = "Inactive"}
}
$componentActualTime = [timezone]::CurrentTimeZone.ToLocalTime([datetime]::FromBinary($statebreakdown[2]))

$obj = New-Object PSObject
$obj | Add-Member -MemberType NoteProperty -Name Component -Value $($component.PSPath.Split("\"))[7]
$obj | Add-Member -MemberType NoteProperty -Name Requester -Value $componentstates[$i].Name
$obj | Add-Member -MemberType NoteProperty -Name State -Value $componentActualState
$obj | Add-Member -MemberType NoteProperty -Name TimeStamp -Value $componentActualTime
$obj

$i++
if ($componentActualState -eq 'Inactive')
{
$answer = New-Choice -Choices 'Yes','No' -Message "Do you want to activate component?"
if ($answer -eq 'Yes')
{
Set
-ServerComponentState -Identity $localserver -Component $obj.Component -Requester $obj.Requester -State Active
}
}
}
while ($i -lt $componentstates.count)
}

01 stycznia 2014

Posumowanie roku 2013

Nowy Rok się zaczął, więc czas na podsumowanie roku minionego. O życiu osobistym nie będę pisał, bo nie taki jest cel tego bloga. Skupmy się na technologiach Microsoft.

Dla mnie na pewno rok przebiegł pod znakiem Exchange 2013 – dopiero od drugiego kwartału możliwe stało się aktualizowanie Exchange do najnowszej wersji produktu – całkiem sporo takich migracji przeprowadziłem, a nowy rok przyniesie ich pewnie jeszcze więcej, zwłaszcza, że niedługo ma być dostępny Service Pack 1 dla Exchange 2013. Różne zagadnienia z obszaru zarządzania, planowania i wdrażania Exchange 2013 były poruszane na spotkaniach PEPUG, oraz na konferencjach, które udało mi się przy pomocy kolegów przeprowadzić – Office 2013 Community Launch i PreMTS 2013.

Koljenym obszarem, powiązanym z Exchange były różne rodzaje Load Balancerów i metody publikacji Exchange w internecie – po wycofaniu ze sprzedaży TMG, stała się to kwestią bardzo ważną – najwięcej czasu poświęciłem rozwiązaniom Kemp Technologies, ale sprawdzałem i testowałem również rozwiązania Barracudy, F5 oraz nowe pomysły Microsoftu – Aplication Request Routing (ARR) i Web Application Proxy (WAP). Mówiąc o WAP, które są komponentem nowej wersji serwera Windows, przechodzimy do kolejnego wydarzenia minionego roku, czyli premiery Windows Server 2012 R2, która może rewolucji nie zrobiła, ale poprawiła wiele obszarów, które w Windows 2012 nie były dopracowane – zwłaszcza w obszarze Hyper-V i zarzadzania file systemem (przynajmniej jak dla mnie). Równolegle wprowadzono nową wersję System Center - gdzie wersja 2012 R2 również w zasadzie wprowadziła przede wszystkim kosmetyczne poprawki i wsparcie dla nowych wersji systemów. Oczywiście razem z Windows Server 2012 R2 pojawiła się nowa wersja systemu klienckiego Windows 8.1, w którym Micorosft wrócił do przycisku Start, poprawiając również kilka innych funkcji systemu. Nowy rok na pewno przyniesie sporo zamieszania na rynku systemów klienckich – w kwietniu kończy się wsparcie dla nieśmiertelnego Windows XP, a klienci ciągle nie chcą się przekonać do kafelkowego interface’u. Czy ruszą masowe migracje do Windows 8.1, czy zachowawczo do Windows 7? A może nastąpi odwrót od platformy Windows? Czas pokaże.

Micorosft miał parę premier również nowości w obszarze sprzętu – Surface 2 i Xbox One (wkrótce po premierze Playstation 4), które również wprowadzały ciekawe nowości, ale rewolucyjne nie były.

Oczywiście również chmura się modernizowała – nowe funkcjonalności i aplikacje w Windows Azure oraz aktualizacja platformy i istniejących tenantów Office 365 do aktualnych wersji produktów. Skutkowało to intensyfikacją migracji, ale i problemami (brak zgodności ze starszymi wersjami produktów Office).

Jestem ciekawy, co przyniesie nowy rok. Nie mogę się doczekać.