ASP.NETを使用していると思いますか?私は実際には経験がなく、一般的に.NETの経験もあまりありません(私はまだ自分自身を学んでいます)が、これはさまざまなActive Directory APIの例を提供する非常に便利なリンクでした(リンク)。ユーザーパスワードのリセットを含みます。設定方法がわからない場合は、DirectoryEntryクラスへのリンクを次に示します(link)。さらに、名前空間のドキュメントを閲覧するだけでも非常に役立ちます(リンク)。おそらく、私がMicrosoftについて気に入っているのは、優れたドキュメントだけです。
私は通常次のようなことをします(IronPythonで、使用できるコードに直接変換されません):
ou = System.DirectoryServices.DirectoryEntry("LDAP://ou=Users,dc=whatever,dc=something,dc=localetc")
search = System.DirectoryServices.DirectorySearcher(ou, "(samAccountName="+acc"+")", Array[str](["distinguishedName"]]))
result = search.FindAll() # note 1
if result.Count != 1:
raise BadError
else:
ent = System.DirectoryServices.DirectoryEntry(result[0].Properties["distinguishedName"][0])
ent.Username = admin # note 2
ent.Password = pwd
ent.Invoke("SetPassword", Array[object](["newpassword!"]))
ent.Properties["LockOutTime"].Value = 0
ent.CommitChanges()
ノート:
これで複数の結果が返される場合は、問題があります。
これとパスワードは、これを実行しているアカウントにユーザーを変更する権限がない場合にのみ必要です。私はこれらを非特権アカウントで実行しているので、スクリプトに管理者の資格情報を含める必要があります(心配しないでください。ハードコードされていません)。
ああ、あなたはアカウントのロックアウトのしきい値がかなり高いです。ユーザーの適性に応じて、3〜5をお勧めします。