【新機能】アドレス帳のカスタマイズ

(この投稿はプレビュー版での情報を元に作成されています。正式版リリースの際には変更されている可能性もあるのでご注意ください。)

新しいOffice 365について、着々とリリースに向けて情報が公開され始めてきております。今回は、あまり紹介はされていないのですが、個人的には特に中~大規模ユーザーには非常に有益な機能なのではないかと自分的には考えている新機能「アドレス帳のカスタマイズ」について紹介します。

機能自体はオンプレミスでは実装されているのですが、権限の問題の為でしょうか今までのOffice 365(Exchange Online)では公開されておらず、オンプレミスと比較しての制約として明示されていた物が解消された形になります。

具体的にこれがどういう機能かと言いますと、従来のグローバルアドレス帳(ならびにオフラインアドレス帳)では、社内の全アカウントがずら~~~っと同じ画面上に名前順に並んでいたかと思います。
20130213_01

画面で表示が可能な数十ユーザーまでの規模であればこれでも良いのですが、例えばこれが数百や数千の規模になった場合、これを目的別(例えば事業部別やロケーション別)に分割した物を作成したいというニーズが発生します。これを実現するのがグローバルアドレス帳(GAL)のサブセットであるアドレス帳のカスタマイズと呼ばれる機能になります。

1点注意が必要なのは、この機能はあくまで利便性向上の為に分割するものであり、個人が見れる範囲をセキュリティ上限定するという用途のために利用する機能ではありません。

それでは、使い方を見てみましょう。この機能を利用するためには、管理者の役割で「Address Lists」という権限が必要です。プレビュー版では、全体管理者が所属するOrganization Managementにもこの権限が割り当てられていないようなので、まずはこの権限を作業を行う管理者アカウントに付与します。

今回は、Organization ManagementにAddress Listsの権限を付与します。【アクセス許可】【管理者の役割】からリストから選択して追加します。
20130213_02

続いて、アドレス帳を作成するためにPowerShellに接続します。新しいバージョンのExchange Onlineに接続するには、最後のImport-PSSessionのところに-AllowClobberを付けて接続します。

$LiveCred = Get-Credential
$Session = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri https://ps.outlook.com/powershell/ -Credential $LiveCred -Authentication Basic -AllowRedirection
Import-PSSession $Session -AllowClobber

ここで、作成するカスタムアドレス帳について少し解説します。アドレス帳自体は、Company(会社)、Department(部門)、StateOrProvince(都道府県)またはCustomAttribute1-15(カスタム属性)やその他Exchange関連属性をベースに作成します。各オブジェクト(ユーザーメールボックスやリソースメールボックス、グループ、メール連絡先など)に応じて入力可能な項目が異なるため、統一的なリストを作成するために、全種類のオブジェクトで利用可能なカスタム属性(15+5個存在します)を利用する事が多いです。

ただし、外部連絡先のメールアドレスは一意である必要があるので、例えばContoso、Fabrikamの両社に共通する社外の取引先などを追加しようとした場合にアドレス重複で追加できなません。実際の運用では両者のリストに含める必要があるオブジェクトについては、もう少し工夫が必要な場合もあります。(※2013/3/3注 Set-MailContactコマンドで外部連絡先にも拡張属性がセットできたので修正します)

ここでは、CustomAttribute1に会社の属性を1…Contoso社、2…Fabrikam社と事前に入力しているとします。-Containerオプションは、階層構造で親となるアドレス帳を指定できます。

