前回までは,複数のLDAPオブジェクトデータをエクスポート/インポートする(バルクインポート)ツールとして,csvdeやldifdeを紹介しました。これらのツールは大量のアカウントを同時に作成/変更することに最適化されており,個々のオブジェクト情報の検索や変更を行なうのは得意ではありません。今回は個々のオブジェクトデータを直接操作するコマンドを紹介します。
DS*コマンドとは
DS*コマンドは,個々のLDAPオブジェクトを検索/表示/変更/移動/削除するコマンド群の総称となります。目的に応じて異なるコマンドを利用します。目的別コマンドのリストを表1に示します。
表1 DS*コマンドの一覧
| dsquery | LDAPオブジェクトを検索する |
| dsadd | LDAPオブジェクトを新規に追加する |
| dsget | LDAPオブジェクトの内容を表示する |
| dsmod | LDAPオブジェクトの内容を変更する |
| dsmove | LDAPオブジェクトを移動する |
| dsrm | LDAPオブジェクトを削除する |
各コマンドには,操作するオブジェクトの種類ごとのサブメニューがあり(dsmoveとdsrmにはありません),実際はサブメニューを指定した形でコマンドを実行します。たとえば,"ユーザアカウントを検索したい"ならdsquery userコマンドを,"コンピュータアカウントを検索したい"ならdsquery computerコマンドを使います。一例としてdsqueryコマンドのサブメニューを記載しますが,dsquery /?コマンドヘルプから,情報の詳細を確認できます(他のコマンドも同じ要領です)。なお,コマンドによってサブメニューの内容が異なる点には,注意します。
表2 dsqueryコマンドのサブメニュー
| dsquery computer | "コンピュータ"オブジェクトを検索する |
| dsquery contact | "連絡先"オブジェクトを検索する |
| dsquery subnet | "サブネット"オブジェクトを検索する([Active Directoryサイトとサービス]で利用する) |
| dsquery group | "グループ"オブジェクトを検索する |
| dsquery ou | "OU"オブジェクトを検索する |
| dsquery site | "サイト"オブジェクトを検索する([Active Directoryサイトとサービス]で利用する) |
| dsquery server | "サーバ(DSA)"オブジェクトを検索する([Active Directoryサイトとサービス]で利用する) |
| dsquery user | "ユーザ"オブジェクトを検索する |
| dsquery quota | "ディレクトリパーティションでのクォータ設定"オブジェクトを検索する |
| dsquery partition | "ディレクトリパーティション"を検索する |
| dsquery * | フィルタを使って汎用的にオブジェクトを検索する |
また,DS*コマンドをサブメニューには,サブメニューの内容に添ったオプションが用意されています。たとえばdsquery userコマンドの-inactiveオブションを使うと,一定期間ログオンしていないユーザを検索する,ということができます。一例としてdsquery userコマンドのサブメニューを記載しますが,dsquery user /?コマンドヘルプから,情報の詳細を確認できます(他のコマンドも同様です)。
表3 dsquery userコマンドのサブメニュー
| {<開始ノード>|forestroot|domainroot} | 検索を開始するノードを指定する。 |
| -o {dn|rdn|upn|samid} | 出力形式を指定する。 |
| -scope {subtree|onelevel|base} | 検索のスコープを指定する。 |
| -name <名前> | name属性(名前)で一致するオブジェクトを検索する。 |
| -namep <ふりがな> | msDS-PhoneticDisplayName属性(表示名のふりがな)で一致するオブジェクトを検索する。 |
| -desc <説明> | description属性(説明)で一致するオブジェクトを検索する。 |
| -upn <UPN> | userPrincipalName属性(UPN)で一致するオブジェクトを検索する。 |
| -samid <SAMアカウント名> | saMAccountName属性(SAMアカウント名)で一致するオブジェクトを検索する。 |
| -inactive <週> | <週>週間の間ログオンしていないオブジェクトを検索する。 |
| -stalepwd <日> | <日>日間パスワードを変更していないオブジェクトを検索する。 |
| -disabled | 無効なアカウントとなるオブジェクトを検索する。 |
| {-s <サーバ名>"|-d "<ドメイン名>} | 接続先のドメインコントローラやドメインを指定する。 |
| -u <ユーザ名> | 指定したユーザ名で接続する。 |
| -p {<パスワード>|*} | 接続するユーザのパスワードを指定する。 |
| -q | 標準出力への出力を抑制する。 |
| -r | 紹介(他のLDAPサーバへの再検索)を再帰的に行うか指定する。 |
| -gc | グローバルカタログを検索する。 |
| -limit <オブジェクト数> | 検索により返されるオブジェクト数を指定する。 |
| {-uc|-uco|-uci} | パイプラインやファイルへの入力や出力をUnicode形式にするかどうか指定する。 |
ds*コマンドのサブメニューがあることで,LDAPフィルタを使ったオブジェクトの種類を指定する方法を知らなくても,必要な種類のオブジェクトを簡単に操作することができます。(サブメニューにない)特殊なオブジェクトや属性をキーワードとして操作したい場合,dsquery *コマンドを使って汎用的にオブジェクトを検索することができます。
DS*コマンドのもうひとつの強みは,"パイプライン"が使えることです。パイプラインとは,あるコマンドの実行結果を透過的に引き継いで,次に実行するコマンドのパラメータ(引数)の一部とする,ということです。この機能を使うことで,たとえばdsqueryコマンドで検索抽出したすべてのオブジェクトの詳細データを,dsgetコマンドで確認することができます。

