接続の確立
CData Cmdlets ユーザーは、データモジュールをインストールし、接続プロパティを設定してスクリプトを開始できます。このセクションでは、CSV インポートおよびエクスポートcmdlet などのネイティブPowerShell cmdlet でLDAP Cmdlets を使用する例を示します。
インストールおよび接続
PSGet がある場合は、PowerShell Gallery から次のコマンドを使ってcmdlet をインストールできます。CData サイトからセットアップを取得することもできます。
Install-Module LDAPCmdlets
プロファイルに以下を追加すると、次のセッションでcmdlet がロードされます。
Import-Module LDAPCmdlets;
Connect-LDAP cmdlet を使って、別のcmdlet に渡すことができる接続オブジェクトを作成します。
$conn = Connect-LDAP -User 'MyUserName' -Password 'MyPassword' -Server 'MyServer' -Port 'MyPort'
LDAP への接続
CData driver for LDAP は、LDAP サーバーオブジェクトへの接続をサポートします。接続するには必要なプロパティを設定します。
必須プロパティ
- Server:LDAP サーバーのドメイン名、もしくはIP。
- Port:The port setting defaults to port=389.Specifying the port to a different setting is optional.
- BaseDN:このプロパティは、結果を指定されたサブツリーに限定するために使用されます。BaseDN(Base Distinguished Name)の範囲を絞ることはパフォーマンスを劇的に向上させます。例えば、cn=users,dc=domain の値は、cn=users およびその子に含まれる結果のみを返します。
オプションのプロパティ
Optional properties can be used to further refine control of the returned results.
- FollowReferrals:This property follows referrals when TRUE.The returned response then becomes read only.To modify data returned by a referral server, open a new connection to the server by specifying server and port.
- Scope:This property enables more control over the search depth of the LDAP tree, starting with BaseDN.範囲を限定することで、検索パフォーマンスを大幅に向上させられます。Scope を次の値のいずれかに指定します:
- WholeSubtree:検索の範囲を、BaseDN およびすべての子階層に制限します。
- SingleLevel:検索の範囲を、BaseDN および1つ下の子階層に制限します。
- BaseObject:検索の範囲を、ベースオブジェクトのみに制限します。
- LDAPVersion:サーバーに接続し、通信する際に使われるLDAP バージョン。2 に設定します。
LDAP への認証
リクエストを認証するには、User およびPassword プロパティを有効なLDAP クレデンシャルに設定します。例えば、User をDomain\\BobF またはcn=Bob F,ou=Employees,dc=Domain に設定します。
The AuthMechanism properties for the 本製品 are as follows:
- SIMPLE:The default plaintext value of the authentication mechanism to login to the server.
- NEGOTIATE:Negotiates whether to use NTLN or Kerberos when authenticating to the server.
SSL Configuration
By default, the driver uses plaintext when communicating with the server set to port=389. The driver automatically switches to use SSL when talking to the LDAP on port=636. You can force the connection to use the SSL connection property when set to SSL=TRUE.
テーブルのカスタマイズ
本製品 は、LDAP エンティティから最も頻繁に必要とされるカラムを表示します。ただし、その他のデータを使用する必要がある場合は、テーブルを簡単に変更できます。テーブルは、シンプルな形式のスキーマファイルで定義されます。
デフォルトのスキーマを拡張する方法や独自のスキーマを記述する方法については、LDAP テーブルとの連携 を参照してください。カスタムスキーマを使用するには、Location プロパティをスキーマファイルを有するフォルダに設定します。テーブルおよびビューについて詳しくは、サンプルデータモデル を参照してください。
データの取得
Select-LDAP cmdlet はデータを取得するためのネイティブなPowerShell インターフェースを提供します。
$results = Select-LDAP -Connection $conn -Table "User" -Columns @("Id, CN") -Where "CN='Administrator'"Invoke-LDAP cmdlet はSQL インターフェースを提供します。このcmdlet を使うと、Query パラメータを介してSQL クエリを実行できます。
cmdlet 出力のパイプ処理
cmdlet は行オブジェクトをパイプラインに一度に一行ずつ返します。以下は、結果をCSV ファイルにエクスポートします。
Select-LDAP -Connection $conn -Table User -Where "CN = 'Administrator'" | Select -Property * -ExcludeProperty Connection,Table,Columns | Export-Csv -Path c:\myUserData.csv -NoTypeInformation
Select-LDAP からの結果をSelect-Object cmdlet にパイプして、Export-CSV cmdlet にパイプする前にいくつかのプロパティを実行していることがわかるでしょう。これをする理由は、CData Cmdlets は接続、テーブル、およびカラムの情報を結果セットの各行オブジェクトに追加しますが、必ずしもその情報がCSV ファイルに必要ではないからです。
ただし、これによってcmdlet の出力を別のcmdlet にパイプすることが容易になります。以下に、結果セットをJSON に変換する例を示します。
PS C:\> $conn = Connect-LDAP -User 'MyUserName' -Password 'MyPassword' -Server 'MyServer' -Port 'MyPort' PS C:\> $row = Select-LDAP -Connection $conn -Table "User" -Columns (Id, CN) -Where "CN = 'Administrator'" | select -first 1 PS C:\> $row | ConvertTo-Json { "Connection": { }, "Table": "User", "Columns": [ ], "Id": "MyId", "CN": "MyCN" }
データの削除
以下は、抽出条件に合うあらゆるレコードを削除します。
Select-LDAP -Connection $conn -Table User -Where "CN = 'Administrator'" | Remove-LDAP
データの変更
cmdlet はデータクレンジング同様、データの変換を容易にします。次の例は、レコードがすでに存在するかどうか、挿入する前に更新が必要かどうかをチェックしてから、CSV ファイルのデータをLDAP にロードします。
Import-Csv -Path C:\MyUserUpdates.csv | %{ $record = Select-LDAP -Connection $conn -Table User -Where ("Id = `'"+$_.Id+"`'") if($record){ Update-LDAP -Connection $conn -Table User -Columns @("Id","CN") -Values @($_.Id, $_.CN) -Where "Id = `'$_.Id`'" }else{ Add-LDAP -Connection $conn -Table User -Columns @("Id","CN") -Values @($_.Id, $_.CN) } }