Office 365 フォーラムで見かけた小ネタです。
Office 365 ではアカウントに使える文字に一定の制限があります。
今日の例でいうと "+" を含むアカウント名を Office 365 で使うことはできません。
でも、なぜか共有の連絡先を登録しようとしたときもこの制限に引っかかるそうです。
外部のアドレスなんから自由に入れさせてくれてもいいのに...
PowerShell で連絡先を登録してみる
でも、実は Web で入力チェックしてるだけじゃね? という疑惑があったので PowerShell で連絡先の登録をしていました。
PowerShell での接続準備方法は以前の記事を参照ください。
Exchange Online に接続する
まずは以下のコマンドレットを実行します。
PS C:\> $credential = Get-Credential
実行すると、パスワード入力のダイアログが出てくるので Office 365 のユーザー名、パスワードを入力しておきます。
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
以下のような画面になってコマンド情報が取得されます。
インポート中にエラーが出る場合はスクリプトの実行セキュリティ ポリシーを確認してみてください *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 の値は既存のアカウント名と重複できないみたいなので注意が必要です。
管理センターを見てるとちゃんと登録されていました。
やっぱりテキストボックスのエラーチェックだけの問題だったんですね...。
後始末
作業が終わったら忘れずにセッションを終了しておきましょう。
PS C:\> Remove-PSSession $exchangeSession
*1:Set-ExecutionPolicy RemoteSigned としておけば大丈夫のはず