Hey, Scripting Guy!

Scripting Guys が皆さんの質問にお答えします

TechNet コラムへようこそ。このコラムでは、よく寄せられるシステム管理スクリプトに関する質問に Scripting Guys がお答えします。システム管理スクリプトについて質問がある場合は、scripter@microsoft.com (英語のみ) までお送りください。すべての質問に回答することはできないかもしれませんが、可能な限り対応いたします。

詳細情報

Hey, Scripting Guy! カテゴリ別アーカイブ

Hey, Scripting Guy! 日付別アーカイブ

Hey, Scripting Guy! ダウンロード (英語)

ユーザーのパスワードを設定し、そのユーザーが次にログオンしたときにパスワードの変更を要求する方法はありますか

 

Scripting Guy さん、よろしくお願いします。学校で、先生が生徒のパスワードをログオン名に変更してから、その生徒が次にログオンしたときにパスワードを変更させる方法はありますか

-- DS

DS さん、こんにちは。早速ですが、質問する相手を間違えていませんか。つまり、このコラムを書いている Scripting Guy は先生をしていたことがあります。もし、彼が生徒に何かを強制するやり方を知っていたら、いまだに先生をしていたでしょう。

実際に、このコラムを書いている Scripting Guy は、いつも生徒たちとうまくやっていました。事実、彼はいつも子供たちとうまくやっています。以上。彼の同僚の Scripting Guys の証言によれば、彼が問題を起こすのは大人とだけです。おそらく、数週間前に Scripting Son が指摘したように、「わかっていると思うけど、あなたはどこへ行ってもそこで一番未熟な人間だよ」ということのようです。もちろん、何がこの怒りを引き起こすのかは不明です。

あっ、そう言えば、心当たりがないわけでも…。

しかし、ここでは、あなたが、大人、子供、Scripting Guy のだれと付き合っているかに関係なく、ユーザーのパスワードをログイン名に設定して、そのユーザーがログオンしたときにパスワードを変更するように要求するスクリプトを紹介します。

Visual Basic
Set objUser = GetObject("LDAP://cn=Ken Myer,ou=Finance,dc=fabrikam,dc=com") 
 
objUser.SetPassword objUser.sAMAccountName 
 
objUser.Put "pwdLastSet", 0 
objUser.SetInfo
 

ええ、そのとおり。このスクリプトは、非常に短くて簡潔ですよね。それにもかかわらず、このコラムを書いている Scripting Guy が先生を辞めたもう一つの理由は、先生の仕事がハードだったからです。Scripting Guys の場合は、ええと…。

ご覧のように、まず、Active Directory 内のユーザー アカウントにバインドします。次のコード行で、この処理を行っています。

Visual Basic
Set objUser = GetObject("LDAP://cn=Ken Myer,ou=Finance,dc=fabrikam,dc=com")
 

次に、ユーザーのパスワードを変更するために SetPassword メソッドを呼び出します。SetPassword を使って、ユーザーの新しいパスワードをパラメータとして指定する必要があります。新しいパスワードをユーザーのログオン名にするために、sAMAccountName 属性の値を渡します。

Visual Basic
objUser.SetPassword objUser.sAMAccountName
 

信じられないかもしれませんが、やらなければならないことはユーザーのパスワードを設定することだけです。

ユーザーのログオン時にパスワードの変更を要求するのはこの 2 倍大変です。つまり、次の 2 行のコードのすべてが必要です。

Visual Basic
objUser.Put "pwdLastSet", 0 
objUser.SetInfo
 

最初の行で、値 0 を pwdLastSet 属性に代入します。この属性は、ユーザーがパスワードを変更したかどうかを追跡します。値が 0 に設定されている場合は、ユーザーが次のログオン時にパスワードを変更する必要があります。

2 行目で、SetInfo メソッドを呼び出して、更新された属性値を Active Directory に書き戻します。

これで目的が達成されましたよ、DS さん。もちろん、先生が、ユーザーのパスワードを変更して、pwdLastSet 属性を更新する権限を持っていればの話です。

先生について言えば、このコラムを書いている Scripting Guy は教えることを本当に楽しんでいます。それは、彼がコーチングに多くの時間をかけることからもわかります。彼が好きになれなかったのは、自分たちが何をやっているのか、なぜやっているのかさえわからない巨大で非人間的な官僚機構の教育区でした。そして、そんな彼が最後に選んだのが Microsoft です。

ええ、言いたいことはわかっています。しかし、だれに頼まれても、そう言ったのはあなたで私たちではありませんから。


ページのトップへ