Dynamics CRM Online: PowerShell でユーザーを作成する

みなさん、こんにちは。

今日は管理者の方向けの情報として、PowerShell を使った Microsoft
Dynamics CRM Online ユーザーの作成を紹介します。

事前準備

PowerShell 4.0

今回利用する PowerShell モジュールは PowerShell 4.0 以上が必要と
なります。以下の方法でバージョンが確認可能です。

1. PowerShell を起動して、以下のコマンドを実行します。
PS C:\> host
2. Version にバージョン情報が表示されます。

バージョンが 4.0 より古い場合は、以下のページより新しいモジュールを
取得してください。

Windows Management Framework 4.0
https://www.microsoft.com/ja-jp/download/details.aspx?id=40855

Office 365 PowerShell モジュール

Office 365 用の PowerShell も併用するため、まだインストールされていない
場合は、以下記事を参考にインストールしてください。

Windows PowerShell による Azure AD の管理
https://technet.microsoft.com/library/jj151815.aspx

必要なモジュールは以下の 2 つです。

Microsoft Online Services サインインアシスタント (32 ビット/64 ビット版)
https://www.microsoft.com/ja-jp/download/details.aspx?id=41950

Windows PowerShell 用 Azure AD モジュール
32 ビット版 https://go.microsoft.com/fwlink/p/?linkid=236298
64 ビット版 https://go.microsoft.com/fwlink/p/?linkid=236297

Microsoft Dynamics CRM モジュール

Microsoft Dynamics CRM 用の PowerShell モジュールのインストールは
以下の記事をご覧ください。

Dynamics CRM: 組織用 PowerShell の紹介

サンプル

Microsoft Dynamics CRM Online のユーザー登録サンプルスクリプトは
以下の手順で利用できます。

1. ブラウザより以下のサイトにアクセスします。
https://gallery.technet.microsoft.com/scriptcenter/PowerShell-functions-for-16c5be31

2. Description にある Microsoft.Xrm.Data.Powershell Samples_日付.zip を
ダウンロードします。

3. ダウンロードした zip ファイルを解凍し、AddCrmOLUsersFromCSV
フォルダを任意の場所に保存します。

作成するユーザー情報の指定

フォルダ内の O365Users.csv を Excel やメモ張で開きます。ここで
登録したいユーザーの情報を記載します。BusinessUnit には CRM
ユーザーが所属する部署名を、SecurityRoleName にはアサインしたい
セキュリティロール名を指定します。

UserPrincipalName: ユーザーの UPN を指定します。
DisplayName: 表示名を指定します。
FirstName: 名を指定します。
LastName: 姓を指定します。
PhoneNumber: 電話番号を指定します。
MobilePhone: 携帯電話番号を指定します。
PostalCode: 郵便番号を指定します。
City: 都市を指定します。
Country: 国を指定します。
State: 県を指定します。
StreetAddress: 住所を指定します。
Title: 役職を指定します。
Department: 所属部署を指定します。
Office: オフィスの場所を指定します。
Fax: Fax 番号を指定します。
UsageLocation: 利用場所を指定します。日本の場合は JP
Password: パスワードを指定します。
StrongPasswordRequired: 複雑なパスワードが必須か指定します。
PasswordNeverExpires: パスワードの期限があるか指定します。
ForceChangePassword: 初回ログイン時のパスワード変更が必須か指定します。
BusinessUnitName: Dynamics CRM の部署を指定します。
SecurityRoleName: Dynamics CRM のセキュリティロールを指定します。
SystemUserId: 空欄にしておきます。
BusinessUnitId: 空欄にしておきます。

ファイルを UTF-8 フォーマットで保存します。

サンプルスクリプトの編集

AddCrmOLUsersFromCSV  フォルダ内の AddCrmOLUsersFromCSV.ps1 を
任意のエディタで開きます。ここでは PowerShell ISE を利用します。

1. AddCrmOLUsersFromCSV.ps1 を右クリックし編集をクリックします。

2. 170 行目にある $msolUser に Office 365 の管理権限があるユーザー名を
入力します。

3. 171 行目の $msolPassword に上記ユーザーのパスワードを入力します。
※$ などの特殊文字は `$ のようにエスケープしてください。

4. 172 行目の $msolDomainName に Office 365 ドメイン名を入力します。

5. 173 行目の $csvPath CSV ファイルのパスを入力します。

6. 175 行目の $crmAdminUser に Dynamics CRM Online の管理者権限
があるユーザー名を入力します。

7. 176 行目の $crmAdminPassword に上記ユーザーのパスワードを
入力します。

8. スクリプトを保存します。

スクリプトの流れ

このサンプルスクリプトは、以下の順序で処理を行います。

- Office 365 PowerShell モジュールの読み込み
- Office 365 インスタンスへの接続作成
- Dynamics CRM Online 組織への接続作成
- CSV ファイルの読み込み
- 読み込んだユーザー情報を Office 365 へ登録し、Dynamics CRM の
ライセンスを付与
- Dynamics CRM 側に同期されるまで待機
- ユーザーが同期されたら指定された部署へユーザーを移動
- 指定されたセキュリティロールをアサイン

注意点

- スクリプトはサンプルのため、新しい体験版を申し込むなど検証環境で
動作を試してください。
- 部署名をはじめ日本語が CSV に入る場合は、ファイルを UTF-8 で保存
しないと、読み込まれた文字が文字化けします。

まとめ

今回は Microsoft Dynamics CRM Online ユーザーを作成するスクリプトを
紹介しましたが、サンプルには他にも色々なスクリプトが含まれています
ので、是非お試しください。

- 中村 憲一郎