アカウントのロック解除、有効化/無効化、パスワードの変更、プロセスの強制終了/ユーザーのログオフなどの基本的なタスクを実行するために、ユーザーにGUIといくつかのボタンをクリックして提供するPSスクリプトに取り組んでいます。動作しない部分は次のとおりです。ユーザーの有効化/無効化とパスワードの変更。
まず第一に、すべてがドメイン管理者として機能しますが、ユーザーをドメイン管理者にすることはできないので、それを提案しないでください:)
パスワードの変更の部分は次のとおりです。
$name = "osman"
$Searcher = [ADSISearcher]"(sAMAccountName=$Name)"
$Results = $Searcher.FindOne()
$password = "pezevenk@321"
[string]$adspath = $Results.Properties.adspath
$enable = [ADSI]$adspath
$enable.psbase.invoke("SetPassword", $password)
$enable.psbase.CommitChanges()
エラーはかなり一般的です:
Exception calling "Invoke" with "2" argument(s): "Access is denied. (Exception from HRESULT: 0x80070005 (E_ACCESSDENIED))"
At line:14 char:13
+ $enable.psbase.invoke("SetPassword", $password)
さて、明らかに、これを試みる前に、ユーザーに適切なアクセス許可を与えようとしました。これを実行しているユーザーには、ADの「Users」フォルダーに委任された「パスワードのリセット」と「パスワードの変更」の権限があります。これにはすべてのユーザーが含まれます。
不足している権限を正確に確認する方法はありますか?あなたたちは他に必要なことを考えることができますか?
編集:これらはOUの権限です:
"CN=Users,DC=domainname,DC=root,DC=com","All","User","ReadProperty, GenericExecute","Descendents","00000000-0000-0000-0000-000000000000","bf967aba-0de6-11d0-a285-00aa003049e2","InheritedObjectAceTypePresent","Allow","domainname\osman","False","ContainerInherit","InheritOnly"
"CN=Users,DC=domainname,DC=root,DC=com","Pwd-Last-Set","User","ReadProperty, WriteProperty","Descendents","bf967a0a-0de6-11d0-a285-00aa003049e2","bf967aba-0de6-11d0-a285-00aa003049e2","ObjectAceTypePresent, InheritedObjectAceTypePresent","Allow","domainname\osman","False","ContainerInherit","InheritOnly"
"CN=Users,DC=domainname,DC=root,DC=com","Lockout-Time","User","WriteProperty","Descendents","28630ebf-41d5-11d1-a9c1-0000f80367c1","bf967aba-0de6-11d0-a285-00aa003049e2","ObjectAceTypePresent, InheritedObjectAceTypePresent","Allow","domainname\osman","False","ContainerInherit","InheritOnly"
"CN=Users,DC=domainname,DC=root,DC=com","User-Account-Control","User","WriteProperty","Descendents","bf967a68-0de6-11d0-a285-00aa003049e2","bf967aba-0de6-11d0-a285-00aa003049e2","ObjectAceTypePresent, InheritedObjectAceTypePresent","Allow","domainname\osman","False","ContainerInherit","InheritOnly"
"CN=Users,DC=domainname,DC=root,DC=com","User-Force-Change-Password","User","ExtendedRight","Descendents","00299570-246d-11d0-a768-00aa006e0529","bf967aba-0de6-11d0-a285-00aa003049e2","ObjectAceTypePresent, InheritedObjectAceTypePresent","Allow","domainname\osman","False","ContainerInherit","InheritOnly"
"CN=Users,DC=domainname,DC=root,DC=com","User-Change-Password","User","ExtendedRight","Descendents","ab721a53-1e2f-11d0-9819-00aa0040529b","bf967aba-0de6-11d0-a285-00aa003049e2","ObjectAceTypePresent, InheritedObjectAceTypePresent","Allow","domainname\osman","False","ContainerInherit","InheritOnly"
"CN=Users,DC=domainname,DC=root,DC=com","User-Change-Password","User","ExtendedRight","Descendents","ab721a53-1e2f-11d0-9819-00aa0040529b","bf967aba-0de6-11d0-a285-00aa003049e2","ObjectAceTypePresent, InheritedObjectAceTypePresent","Allow","domainname\osman","True","ContainerInherit","InheritOnly"
"CN=Users,DC=domainname,DC=root,DC=com","User-Force-Change-Password","User","ExtendedRight","Descendents","00299570-246d-11d0-a768-00aa006e0529","bf967aba-0de6-11d0-a285-00aa003049e2","ObjectAceTypePresent, InheritedObjectAceTypePresent","Allow","domainname\osman","True","ContainerInherit","InheritOnly"
元のAD.mscを編集して、必要に応じて機能を追加できます。
ここにいくつかのリンクがあります:
カスタムADコンソール
右クリックパスワードリセット
右クリックでロック解除
列を追加
問題に気づきました。これをテストしていた宛先ユーザー「osman」はドメイン管理者であり、ドメイン管理者は委任を継承していないようです(理由はわかりませんが、私が見る限り文書化されていません)。他のすべての非管理者は問題なく動作します!すべての提案をありがとう。
ユーザーが自分のパスワードを設定するために私が知っている唯一の方法は、このコマンドです。 Set-ADAccountPassword -Identity $ Name -Reset -NewPassword(ConvertTo-SecureString $ Password -AsPlainText -force)-PassThru現在のパスワードの入力を求めるか、NewPasswordを省略すると両方の入力を求めます。ヘルプデスクタイプの人にこれらの権限を付与しようとしている場合は、管理者アカウントでテストしていないことを確認してください。管理者ユーザーのパスワードは、属性adminCount = 1で保護されているため変更できません。ヘルプデスク担当者が、ユーザーOUのパスワード変更権限を使用してADUCのパスワードを変更できるようにします。ユーザーが自分のパスワードをリセットできる製品を購入することになりました。それがあなたの質問に正確に答えていないことは知っていますが、この情報のいくつかが役立つことを願っています。