30 sierpnia 2020

Zmiana display name w Office 365

Jednym z pytań, które ostatnio się pojawia, to zmiana sortowania użytkowników w zespołach. Niestety domyślnie pole Display Name, które jest  wykorzystywane w sortowaniu użytkowników, jest tworzone na podstawie pól Imię i Nazwisko. Jednak administrator może zmienić wartość tego pola bez wpływu na działanie systemu. Można edytować każdego użytkownika indywidualnie, ale oczywiście prościej to zrobić z poziomu powershell. W tym celu możemy użyć pliku csv, użytego do importu danych uczniów i nauczycieli, lub dowolnego innego pliku csv, np. lista użytkowników wyeksportowana z panelu administracyjnego.


W tym celu możemy użyć prostego skryptu, który zaimportuje listę użytkowników z pliku i utworzy pole displayname z połączenia wartości pól z imieniem i nazwiskiem. W tym celu powinniśmy poniższy kod zapisać jako plik z rozszerzeniem ps1 (na przykład zmiana.ps1 w katalogu c:\Scripts) i uruchomić go z Powershella (pamiętajmy, żeby wcześniej zainstalować moduł MSOnline przy pomocy komendy install-module MSOnline jako administrator):

Import-Module Msonline

Connect-MsolService

#

# nagłówek pliku csv -> UserPrincipalName,Imie,Nazwisko

# jeżeli kolumny rozdzielone są znakiem ";" zamiast "," należy użyć przy imporcie atrybutu -Delimeter (import-csv domyślnie szuka ",")

#

$AllStudents = Import-CSV D:\Scripts\uczniowie.csv -Delimiter ";"

ForEach ($student in $AllStudents)

{

$DisplayName = $student.Nazwisko+" "+$student.Imie

$currentstudent = get-MsolUser -UserPrincipalName $student.UserPrincipalName

set-MsolUser -ObjectId $currentstudent.ObjectId -Displayname $DisplayName

}

Kod skryptu dostępny również na moim githubie. Możemy również bezpośrednio przetworzyć atrybuty obiektów w naszej organizacji, bez użycia pliku csv wykonując nieco zmodyfikowany skrypt:
Import-MsolService
Connect-MsolService

$Allusers = get-MsolUSer

ForEach ($user in $Allusers)
{
$DisplayName = $user.LastName+" "+$user.FirstName
Set-MsolUser -ObjectId $user.ObjectId -Displayname $DisplayName
}

Jeżeli pole DisplayName chcemy uzupełnić o dodatkowy atrybut, np. rocznik ucznia, to w pliku csv musimy dodać jeszcze jedną kolumnę, o nazwie np. Rok i zmienić w skrypcie wiersz, tworzący pole:

$DisplayName = $student.Nazwisko+" "+$student.Imie + " " + $student.Rok

Oczywiście najpierw powinniśmy zainstalować odpowiedni moduł do zarządzania Office 365. O modułach niezbędnych dla Office 365 pisałem już wcześniej na swoim blogu:

Czas zacząć przygotowania do końca wsparcia dla Exchange 2016

W ostatnich tygodniach niestety nieco zaniedbałem aktualizacje, ale w trakcie mojego urlopu zespół produktowy Exchange ogłosił bardzo ważną informację, więc trzeba o niej wspomnieć. 14 października Exchange 2016 wchodzi w okres rozszerzonego wsparcia, czyli Microsoft przestaje uzupełniać pakiety aktualizacji o zmiany funkcjonalne. Ostatnia planowana aktualizacja - CU 19 ma być wydana w grudniu, a później będą (jeżeli będzie taka potrzeba) wydawane tylko poprawki bezpieczeństwa do CU19.

Oznacza to, że po pierwsze wszyscy użytkownicy Exchange 2016 będą zobowiązani do aktualizacji do tej wersji, żeby móc łatać ewentualne dziury bezpieczeństwa w aplikacji.

Kolejny aspekt to serwery hybrydowe - dla wersji 2016 Microsoft dostarczał bezpłatne licencje dla serwerów hybrydowych, co niestety zostało w wersji 2019 zmienione. Po wyjściu Exchange 2016 z podstawowego wsparcia, trzeba będzie rozważyć (co Microsoft rekomenduje) wdrożenie serwerów hybrydowych Exchange 2019, co oczywiście będzie się tym razem wiązało z dodatkowymi zakupami. Tak że idą zmiany.