シェルでの RollAlternateserviceAccountCredential.ps1 スクリプトの使用

製品: Exchange Server 2013

Exchange Server 2013 の RollAlternateServiceAccountPassword.ps1 スクリプトを使用して、代替サービス アカウント資格情報 (ASA 資格情報) を更新し、指定したクライアント アクセス サーバーに更新プログラムを配布できます。

注:

Exchange 管理シェルでは、スクリプトが自動的に読み込まれません。 すべてのスクリプトの前に .\ が必要です。たとえば、RollAlternateServiceAccountPassword.ps1 スクリプトを実行するには、「」と入力します .\RollAlternateServiceAccountPassword.ps1

このスクリプトは英語版のみが提供されます。

スクリプトの使用方法および記述方法の詳細については、「Scripting with the Exchange Management Shell」を参照してください。

構文

RollAlternateServiceAccountPassword.ps1 -Scope <Object> -Identity <Object> -Source <Object> -

解説

この手順を実行する際には、あらかじめアクセス許可が割り当てられている必要があります。 必要なアクセス許可を確認するには、「クライアント アクセス許可」トピックの「クライアント アクセス セキュリティ」エントリを参照してください。

代替サービス アカウントの資格情報スクリプトの技術的詳細

このスクリプトを使用すると、ASA 資格情報の設定と管理が容易になります。 ASA 資格情報を作成し、適切なサービス プリンシパル名を設定したら、スクリプトを使用して、資格情報を対象となるすべてのクライアント アクセス サーバーに配布できます。

スクリプトを使用するには、配布対象となるサーバーと、ASA 資格情報として使用する資格情報を特定する必要があります。

サーバー スコープ

スクリプトの実行対象として、フォレスト内のすべてのクライアント アクセス サーバー、特定のクライアント アクセス サーバー アレイのすべてのメンバー、特定のサーバーのいずれかを選択してください。 使用できるパラメーターは 、ToEntireForestToArraryMembersおよび ToSpecificServers です。 スクリプトの実行対象として、特定のサーバーまたは特定のサーバー アレイのメンバーのいずれかを指定する場合は、Identity パラメーターに、対象のサーバー名またはサーバー アレイ名を指定する必要があります。

資格情報ソース

このスクリプトは、代替サービス アカウント パスワードを既存のサーバーからコピーできます。 または、使用する代替サービス アカウントを指定して、スクリプトを使用してこのアカウントの新しいパスワードを生成できます。 使用可能なパラメーターは GenerateNewPasswordForCopyFrom ですGenerateNewPasswordFor パラメーターでは、DOMAIN\Account Name という形式でアカウント文字列を指定する必要があります。 コンピューター アカウントを使用する場合は、CONTOSO\ClientServerAcct$ のように、アカウント名の最後に "$" を指定する必要があります。 CopyFrom パラメーターには、資格情報ソースとして既存のクライアント アクセス サーバー名を指定します。

資格情報の新しいパスワードの生成

新しいパスワードは、スクリプトによって作成されます。 ユーザーによる入力は必要ありません。 スクリプトによって、パスワードがすべての対象コンピューターに配布され、新しく生成されたパスワードで Active Directory アカウントの資格情報が更新されます。

新しく生成されたパスワードは最大 73 文字で、強力なパスワードの標準的な要件を満たします。 パスワードの要件が異なる場合は、パスワードを手動で設定し、そのパスワードを対象サーバーにコピーする必要がある場合があります。

サービスの中断を防ぐために、スクリプトは各クライアント アクセス サーバーを調べ、新しいパスワードを追加するだけでなく、現在のパスワードを保持します。 スクリプトの実行後、共有 ASA 資格情報は、Active Directory に格納されている現在のパスワードまたは Active Directory にまだ設定されていない新しいパスワードの 2 つのパスワードのいずれかを使用できます。

期限が切れたパスワードなどの有効でなくなったパスワードはすべて、配布先サーバーから削除されます。 おそらくパスワードの有効期限が切れたために Active Directory のパスワードが変更できない場合は、スクリプトによってパスワードのリセットが試みられます。 これを行うには、代替サービス アカウントがコンピューター アカウントであるかユーザー アカウントであるかによって、Active Directory のコンピューター アカウント パスワードまたはユーザー アカウント パスワードをリセットするアクセス許可が、スクリプトを実行しているアカウントに必要になります。

対象のクライアント アクセス サーバーすべてに対してパスワードが正常に変更されない場合、Active Directory パスワードの更新によって、認証エラーが発生することがあります。 スクリプトを無人モードで実行すると、対象のクライアント アクセス サーバーすべてが正常に更新されなければ、Active Directory パスワードは新しいパスワードで更新されません。 スクリプトを有人モードで実行すると、Active Directory のパスワードを更新するかを確認するメッセージが表示されます。

