Dynamics CRM Online: PowerShell でユーザー設定を更新する


みなさん、こんにちは。

今日は管理者の方向けの情報として、PowerShell を使った Microsoft
Dynamics CRM ユーザー設定の更新を紹介します。設置型、オンライン
ともに利用可能です。

事前準備

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

Microsoft Dynamics CRM モジュール

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

Dynamics CRM: 組織用 PowerShell の紹介

サンプル

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

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

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

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

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

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

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

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

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

4. 77 行目の $organizationName に設置型の場合は組織名を入力し、
オンラインの場合は $organizationName =”” とします。

5. 78 行目 の $serverUrl に設置型の場合はサーバーのアドレスを http か
https から指定し、オンラインの場合は $serverUrl  = “” とします。

6. ユーザー設定のパラメーターを指定します。

$advancedFindStartupMode: 高度な検索のモードを指定します。
1 が簡易、2 が詳細です。
$timeZoneCode: ユーザーのタイムゾーンを指定します。タイムゾーンは
Get-CrmTimeZones で取得できます。
$pagingLimit: ページに表示できるレコード数を指定します。指定できる数字は
25、50、75、100、250 です。
$reportScriptErrorOption: スクリプトエラーが発生した場合の動作を指定します。
1 が 「エラー報告を Microsoft に送信するときに確認ダイヤログを表示する」
2 が 「確認ダイアログを表示せずに、自動的にエラー報告を Microsoft に送信する」
3 が 「Microsoft Dynamics CRM に関するエラー報告を Microsoft に送信しない」です。
$uiLanguageId: UI 言語を指定します。
$transactionCurrencyName: 通貨名を指定します。

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

スクリプトの流れ

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

– Dynamics CRM 設置型/Online 組織への接続作成
– 有効なユーザー一覧を読み込みます。
– ユーザー毎にユーザー設定を取得し、値を変更します。

注意点

– スクリプトはサンプルのため、検証環境で動作を試してください。
– 通貨や言語は事前に作成や有効化が必要です。

まとめ

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

– 中村 憲一郎

Comments (9)

  1. nakano より:

    いつも楽しく拝見させていただいております。

    PowerShellからUserSettingsエンティティの更新について、質問させてください。

    IsSendAsAllowed属性をfalseからtrueに更新したいのですが、PowerShellから更新ができません。

    ちなみにtrueからfalseへの更新は可能なのですが…

    何か情報をお持ちでしたら教えていただけないでしょうか。

  2. コメントありがとうございます。

    ご連絡いただいた問題は新しいバージョンで修正されているため、お手数ですが最新のバージョンをダウンロードしていただき再度ご確認いただけますでしょうか。

    ‐ 中村 憲一郎

  3. nakano より:

    ご返信ありがとうございました。

    最新バージョンでアップデートできたことを確認できました。

    ありがとうございます。

  4. コメントありがとうございます。

    ご確認いただき、ありがとうございました。

    – 中村 憲一郎

  5. nakano より:

    PowerShellでのユーザー情報の更新で、追加で質問させていただきます。

    Office365全体管理者に対して、CRMの部署やセキュリティロールが更新できないのはCRMの製品仕様だと思いますが、

    PowerShellメソッドの Set-CrmUserBusinessUnit や Add-CrmSecurityRoleToUser

    を実行するとエラーがcatchできません。(内部的には正常終了しているようです)

    CRMのUI側でエラーが表示されるようにPowerShell側でも異常を検知するか、

    もしくは何か回避方法があれば教えていただけないでしょうか。

  6. フィードバックありがとうございます。

    同様の問題がいくつかあるため、それらはすべてバージョン1.9で改修予定です。すぐに変更されたい場合は、お手数ですが Microsoft.Xrm.Data.PowerShell,psm1 ファイル内の Remove-CrmRecordAssociation の一番最後の部分を以下のように書き換えてください。

       try

       {

           $result = $conn.DeleteEntityAssociation($EntityLogicalName1, $Id1, $EntityLogicalName2, $Id2, $RelationshipName, [Guid]::Empty)

           if($result)

           {

               return $conn.LastCrmError

           }

       }

       catch

       {

           return $conn.LastCrmException

       }

  7. nakano より:

    早々のご回答ありがとうございます。

    改修を待ってから再調査することにします。

  8. 先日バージョン 1.9 が公開されましたので、是非お試しください。

    github.com/…/1.9

    – 中村 憲一郎

  9. nakano より:

    最新バージョンではメッセージを返すようになっていました。

    ありがとうございます。

Skip to main content