New-AddressList -Name "All Contoso List" -RecipientFilter '((Alias -ne $null) -and (CustomAttribute1 -eq ''1''))'
New-AddressList -Name "Contoso Rooms" -RecipientFilter '((Alias -ne $null) -and (((RecipientDisplayType -eq ''ConferenceRoomMailbox'') -or (RecipientDisplayType -eq ''SyncedConferenceRoomMailbox'')) -and (CustomAttribute1 -eq ''1'')))' -Container "All Contoso List"
New-AddressList -Name "Contoso Users" -RecipientFilter '((Alias -ne $null) -and (((((ObjectCategory -like ''person'') -and (ObjectClass -eq ''user'') -and (-not(Database -ne $null)) -and (-not(ServerLegacyDN -ne $null)))) -or (((ObjectCategory -like ''person'') -and (ObjectClass -eq ''user'') -and (((Database -ne $null) -or (ServerLegacyDN -ne $null)))))) -and (CustomAttribute1 -eq ''1'')))' -Container "All Contoso List"
New-AddressList -Name "Contoso Groups" -RecipientFilter '((Alias -ne $null) -and (ObjectCategory -like ''group'') -and (CustomAttribute1 -eq ''1''))' -Container "All Contoso List"
New-AddressList -Name "Contoso Contacts" -RecipientFilter '((Alias -ne $null) -and (ObjectCategory -like ''person'') -and (ObjectClass -eq ''contact'') -and (CustomAttribute1 -eq ''1''))' -Container "All Contoso List"
New-AddressList -Name "All Fabrikam List" -RecipientFilter '((Alias -ne $null) -and (CustomAttribute1 -eq ''2''))'
New-AddressList -Name "Fabrikam Rooms" -RecipientFilter '((Alias -ne $null) -and (((RecipientDisplayType -eq ''ConferenceRoomMailbox'') -or (RecipientDisplayType -eq ''SyncedConferenceRoomMailbox'')) -and (CustomAttribute1 -eq ''2'')))' -Container "All Fabrikam List"
New-AddressList -Name "Fabrikam Users" -RecipientFilter '((Alias -ne $null) -and (((((ObjectCategory -like ''person'') -and (ObjectClass -eq ''user'') -and (-not(Database -ne $null)) -and (-not(ServerLegacyDN -ne $null)))) -or (((ObjectCategory -like ''person'') -and (ObjectClass -eq ''user'') -and (((Database -ne $null) -or (ServerLegacyDN -ne $null)))))) -and (CustomAttribute1 -eq ''2'')))' -Container "All Fabrikam List"
New-AddressList -Name "Fabrikam Groups" -RecipientFilter '((Alias -ne $null) -and (ObjectCategory -like ''group'') -and (CustomAttribute1 -eq ''2''))' -Container "All Fabrikam List"
New-AddressList -Name "Fabrikam Contacts" -RecipientFilter '((Alias -ne $null) -and (ObjectCategory -like ''person'') -and (ObjectClass -eq ''contact'') -and (CustomAttribute1 -eq ''2''))' -Container "All Fabrikam List"

これで、All Contoso Listをトップの階層とするContosoのみのグローバルアドレス帳とAll Fabrikam ListをトップとするFabrikamのみのグローバルアドレス帳が作成されます。残念ながらOWAでは階層構造は表現されませんが、Outlookの中では階層的に表示されます。
20130213_03 20130213_04

1点TIPSとして紹介しますが、新規でカスタムアドレス帳を作成したあと、その反映までに非常に(何日もかかる場合も)時間が掛かります。オンプレミスの環境では通常Update-Addresslistコマンドで手動更新を行いますが、このコマンドは現時点で開放されていないようです。

この為、カスタムアドレス帳を作成した場合、それに該当するオブジェクトの何かの属性(例えばCustomAttribute15)をダミーの値に変更してオブジェクトに手動で更新をかけてあげれば即時に反映されます。

Get-Mailbox | Set-Mailbox -CustomAttribute15 0
Get-DistributionGroup | Set-DistributionGroup -CustomAttribute15 0

次はアドレス帳ポリシーについて紹介しようと思います。

3 thoughts on “【新機能】アドレス帳のカスタマイズ

  1. Pingback: 【新機能】アドレス帳ポリシー « 日々徒然

  2. Pingback: Exchange Onlineでやっとアドレス一覧の機能が提供されるそうです | Exchange Server Blog

  3. Pingback: Office365情報 2013/02/21 | Office365の動向 | Office365Room

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です