kazuakix の日記

Windows Phone とか好きです

Office 365 の連絡先に "+" を含むアドレスを登録する

Office 365 フォーラムで見かけた小ネタです。
 
Office 365 ではアカウントに使える文字に一定の制限があります。

今日の例でいうと "+" を含むアカウント名を Office 365 で使うことはできません。
 
でも、なぜか共有の連絡先を登録しようとしたときもこの制限に引っかかるそうです。

f:id:kazuakix:20141111232753j:plain,w500
外部のアドレスなんから自由に入れさせてくれてもいいのに...

PowerShell で連絡先を登録してみる

でも、実は Web で入力チェックしてるだけじゃね? という疑惑があったので PowerShell で連絡先の登録をしていました。

PowerShell での接続準備方法は以前の記事を参照ください。

Exchange Online に接続する

まずは以下のコマンドレットを実行します。

PS C:\> $credential = Get-Credential

実行すると、パスワード入力のダイアログが出てくるので Office 365 のユーザー名、パスワードを入力しておきます。

f:id:kazuakix:20141111232801j:plain,w360
 
New-PSSession コマンドレットでExchange Online に接続します。-AllowRedirection までが 1 行です。ちょっと長いですね。

PS C:\> $exchangeSession = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri https://ps.outlook.com/pow
ershell -Credential $credential -Authentication "Basic" -AllowRedirection
警告: 接続は次の URI にリダイレクトされました。"https://pod51054psh.outlook.com/powershell-liveid?PSVersion=4.0

何やら警告が出ますが無視します。
 
続けてリモートセッションをインポートします。

PS C:\> Import-PSSession $exchangeSession

以下のような画面になってコマンド情報が取得されます。

f:id:kazuakix:20141111232806j:plain,w500

インポート中にエラーが出る場合はスクリプトの実行セキュリティ ポリシーを確認してみてください *1

New-MailContact コマンドレットで連絡先を登録する

連絡先の登録には New-MailContact コマンドレットを使用します。

PS C:\> get-help New-MailContact

名前
    New-MailContact

概要
    This cmdlet is available in on-premises Exchange Server 2013 and in the cloud-based service. Some parameters and se
    ttings may be exclusive to one environment or the other.

    Use the New-MailContact cmdlet to create a mail-enabled contact.


構文
    New-MailContact -ExternalEmailAddress <ProxyAddress> -Name <String> [-Alias <String>] [-ArbitrationMailbox <Mailbox
    IdParameter>] [-Confirm [<SwitchParameter>]] [-DisplayName <String>] [-DomainController <Fqdn>] [-ExternalDirectory
    ObjectId <String>] [-FirstName <String>] [-Initials <String>] [-LastName <String>] [-MacAttachmentFormat <BinHex |
    UuEncode | AppleSingle | AppleDouble>] [-MessageBodyFormat <Text | Html | TextAndHtml>] [-MessageFormat <Text | Mim
    e>] [-ModeratedBy <MultiValuedProperty>] [-ModerationEnabled <$true | $false>] [-Organization <OrganizationIdParame
    ter>] [-OrganizationalUnit <OrganizationalUnitIdParameter>] [-OverrideRecipientQuotas <SwitchParameter>] [-PrimaryS
    mtpAddress <SmtpAddress>] [-SendModerationNotifications <Never | Internal | Always>] [-UsePreferMessageFormat <$tru
    e | $false>] [-WhatIf [<SwitchParameter>]] [<CommonParameters>]

とりあえず -ExternalEmailAddress と -Name だけが必須のようなので登録してみます。

PS C:\> New-MailContact -ExternalEmailAddress "kazuakix+test@example.com" -Name "kazuakix"

Name                      Alias                                          RecipientType
----                      -----                                          -------------
kazuakix                  kazuakix                                       MailContact

尚、 -Name の値は既存のアカウント名と重複できないみたいなので注意が必要です。
 
管理センターを見てるとちゃんと登録されていました。

f:id:kazuakix:20141112003633j:plain,w500

やっぱりテキストボックスのエラーチェックだけの問題だったんですね...。
 

後始末

作業が終わったら忘れずにセッションを終了しておきましょう。

PS C:\> Remove-PSSession $exchangeSession

*1:Set-ExecutionPolicy RemoteSigned としておけば大丈夫のはず