PowerShell AD モジュールは、資格情報が明示的に提供されない限り、pssession 上で動作しません。

PowerShell AD モジュールは、資格情報が明示的に提供されない限り、pssession 上で動作しません。

新しい 2016 コア サーバーで問題が発生しています。(最近、2012r2 からサーバーを移行しました)

以前の 2012r2 サーバーでは、リモート ps セッション (enter-pssession oldservername) 経由で PowerShell スクリプトを実行できました。しかし、新しいサーバーではエラーが発生します。

このスクリプトは、AD モジュールのコマンド (get-aduser、get-adgroup など) を使用します。

リモート セッション経由で実行すると、次のようになります。

PS C:\> enter-pssession newserver
[newserver]: PS C:\> get-aduser username
Unable to contact the server. This may be because this server does not exist, 
it is currently down, or it does not have the Active Directory Web Services running.
+ CategoryInfo          : ResourceUnavailable: (username:ADUser) [Get-ADUser], ADServerDownException
+ FullyQualifiedErrorId : ActiveDirectoryServer:0,Microsoft.ActiveDirectory.Management.Commands.GetADUser

ただし、 と指定するとget-aduser username -Credential (Get-Credential)正常に動作します。

スクリプトをサーバー上で直接実行すると(サーバーに RDP で接続)、正常に動作します。

Invoke-Command -Session $sess -ScriptBlock {get-aduser username}も失敗します。

2016 年には資格情報の渡し方が変わったため、何か関係があるのではないかと考えています。これまでにこれに遭遇した人はいますか? 解決方法はありますか?

答え1

基本的に、典型的な Kerberos ダブル ホップ問題に遭遇しています。以前の 2012 R2 サーバーは何らかの形式の Kerberos 委任用に構成されていたが、新しいサーバーでは (まだ) 構成されていない可能性があります。

PowerShell に関連する問題とその解決方法を詳しく説明した優れた Technet ブログ投稿がこちらにあります。

PowerShell リモート処理 Kerberos ダブルホップを安全に解決

関連情報