パスワードの管理を自動化するためのスケジュールされたタスクの作成

継続的にパスワードを管理するためにスケジュールされたタスクを作成するためにスクリプトを使用する場合、CreateScheduledTask パラメーターを使用します。 このパラメーターには、作成するタスク名の文字列が必要です。

注:

スケジュールされた無人タスクを作成する場合、事前にスクリプトを実行して、有人モードでスクリプトが正常に動作することを確認してください。

スクリプトは、スクリプトが配置されているフォルダーに .cmd ファイルを作成します。 次に、その .cmd ファイルを 3 週間ごとに実行するタスクを作成します。 Windows タスク スケジューラを使用すると、スケジュールされたタスクを変更できます。たとえば、多かれ少なかれ実行されるように設定できます。 既定では、タスクは現在ログオンしているユーザーとして実行されます。 さらに、スクリプトは、ユーザーがコンピューターにログオンしている場合にのみ実行されます。 ユーザーがログオンしているかどうかに関係なく、スケジュールされたタスクを実行するように変更することをお勧めします。 別のアカウントで実行することもできます。そのアカウントに、パスワードと Exchange Enterprise 管理者ロールをリセットするための Active Directory アクセス許可がある場合は、 スケジュールされたタスクを作成すると、スクリプトは自動的に無人モードで実行されます。

スクリプトのスコープ外のタスク

このスクリプトでは、ASA 資格情報の SPN を管理することも、サーバーから代替サービス アカウントを削除することもできません。 サーバーから代替サービス アカウントを削除するには、「負荷分散されたクライアント アクセス サーバーに 対する Kerberos 認証 の構成」の 「Kerberos 認証をオフにする」セクションを参照してください。

スクリプトのトラブルシューティング

スケジュールされた無人タスクを作成する場合、事前にスクリプトを実行して、有人モードでスクリプトが正常に動作するのを確認することをお勧めします。 トラブルシューティング情報については、「RollAlternateServiceAccountCredential.ps1 スクリプトのトラブルシューティング」を参照してください。

スクリプトの検証

-verbose フラグを使用してスクリプトを対話的に実行する場合、スクリプトの出力によって正常に終了したスクリプトの処理が示される必要があります。 クライアント アクセス サーバーが更新されたことを確認するには、ASA 資格情報上の最終変更時刻のタイム スタンプを確認してください。 次の例では、クライアント アクセス サーバーの一覧と、代替サービス アカウントの最終更新時刻を生成します。

Get-ClientAccessServer -IncludeAlternateServiceAccountCredentialstatus |Fl Name, AlternateServiceAccountConfiguration

スクリプトを実行しているコンピューターでイベント ログを調べることもできます。 スクリプトのイベント ログ エントリは、ソースの MSExchange Management Application から収集され、アプリケーション イベント ログに記録されます。 次の表に、記録されるイベントと、その意味を一覧します。

スクリプトのイベント ID と説明

イベント 説明
14001 開始
14002 成功 (情報)
14003 成功しましたが、警告が生成されました。

スクリプトでいくつかの問題が発生しましたが、それらを解決できたか、またはユーザー入力によって問題を解決する必要がないことが確認されました。 スクリプトを対話モードで実行している場合、警告の詳細については、スクリプトの出力を参照してください。
14004 失敗

スクリプトをスケジュールされたタスクとして実行する場合、タスクの実行結果は、Exchange サーバーの [Logging] フォルダー内の、[ RollAlternateServiceAccountPassword] という名前のサブフォルダーにログ記録されます。

ログを使用して、タスクが正常に実行されたことを確認できます。

パラメーター

パラメーター 必須 説明
ToEntireForest オプション ToEntireForest パラメーターは、スクリプトをフォレスト内のすべてのクライアント アクセス サーバーにターゲットします。
ToArrayMembers 省略可能 ToArrayMembers パラメーターは、特定のクライアント アクセス サーバー配列のすべてのメンバーにスクリプトを対象とします。

: ToArrayMembers パラメーターまたは ToSpecificServers パラメーターを使用している場合は、 Identity パラメーターを使用してサーバー名またはサーバー配列名を指定する必要があります。
ToSpecificServers 省略可能 ToSpecificServers パラメーターは、スクリプトを特定のサーバーにターゲットします。

