dsgetやdsmodなどのdsコマンドでActive Directoryのパスワード無期限設定を変更する:Tech TIPS
コマンドプロンプトからユーザーアカウントを操作するためのコマンド「net user」は、Active Directoryで拡張された属性を操作できない。Active Directoryオブジェクトを操作するには、dsgetやdsmod、dsqueryなどのコマンドが利用できる。
対象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操作用のコマンドラインツール(dsgetやdsquery、dsmodなど)を利用するとよい(以下まとめて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 成功
■この記事と関連性の高い別の記事
- Windowsのnet userコマンドの使い方(TIPS)
- これだけは覚えておきたいWindowsのコマンドプロンプトの使い方(TIPS)
- Active Directoryオブジェクトの識別名(DN)とは(TIPS)
- Windowsのnetコマンドの使い方(TIPS)
- コマンドプロンプトでファイル共有を管理する(TIPS)
Copyright© Digital Advantage Corp. All Rights Reserved.