連載
» 2006年12月16日 05時00分 UPDATE

Tech TIPS:dsgetやdsmodなどのdsコマンドでActive Directoryのパスワード無期限設定を変更する

コマンドプロンプトからユーザーアカウントを操作するためのコマンド「net user」は、Active Directoryで拡張された属性を操作できない。Active Directoryオブジェクトを操作するには、dsgetやdsmod、dsqueryなどのコマンドが利用できる。

[打越浩幸,デジタルアドバンテージ]
「Tech TIPS」のインデックス

連載目次

対象OS:Windows XP / Windows Server 2003



解説

 コマンドプロンプトからドメインのユーザーアカウントを操作する場合、「net user /domain」コマンドが利用できる。詳細についてはTIPS「net userコマンドの使い方」を参照していただきたいが、ドメインアカウントの作成や削除、属性の設定確認/変更などができる。

 だがnet userコマンドは、もともとはWindows NT時代に(Windows NTのユーザーアカウントの仕組み向けに)作られたコマンドであり、Active Directory関連で追加・拡張された属性を確認したり、操作したりすることができない。

 例えばユーザーアカウントの「パスワードを無期限にする」という属性をオンにしたくても(net user /domain /add 〜で追加した直後は、デフォルトではオフになっている)、net userコマンドでは操作できない。

 このような目的のためには、Windows Server 2003で追加されたActive Directory操作用のコマンドラインツール(dsgetdsquerydsmodなど)を利用するとよい(以下まとめてdsコマンドと呼ぶことにする)。

 Windows XPの場合は、TIPS「サーバ用管理ツールをクライアントPCにインストールする」の方法でWindows Server 2003(SP1もしくはR2)の管理ツール(adminpak.msiファイル)をインストールすれば、同様に利用できる。

操作方法

 コマンドプロンプトからActive Directoryの情報を操作するためには、dsqueryやdsget、dsmodなどのツールを利用する。

ツール 用途
dsadd.exe Active Directoryオブジェクトの追加
dsget.exe Active Directoryオブジェクトのプロパティの取得
dsmod.exe Active Directoryオブジェクトのプロパティの変更
dsmove.exe Active Directoryオブジェクトの移動/名前変更
dsquery.exe Active Directoryオブジェクトの問い合わせ
dsrm.exe Active Directoryオブジェクトの削除
Active Directoryオブジェクト操作用のdsコマンド
これらはWindows Server 2003で追加されたコマンド。Windows XPの場合は、Windows Server 2003に含まれる管理ツールパックからインストールすれば利用できる。

 それぞれのコマンドの詳しい使い方は、ヘルプとサポートセンターで検索するか、「dsquery /?」とか「dsquery user /?」などで見ることができる。dsqueryの結果をパイプで別のコマンドに送り、複数のオブジェクトに対してまとめて操作するといったこともできる。

 以下ではこれらのコマンドの使用例として、ユーザーアカウントの「パスワードを無期限にする」という属性(フラグ)をオンにする方法を紹介する。その他の使い方については、今後別TIPSで取り上げる。

●dsqueryコマンドによるActive Directory情報のクエリ

 dsコマンドを利用するためには、Active Directory上のオブジェクトを指定するために「識別名(DN:Distinguished Name)」と呼ばれる表記方法を利用する。これは例えば「CN=hiroshi,CN=Users,DC=example,DC=com」というふうに表記する(これはexample.comドメインのUsersコンテナにあるhiroshiというユーザー名という意味)。

 このDNを簡単に求めるには、dsqueryコマンドを利用すればよい。名前を検索するだけならば、例えば次のようにする。これは先頭が「hi」で始まるユーザー名の一覧を表示させているところである。結果がDNで表示されるので、その後のコマンドではこれを利用すればよいだろう。

C:\>dsquery user -name hi* ……hiで始まる名前の検索
"CN=hiroaki,CN=Users,DC=example,DC=com" ……結果
"CN=hiroko,CN=Users,DC=example,DC=com"
"CN=hiroshi,CN=Users,DC=example,DC=com"
"CN=hirotaka,OU=SupportStaffs,DC=example,DC=com"

C:\>



 結果は前後がダブルクオート記号で囲まれているが、以下のコマンドで指定する場合は、途中に空白記号などが含まれていなければ省略してもよい。だが間違えないように、常にダブルクオートで囲むようにした方がいいだろう。

●dsgetコマンドで属性を取得する

 DNが分かったら、それを使ってユーザーアカウントの属性を調べてみよう。このためにはdsgetコマンドを利用するが、「パスワードを無期限にする」という属性を調べるには、さらに「-pwdneverexpires」というパラメータを指定する。指定可能なパラメータの一覧は「dsget user /?」で確認していただきたい。

C:\>dsget user "CN=hiroshi,CN=Users,DC=example,DC=com" -pwdneverexpires
  pwdneverexpires ……属性名
  no ……結果は「no」。つまり、この設定フラグはオフ
dsget 成功 ……dsgetコマンドの実行は正常に終了

C:\>



●dsmodによる属性の変更

 確認した属性の値を変更するには、dsgetコマンドに代えてdsmodコマンドを実行すればよい。そして最後に「-pwdneverexpires yes」とか「-pwdneverexpires no」などと指定する。ほかのオプションについては、「dsmod user /?」で確認していただきたい。

■属性の設定
C:\>dsmod user "CN=hiroshi,CN=Users,DC=example,DC=com" -pwdneverexpires yes
dsmod 成功:CN=hiroshi,CN=Users,DC=example,DC=coms ……成功した

■属性の確認
C:\>dsget user "CN=hiroshi,CN=Users,DC=example,DC=com" -pwdneverexpires
  pwdneverexpires
  yes ……結果
dsget 成功



「Tech TIPS」のインデックス

Tech TIPS

Copyright© 1999-2017 Digital Advantage Corp. All Rights Reserved.

@IT Special

- PR -

TechTargetジャパン

この記事に関連するホワイトペーパー

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。