: ToArrayMembers パラメーターまたは ToSpecificServers パラメーターを使用している場合は、 Identity パラメーターを使用してサーバー名またはサーバー配列名を指定する必要があります。
Identity 必須 Identity パラメーターは、クライアント アクセス サーバー配列の名前、またはターゲットとする特定のサーバーの名前を指定します。
GenerateNewPasswordFor<String> オプション GenerateNewPasswordFor パラメーターは、スクリプトが ASA の新しいパスワードを生成することを指定します。 文字列値は、ASA アカウントであり、「ドメイン\アカウント名」という形式で指定する必要があります。 コンピューター アカウントを使用する場合は、アカウント名の最後に "$" を指定する必要があります。
CopyFrom<文字列> オプション CopyFrom パラメーターは、資格情報が別のクライアント アクセス サーバーからコピーされることを指定します。 文字列値には、クライアント アクセス サーバー名を指定します。
Mode オプション Mode スイッチは、スクリプトが参加モードまたは無人モードで実行されるかどうかを指定します。 無人モードを指定すると、ユーザーの入力に対してプロンプト メッセージが表示されず、必要に応じたより安全なオプションが自動的に選択されます。
CreateScheduledTask<String> オプション CreateScheduledTask パラメーターは、スケジュールされたタスクを作成して ASA 資格情報の更新を実行するようにスクリプトに指示します。 文字列値は、作成されるスケジュールされたタスクの名前です。

: このスクリプトは、スクリプトが配置されているフォルダーに .cmd ファイルを作成します。 スケジュールされたタスクは, .cmd ファイルを 3 週間おきに実行します。 Windows タスク スケジューラ内で直接タスクを編集し、タスクの実行頻度を変更できます。
Whatif オプション WhatIf スイッチは、オブジェクトに対して実行されるアクションをシミュレートするようにコマンドに指示します。 WhatIf スイッチを使用すると、これらの変更を適用することなく、発生する変更を表示できます。 WhatIf スイッチで値を指定する必要はありません。
確認 省略可能 Confirm スイッチを使用すると、コマンドは処理を一時停止し、処理を続行する前にコマンドの実行内容を確認する必要があります。 [確認] スイッチで値を指定する必要はありません。
Verbose オプション Verbose パラメーターは、スクリプトのアクションに関する追加情報がログ ファイルに書き込まれるように、詳細ログを実行するようにスクリプトに指示します。
Debug オプション Debug パラメーターは、デバッグ モードで実行するようにスクリプトに指示します。 スクリプトの失敗理由を特定する場合、このパラメーターを使用してください。

例 1

この例では、スクリプトを使用して、最初のセットアップを行うためにフォレスト内のすべてのクライアント アクセス サーバーに資格情報をプッシュ転送します。

.\RollAlternateserviceAccountPassword.ps1 -ToEntireForest -GenerateNewPasswordFor "Contoso\ComputerAccount$" -Verbose

例 2

この例では、ユーザー アカウントの ASA 資格情報の新しいパスワードを生成し、名前が *mailbox* に一致するクライアント アクセス サーバー アレイのすべてのメンバーにパスワードを配布します。

.\RollAlternateserviceAccountPassword.ps1 -ToArrayMembers _mailbox_ -GenerateNewPasswordFor "Contoso\UserAccount" -Verbose

例 3

この例は、月に 1 回自動的にパスワードをロールする、"Exchange-RollAsa" という名前のスケジュールされたタスクを設定します。 フォレスト全体のすべてのクライアント アクセス サーバーの ASA 資格情報を、スクリプトによって生成された新しいパスワードで更新します。 スケジュールされたタスクは作成されますが、スクリプトは実行されません。 スケジュールされたタスクが実行されても、スクリプトは無人モードで実行されます。

.\RollAlternateServiceAccountPassword.ps1 -CreateScheduledTask "Exchange-RollAsa" -ToEntireForest -GenerateNewPasswordFor 'contoso\computerAccount$'

例 4

この例では、"CAS01" という名前のクライアント アクセス サーバー アレイ内のすべてのクライアント アクセス サーバーの ASA 資格情報を更新します。 ドメイン Contoso の Active Directory コンピューター アカウント ServiceAc1 から資格情報を入手します。

.\RollAlternateserviceAccountPassword.ps1 -ToArrayMembers "CAS01" -GenerateNewPasswordFor "CONTOSO\ServiceAc1$"

例 5

この例では、サーバー アレイのサイズが増加しているか、保守後にアレイのメンバーを再導入するためのいずれかにより、新しいコンピューターまたはサービスに戻すコンピューターに ASA を配布するためにスクリプトを使用する方法を示します。

クライアント アクセス サーバーがトラフィックを受信する前に、ASA 資格情報を更新する必要があります。 既に正しく構成されているクライアント アクセス サーバーから共有 ASA 資格情報をコピーします。 たとえば、サーバー A に現在動作している ASA 資格情報があり、サーバー B を配列に追加したばかりの場合、スクリプトを使用してサーバー A からサーバー B に資格情報 (パスワードを含む) をコピーできます。これは、サーバー B が最後にロールされたときにサーバー B がダウンしていたか、まだ配列のメンバーでない場合に便利です。

.\RollAlternateServiceAccountPassword.ps1 -CopyFrom ServerA -ToSpecificServers ServerB -Verbose