接続の確立
CData Cmdlets ユーザーは、データモジュールをインストールし、接続プロパティを設定してスクリプトを開始できます。このセクションでは、CSV インポートおよびエクスポートcmdlet などのネイティブPowerShell cmdlet でActiveDirectory Cmdlets を使用する例を示します。
インストールおよび接続
PSGet がある場合は、PowerShell Gallery から次のコマンドを使ってcmdlet をインストールできます。CData サイトからセットアップを取得することもできます。
Install-Module ActiveDirectoryCmdlets
プロファイルに以下を追加すると、次のセッションでcmdlet がロードされます。
Import-Module ActiveDirectoryCmdlets;
Connect-AD cmdlet を使って、別のcmdlet に渡すことができる接続オブジェクトを作成します。
$conn = Connect-AD -User 'MyUserName' -Password 'MyPassword' -Server 'MyServer' -Port 'MyPort' -BaseDN 'MyDN'
Microsoft Active Directory への接続
基本接続には、Server およびPort を設定します。さらに、次のように接続を微調整できます。
- FollowReferrals:設定すると、本製品 は参照サーバーのデータのみをビューとして表示します。参照サーバー上のデータを変更するには、このサーバーをServer およびPort で指定する必要があります。
- LDAPVersion:サーバーが実装するプロトコルのバージョンに設定します。デフォルトでは、本製品 はversion 2 を使用します。
- UseDefaultDC:デフォルトのDomain Controller への接続、および既存のユーザー資格情報で認証するために設定します。
Microsoft Active Directory への認証
リクエストを認証するには、 User およびPassword プロパティを有効なMicrosoft Active Directory クレデンシャル(例:User をDomain\\BobF またはcn=Bob F,ou=Employees,dc=Domain)に設定します。
本製品 は、デフォルトでプレーンテキスト認証を使用します。これは、本製品 がサーバーとTLS/SSL のネゴシエーションを試みるためです。 AuthMechanism を使って別の認証方法を指定できます。
TLS/SSL コンフィギュレーションについて詳しくは、SSL の設定 を参照してください。
データアクセスのファインチューニング
次のプロパティは、返されるデータのスコープを制御します。
- BaseDN は、LDAP 検索の範囲を指定された識別名の高さに限定します。 Note:BaseDN の範囲を絞ることはパフォーマンスを劇的に向上させます。例えば、cn=users,dc=domain の値は、cn=users およびその子に含まれる結果のみを返します。
- Scope:このプロパティを使用すると、サブツリーから返されるデータをより細かく制御できます。
テーブルのカスタマイズ
本製品 は、Microsoft Active Directory エンティティから最も頻繁に必要とされるカラムを表示します。ただし、その他のデータを使用する必要がある場合は、テーブルを簡単に変更できます。テーブルは、シンプルな形式のスキーマファイルで定義されます。
デフォルトのスキーマを拡張する方法や独自のスキーマを記述する方法については、Active Directory テーブルとの連携 を参照してください。 カスタムスキーマを使用するには、Location プロパティをスキーマファイルを有するフォルダに設定します。
データの取得
Select-AD cmdlet はデータを取得するためのネイティブなPowerShell インターフェースを提供します。
$results = Select-AD -Connection $conn -Table "User" -Columns @("Id, CN") -Where "CN='Administrator'"Invoke-AD cmdlet はSQL インターフェースを提供します。このcmdlet を使うと、Query パラメータを介してSQL クエリを実行できます。
cmdlet 出力のパイプ処理
cmdlet は行オブジェクトをパイプラインに一度に一行ずつ返します。以下は、結果をCSV ファイルにエクスポートします。
Select-AD -Connection $conn -Table User -Where "CN = 'Administrator'" | Select -Property * -ExcludeProperty Connection,Table,Columns | Export-Csv -Path c:\myUserData.csv -NoTypeInformation
Select-AD からの結果をSelect-Object cmdlet にパイプして、Export-CSV cmdlet にパイプする前にいくつかのプロパティを実行していることがわかるでしょう。これをする理由は、CData Cmdlets は接続、テーブル、およびカラムの情報を結果セットの各行オブジェクトに追加しますが、必ずしもその情報がCSV ファイルに必要ではないからです。
ただし、これによってcmdlet の出力を別のcmdlet にパイプすることが容易になります。以下に、結果セットをJSON に変換する例を示します。
PS C:\> $conn = Connect-AD -User 'MyUserName' -Password 'MyPassword' -Server 'MyServer' -Port 'MyPort' -BaseDN 'MyDN' PS C:\> $row = Select-AD -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-AD -Connection $conn -Table User -Where "CN = 'Administrator'" | Remove-AD
データの変更
cmdlet はデータクレンジング同様、データの変換を容易にします。次の例は、レコードがすでに存在するかどうか、挿入する前に更新が必要かどうかをチェックしてから、CSV ファイルのデータをMicrosoft Active Directory にロードします。
Import-Csv -Path C:\MyUserUpdates.csv | %{ $record = Select-AD -Connection $conn -Table User -Where ("Id = `'"+$_.Id+"`'") if($record){ Update-AD -Connection $conn -Table User -Columns @("Id","CN") -Values @($_.Id, $_.CN) -Where "Id = `'$_.Id`'" }else{ Add-AD -Connection $conn -Table User -Columns @("Id","CN") -Values @($_.Id, $_.CN) } }