Dynamics CRM 2014 年春/SP1 SDK の新機能 ソリューション展開ツールとパッケージテンプレート その 4
みなさん、こんにちは。
前回までの記事でソリューション展開ツールの利用方法とパッケージの
作成方法を紹介してきましたが、今回は CUI での展開を紹介します。
PowerShell での展開
開発したパッケージを繰り返し展開する場合、GUI ツールを利用する
のは効率が良くありません。そこで SDK チームはソリューション展開
ツールの PowerShell 版も用意しました。
前提要件
PowerShell 3.0 以降 : 以下コマンドで確認できます。
>$host
PowerShell スクリプトの実行ポリシーが設定されている。管理者権限
で以下コマンドを実行してください。
>Get-ExecutionPolicy
結果が Restricted の場合、以下コマンドで変更してください。
>Set-ExecutionPolicy -ExecutionPolicy AllSignedp>
手順
前提要件を満たしている場合、以下手順でパッケージの展開が可能です。
コマンドレットの登録
1. PowerShell を開きます。
2. 以下コマンドを実行してディレクトを変更します。ここでは SDK を C ドライブ直下に保存したと仮定します。
>cd c:\SDK\Tools\PackageDeployer\PowerShell
3. 以下スクリプトを実行して PowerShell のアセンブリを登録します。
この作業は 1 度だけ行えば、次回以降は不要です。
>.\RegisterXRMTooling.ps1
4. 以下コマンドでスナップインを 2 つ登録します。
>Add-PSSnapin Microsoft.Xrm.Tooling.Connector
>Add-PSSnapin Microsoft.Xrm.Tooling.PackageDeployment
5. 登録が正常に行えたか、以下コマンドで確認できます。
>Get-Help “CRM”
パッケージの展開
コマンドレットの登録が完了したら、以下手順でパッケージを展開
します。
1. まず以下コマンドでパッケージが存在するか確認します。存在する
ことが明らかな場合、この手順はスキップできます。
>Get-CrmPackages –PackageDirectory c:\SDK\Tools\PackageDeployer
以下のように結果が出れば成功です。
2. 次に展開先組織に接続します。以下コマンドで認証情報を設定します。
認証情報を聞かれるのでユーザー情報を入力します。
>$Cred = Get-Credential
3. 以下コマンドで接続情報を作成します。以下はアジアの Microsoft
Dynaimcs CRM Online 上の組織にアクセスする例です。
>$CRMConn = Get-CrmConnection -DeploymentRegion APAC –OnlineType Office365 –OrganizationName crm2013training25 -Credential $Cred
設置型に接続する場合は、以下コマンドを利用します。
>$CRMConn = Get-CrmConnection -ServerUrl https://<your_CRM_Server> -OrganizationName <your_Org_Name> -Credential $Cred
他オプションの詳細はこちらをご参照ください。
4. 最後に以下のコマンドでパッケージを展開します。
>PS C:\Users\Administrator> Import-CrmPackage –CrmConnection $CRMConn –PackageDirectory c:\SDK\Tools\PackageDeployer –PackageName DeployerTest.dll –UnpackFilesDirectory c:\UnpackedFiles -Verbose
※ PackageName にはパッケージの dll 名を指定してください。
※ UnpackFilesDirectory は一時作業領域となります。
※ 最後の –Verbose で処理経過の詳細を出すよう指示しています。
処理が実行され、画面に詳細が表示されます。
スクリプト化
上記情報を元に以下のスクリプトを書いてみました。参考まで。
param
(
#required params
[string]$Username = $(throw "Username parameter not specified"),
[string]$Password = $(throw "Password parameter not specified"),
[string]$DeploymentRegion = $(throw "DeploymentRegion parameter not specified"),
[string]$OnlineType = $(throw "OnlineType parameter not specified"),
[string]$OrganizationName = $(throw "OrganizationName parameter not specified"),
[string]$PackageDirectory = $(throw "PackageDirectory parameter not specified"),
[string]$PackageName = $(throw "PackageName parameter not specified"),
[string]$UnpackFilesDirectory = $(throw "UnpackFilesDirectory parameter not specified")
)
$RemoveSnapInWhenDone = $False
if (-not (Get-PSSnapin -Name Microsoft.Xrm.Tooling.Connector -ErrorAction SilentlyContinue))
{
Add-PSSnapin Microsoft.Xrm.Tooling.Connector
$RemoveSnapInWhenDone = $True
}
if (-not (Get-PSSnapin -Name Microsoft.Xrm.Tooling.PackageDeployment -ErrorAction SilentlyContinue))
{
Add-PSSnapin Microsoft.Xrm.Tooling.PackageDeployment
$RemoveSnapInWhenDone = $True
}
$Cred = New-Object System.Management.Automation.PSCredential $Username, (convertto-securestring $Password -AsPlainText -Force)
$CRMConn = Get-CrmConnection -DeploymentRegion $DeploymentRegion –OnlineType $OnlineType –OrganizationName $OrganizationName -Credential $Cred
Import-CrmPackage –CrmConnection $CRMConn –PackageDirectory $PackageDirectory –PackageName $PackageName –UnpackFilesDirectory $UnpackFilesDirectory -Verbose
if($RemoveSnapInWhenDone)
{
Remove-PSSnapin Microsoft.Crm.PowerShell
}
まとめ
数回に渡ってソリューション展開ツールとパッケージテンプレートを
紹介してきましたが、いかがだったでしょうか。開発中に繰り返し
ソリューションとデータを展開しないといけない環境では非常に
重宝するツールですので、是非一度お試しください。
- 中村 憲一郎