ディレクトリサービス復元モード(DSRM)のパスワードは、新しいドメインコントローラーを昇格するときに最初に設定されます。 私は、ドメインコントローラのDSRMパスワードが知られていないか、必要なときに取得のために安全に保存されていない多くのActive Directory環境に遭遇しました。
ドメインコントローラには、ワークステーションやサーバーのように、いつでもローカルにログオンするために使用できるローカル管理者アカウントがありません。 ドメインコントローラーでActive Directoryに障害が発生した場合、ドメイン資格情報を使用してサーバーにログオンしてActive Directoryを修復できないことがあります。
ディレクトリサービス復元モード(DSRM)は、ドメインコントローラのブートオプションであり、Active Directoryに障害が発生した場合でもサーバーにログオンできます。 ワークステーションまたはサーバーのローカル管理者アカウントに似たアカウントを使用します。 DSRMで起動した後にドメインコントローラーにログオンするには、次のように入力します。以下の図に示すように、DSRMパスワードを使用したユーザー名として\administrator。 これにより、ドメインリソースにアクセスせずにローカルにログに記録されます。


DSRMパスワードは各ドメインコントローラに固有であるため、環境内の各ドメインコントローラのDSRMパスワードリセットプロセスを実行する必要があります。 Dsrmでドメインコントローラーを起動すると、DSRMパスワードをリセットできません。
ここで、DSRMパスワードをリセットする手順を説明します。
NTDSUTIL
NTDSUTILコマンドは、DSRMパスワードをリセットするために使用されます。 このユーティリティは、コマンドプロンプトから使用することができ、また、Windows PowerShellで動作します。
コマンドプロンプトまたはWindows PowerShellで実行する手順は次のとおりです:
- ntdsutil
- set dsrm password
“Reset DSRM Administrator Password”プロンプトが表示されます。

このプロンプトでは、DSRMパスワードのリセットを完了するための二つのパラメータから選択できます:
- サーバーのパスワードをリセット%s
- ドメインアカウントから同期%s
これらの各パラメータの手順を実行して、それらの違いを示します。
サーバー%sのパスワードをリセット
リモートドメインコントローラ名を指定できます。 %sはサーバー名のプレースホルダーです。 これは、ドメインコントローラにログオンしているときにローカルサーバでも実行できます。
リモートサーバー: reset password on server dcs001p01
Local server:reset password on server null
新しいDSRMパスワードを入力し、サーバー%sにreset passwordを入力した後、新しいパスワードを確認します。Qを二度入力してNTDSUTILユーティリテ


手順は、プロンプトで入力する必要があるパスワードを除いて、単一行で入力することもできます。
ntdsutil”dsrmパスワードの設定””サーバー dcs001p01のパスワードのリセット””q””q”

ドメインアカウント%sからの同期
別のオプションは、ドメインアカウント%sからの同期パラメータを使用することです。 %sはドメインユーザーアカウントのプレースホルダーです。 プロセス中にDSRMパスワードを指定する代わりに、ローカルドメインコントローラーの新しいDSRMパスワードを、指定したドメインユーザーアカウントのパスワードと
これはワンタイムパスワード同期ですリセットを実行すると、パスワードはユーザーアカウントと同期されません。 ユーザーアカウントのパスワードをリセットしても、DSRMパスワードは変更されません。 DSRMパスワードは、DSRMパスワードリセット手順を完了したときにのみ変更されます。
ドメインにsvc-dcというアカウントを作成し、複雑なパスワード(DSRMパスワードに使用したい)を設定し、アカウントも無効にしました。 アカウントは、既定の”ドメインユーザー”以外のグループのメンバーではありません。 このアカウントは、ドメインコントローラでDSRMパスワードを設定するために使用されている他のタスクには使用されません。
これは、ターゲットドメインコントローラでローカルに完了する必要があります。 このパラメーターは、ローカルサーバー上のDSRMパスワードのみをリセットします。 以下の例のように、ドメインコントローラでコマンドが実行されないとエラーが表示されます:

ソースアカウントがActive Directoryドメインのユーザーアカウントであることを確認します。
ソースアカウントが対話型ログオンにスマートカードを必要とするとマークされていません。
ソースアカウントの有効期限が切れていません。
ソースアカウントパスワードの有効期限が切れていません。
WIN32エラーコード:0x32
エラーメッセージ:要求はサポートされていません。
リセットコマンドは、1行で入力することもできます。
ntdsutil”set dsrm password””sync from domain account svc-dc””q””q”

ドメインコントローラーでコマンドを実行すると、それ以上のプロンプトが表示されずに正常に完了します。 DSRMパスワードは、ドメインユーザーアカウントで構成されたパスワードに設定されます。 次回は、ドメインユーザーアカウントのパスワードを変更し、パスワードリセットプロセスを再度実行して、ドメインコントローラのDSRMパスワードを更新で
ただし、環境のサイズによっては、すべてのドメインコントローラへのログオンに時間がかかる場合があります。 Windows PowerShellリモート処理は、コマンドをリモートで実行する機能を提供します。 Invoke-Commandを使用して、任意のデバイスからリモートドメインコントローラでDSRMパスワードリセットを実行できます。
Invoke-Command-ComputerName DCS001P01-ScriptBlock{ntdsutil”set dsrm password””sync from domain account svc-dc””q””q” }

すべてのドメインコントローラーに同じパスワードを使用する予定の場合は、PowerShellコマンドを簡単に適用して、ドメイン内のすべてのドメインコントローラーのパスワードを変更することができます。
Get-ADDomainController -Filter * | ForEach-Object { Invoke-Command -ComputerName $_.hostname -ScriptBlock { ntdsutil "set dsrm password" "Sync from domain account svc-dc" "q" "q" } write-host $_.hostname }

また、ドメインコントローラごとに個別のユーザーアカウントを使用して、ドメインコントローラごとにDSRMパスワードが異なるようにすることもできます。 リモートPowerShellコマンドは、ドメインコントローラーとユーザーアカウントの組み合わせごとに別々の行に入力できます。 後で使用するためにスクリプトを保存します。 この例では、各ドメインコントローラのアカウントを作成しました:
Invoke-Command -ComputerName DCS001P01 -ScriptBlock { ntdsutil "set dsrm password" "Sync from domain account svc-DCS001P01" "q" "q" }Invoke-Command -ComputerName DCS002P01 -ScriptBlock { ntdsutil "set dsrm password" "Sync from domain account svc-DCS002P01" "q" "q" }
PowerShell ISEで保存された.PS1ファイルを再使用して、すべてのドメインコントローラでリセットを実行できるようになりました。 次のDSRMパスワードの変更では、ユーザーアカウントのパスワードを変更し、スクリプトを再度実行してドメインコントローラのDSRMパスワードを更新するだけです。

スケジュールされたタスク
ドメインコントローラーでスケジュールされたタスクを構成して、ドメインアカウント%sからの同期パラメーターを使用してDSRMパ
タスクは、ドメインユーザーアカウントと同期することにより、DSRMパスワードを設定するために毎日実行することができます。 DSRMパスワードは、ユーザーアカウントパスワードが変更された場合にのみ効果的に変更されます。 私の次のDSRMパスワード変更スケジュールでは、私がする必要があるのは、ユーザーアカウントのパスワードを変更し、スケジュールされたタスクが残りの世話を
この方法は慎重に使用してください!
スケジュールされたタスクは、適切なアクセス許可を持つドメインコントローラ上で無人で実行されます。 承認されていないユーザーがreference serviceアカウントのパスワードを変更できる場合、ドメイン管理者権限を必要とせずにDSRMパスワードも事実上変更します。
サービスアカウントは保護され、監査される必要があり、私の意見では、drsmパスワードの変更を管理するためにスケジュールされたタスクを使用する利点を上回る管理上のオーバーヘッドが追加されます。
スケジュールされたタスクが失敗する可能性があり、DSRMパスワードが期待どおりに変更されない可能性があります。 これにより、DSRMでドメインコントローラーにログオンできない状況が発生する可能性があります。 スケジュールされたタスクは効果的に監視する必要があり、管理作業に追加される可能性があります。