接続の確立
CData Cmdlets ユーザーは、データモジュールをインストールし、接続プロパティを設定してスクリプトを開始できます。このセクションでは、CSV インポートおよびエクスポートcmdlet などのネイティブPowerShell cmdlet でRaiserEdgeNXT Cmdlets を使用する例を示します。
インストールおよび接続
PSGet がある場合は、PowerShell Gallery から次のコマンドを使ってcmdlet をインストールできます。CData サイトからセットアップを取得することもできます。
Install-Module RaiserEdgeNXTCmdlets
プロファイルに以下を追加すると、次のセッションでcmdlet がロードされます。
Import-Module RaiserEdgeNXTCmdlets;
Connect-RaiserEdgeNXT cmdlet を使って、別のcmdlet に渡すことができる接続オブジェクトを作成します。
$conn = Connect-RaiserEdgeNXT -OAuthClientId "MyOAuthClientId" -OAuthClientSecret "MyOAuthClientSecret" -SubscriptionKey "MySubscriptionKey" -CallbackURL "http://localhost:33333"
BlackBaud Raiser's Edge NXT への接続
接続を確立する前に、BlackBaud Raiser's Edge NXT プロファイルにあるSubscriptionKey を指定します。
BlackBaud Raiser's Edge NXT への認証
BlackBaud Raiser's Edge NXT はOAuth 認証標準を利用しています。埋め込みクレデンシャル を使用すると、接続プロパティを設定せずにBlackBaud Raiser's Edge NXT に接続できます。
あるいは、カスタムOAuth アプリの作成 で認証して、OAuthClientId、OAuthClientSecret、およびCallbackURL 接続プロパティを取得することもできます。
認証方法については、OAuth 認証の使用 を参照してください。
データの取得
Select-RaiserEdgeNXT cmdlet はデータを取得するためのネイティブなPowerShell インターフェースを提供します。
$results = Select-RaiserEdgeNXT -Connection $conn -Table "Constituents" -Columns @("Id, AddressLines") -Where "Type='Home'"
Invoke-RaiserEdgeNXT cmdlet はSQL インターフェースを提供します。このcmdlet を使うと、Query パラメータを介してSQL クエリを実行できます。
cmdlet 出力のパイプ処理
cmdlet は行オブジェクトをパイプラインに一度に一行ずつ返します。以下は、結果をCSV ファイルにエクスポートします。
Select-RaiserEdgeNXT -Connection $conn -Table Constituents -Where "Type = 'Home'" | Select -Property * -ExcludeProperty Connection,Table,Columns | Export-Csv -Path c:\myConstituentsData.csv -NoTypeInformation
Select-RaiserEdgeNXT からの結果をSelect-Object cmdlet にパイプして、Export-CSV cmdlet にパイプする前にいくつかのプロパティを実行していることがわかるでしょう。これをする理由は、CData Cmdlets は接続、テーブル、およびカラムの情報を結果セットの各行オブジェクトに追加しますが、必ずしもその情報がCSV ファイルに必要ではないからです。
ただし、これによってcmdlet の出力を別のcmdlet にパイプすることが容易になります。以下に、結果セットをJSON に変換する例を示します。
PS C:\> $conn = Connect-RaiserEdgeNXT -OAuthClientId "MyOAuthClientId" -OAuthClientSecret "MyOAuthClientSecret" -SubscriptionKey "MySubscriptionKey" -CallbackURL "http://localhost:33333"
PS C:\> $row = Select-RaiserEdgeNXT -Connection $conn -Table "Constituents" -Columns (Id, AddressLines) -Where "Type = 'Home'" | select -first 1
PS C:\> $row | ConvertTo-Json
{
"Connection": {
},
"Table": "Constituents",
"Columns": [
],
"Id": "MyId",
"AddressLines": "MyAddressLines"
}
データの変更
cmdlet はデータクレンジング同様、データの変換を容易にします。次の例は、レコードがすでに存在するかどうか、挿入する前に更新が必要かどうかをチェックしてから、CSV ファイルのデータをBlackBaud Raiser's Edge NXT にロードします。
Import-Csv -Path C:\MyConstituentsUpdates.csv | %{
$record = Select-RaiserEdgeNXT -Connection $conn -Table Constituents -Where ("Id = `'"+$_.Id+"`'")
if($record){
Update-RaiserEdgeNXT -Connection $conn -Table Constituents -Columns @("Id","AddressLines") -Values @($_.Id, $_.AddressLines) -Where "Id = `'$_.Id`'"
}else{
Add-RaiserEdgeNXT -Connection $conn -Table Constituents -Columns @("Id","AddressLines") -Values @($_.Id, $_.AddressLines)
}
}