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
http://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 ビット版)
http://www.microsoft.com/ja-jp/download/details.aspx?id=41950

Windows PowerShell 用 Azure AD モジュール
32 ビット版 http://go.microsoft.com/fwlink/p/?linkid=236298
64 ビット版 http://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 ユーザーを作成するスクリプトを
紹介しましたが、サンプルには他にも色々なスクリプトが含まれています
ので、是非お試しください。

- 中村 憲一郎

Comments (4)

  1. c-nkmr より:

    いつも情報ありがとうございます。

    一つ質問させて下さい。

    サンプル内の「UpdateCrmUsersSettings」をカスタマイズして、

    個人用オプションの設定変更を試しているのですが、全般タブ/既定の通貨の選択が、設定できません。

    MSDNのライブラリより

    $transactioncurrencyid

    ではないかと思ってはいるのですが…そのオプションは存在しないというエラーになってしまいます。

    PowerShellからは設定できないのでしょうか?

    ご存じでしたら教えて頂けますでしょうか?

  2. コメントありがとうございます。よりスマートな方法があるかもしれませんが、一度以下の方法をお試しください。

    # 通貨 ID の取得 (JPY 通貨を取得)

    $tc = Get-CrmRecords -conn $conn -EntityLogicalName transactioncurrency -FilterAttribute isocurrencycode -Filt

    erOperator eq -FilterValue JPY -Fields transactioncurrencyid

    # 通貨の EntityReference 作成

    $uc = New-CrmEntityReference -EntityLogicalName transactioncurrency -Id $tc.CrmRecords[0].transact

    ioncurrencyid

    # 自分のユーザー設定への反映

    Set-CrmRecord -conn $conn -EntityLogicalName usersettings -Id (Get-MyCrmUserId) -Fields @{"transac

    tioncurrencyid"=$uc}

    サンプルは後日更新します。

    – 中村 憲一郎

  3. c-nkmr より:

    迅速なご返信、ありがとうございます。

    ご提案内容を試して、実現できました。

    EntityReferenceとSet-CrmRecordの使用が必要だったのですね。

    今後の更新も楽しみにしております。

  4. 早速お試しいただき、ありがとうございます。

    CRM はやはり EntityReference など一部特殊な内容があるため

    ご不便をおかけしました。サンプルでこのあたりも更新できるよう調整してみます。

    – 中村 憲一郎

Skip to main content