その役割の一部として、一連の Windows Server 2008R2 マシンからパフォーマンス カウンターを読み取る C# プロセスがあります。すべてのマシンは企業 AD ドメイン内にあり、同じネットワーク上にあります。サーバー マシンにログオンし、ログイン セッション内から C# プロセスを実行すると、このプログラムは正常に動作します。私は現在、この C# プロセスを powershell で使用して、いくつかの実験を自動化しようとしています。目標は、サーバーの 1 つでデスクトップからリモートで起動することです。すべてのマシンは同じドメイン (デスクトップとサーバー) にあります。
すべてのマシンは次のようにセットアップされています。
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned
Configure-SMRemoting.ps1 -force -enable
PowerShell スクリプトは、C# プロセスを実行し、invoke-command を使用してプロセスを開始するマシンに接続するための PsSession を作成しています。ただし、リモート ホスト上の C# アプリケーションは、監視対象のセット マシン上のパフォーマンス カウンターにアクセスできなくなります:-「アクセスが拒否されました」。
これはマルチホップ認証の問題ではないかと疑い、http: //www.ravichaganti.com/blog/?p=1230 の手順に従ってマルチホップ認証を有効にしました。CredSSP を使用しようとしています:
$cred = Get-Credential -Credential "Company\user"
$session = new-pssession -ComputerName $loadHost -Credential $cred -Authentication CredSSP -ErrorAction Stop
収量:
リモート サーバーへの接続に失敗し、次のエラー メッセージが表示されました: WinRM クライアントは要求を処理できません。CredSSP 認証は現在、クライアント構成で無効になっています。クライアント構成を変更して、要求を再試行してください。CredSSP 認証もサーバー構成で有効にする必要があります。また、グループ ポリシーを編集して、ターゲット コンピューターへの資格情報の委任を許可する必要があります。gpedit.msc を使用して、次のポリシーを確認します: [コンピューターの構成] -> [管理用テンプレート] -> [システム] -> [資格情報の委任] -> [新しい資格情報の委任を許可する]。ターゲット コンピューターに適した SPN で有効化され、構成されていることを確認します。たとえば、ターゲット コンピュータ名が "myserver.domain.com" の場合、SPN は次のいずれかになります: WSMAN/myserver.domain.com または WSMAN/*。
gpedit.msc を使用すると、ドメインに対応する SPN エントリを使用して [新しい資格情報の委任を許可する] が設定されます。すべてのマシンのファイアウォールは、WinRM Http-In を有効にするように構成されています。about_Remote_Troubleshooting のドキュメントを読みましたが、役に立ちませんでした。
マルチホップ認証が実際に正しいアプローチであるかどうか、またはこれを破る可能性のある他の何かについてのアイデアはありますか?