web-dev-qa-db-ja.com

ローカルホスト上のExchangeサーバーにリモート接続しようとすると「アクセスが拒否されました」エラー

Localhost上のExchangeサーバーに対していくつかのExchangeコマンドを実行するPowerShellセッションを確立しようとしています。次のエラーが表示されます。

New-PSSession : [<HOSTNAME>] Connecting to remote server <HOSTNAME> failed with the following error message
: Access is denied. For more information, see the about_Remote_Troubleshooting Help topic.
At line:1 char:12
+ $session = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri 'h ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : OpenError: (System.Manageme....RemoteRunspace:RemoteRunspace) [New-PSSession], PSRemotin
   gTransportException
    + FullyQualifiedErrorId : AccessDenied,PSSessionOpenFailed

私のコードは、Microsoft Technet Article からのコピーペーストです。リモートマシンに対して機能しますが、実行中のマシンをターゲットにすると、上記のエラーが発生します。

私が今まで試したこと:

  1. about_remote_troubleshootingヘルプトピック。アクセス拒否エラーに関連する機能は何もありませんでした。
  2. アクセス拒否エラーを受け取ったのと同じ資格情報を使用するターゲットリモートマシン。 (問題なく接続されています)
  3. PowerShellセッションが管理者として実行されていることを確認しました。 (そうです)
  4. Exchange管理シェルが正常に起動できることを確認しました。 (そうです)
  5. それが機能するかどうかを確認するために資格情報なしで試してみました。 (そうではなかった)
  6. チェック済みNet Useおよびnet session同じ認証情報の問題で奇妙な複数の接続がなかったことを確認します。 (私はそれを示すものを見ませんでした)
  7. 問題を引き起こしているスクリプトから、および手作業でPowerShellコンソールにコマンドを入力して、これを試しました。 (両方の方法で同じ結果が得られました。一貫性のためにイェイ)
  8. 複数のシステムでこれを試しました。 (どこでも同じ結果)

簡単なメモ:

  • これはWindows Server 2012で実行されるExchange 2013です。これは基本的なインストールであり、リモーティングのインストールと有効化を超えるデータがほとんどなく、構成が最小限のテスト環境にすぎません。
  • 使用された資格情報はドメイン管理者用であり、ドメイン管理者は必要なExchange権限も持っており、必要なことをすべて実行できます。つまり、私が実行しているマシンではないマシンをターゲットにしている限り、私は何の問題もなく、接続方法について他に何も変わりません。さらに、これは、ドメイン管理者のアクセスが制限または調整されていないテストドメインなので、すべてに完全かつ完全にアクセスできる必要があります。

私が入力している特定のコマンドは次のとおりです。

$cred = Get-Credential
$session = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri 'http://<HOSTNAME>/Powershell' -Credential $cred

このようなローカルホストへの接続は、私ができるはずのものですか?または、サポートされていないだけですか?

私はこの時点で完全に失われています。どんな助けでも、正しい方向に私を向けるために、大いに感謝されるでしょう。

編集:私は追加する必要があります、私は上記と同じコマンドを使用して、別のマシンからこのローカルホストに接続しようとしましたが、問題なく機能しました。だから、ローカル設定の問題だとは思わないとは思わない

8
Jgraum

だから、先週遅くに私は解決策につまずいた。使用されている認証と関係があるようです。 「-Authentication」パラメーターを空白のままにしておき、New-PSSessionコマンドで最適な方法を選別できるようにしました。

どうやら、これはデフォルトで「ネゴシエート」認証方法になります。これは、リモートマシンに対してKerberosを選択しますが、それ以外の場合はNTLMを選択します(少なくとも、それは私の観察/想定された動作です)。認証方法の このMicrosoftの説明 を参照してください。

特定の認証方法を指定すると(「Kerberos」と「Basic」の両方が機能し、「ネゴシエート」は機能しませんでしたが、これを過ぎて変更しなかった)、問題は解消され、ローカルExchangeインスタンスに接続できました。

したがって、これよりも:

$session = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri 'http://<HOSTNAME>/Powershell' -Credential $cred

これを行う:

$session = New-PSSession -Authentication Kerberos -ConfigurationName Microsoft.Exchange -ConnectionUri 'http://<HOSTNAME>/Powershell'  -Credential $cred

なぜそれが機能したのですか?私は見当もつかない。それを説明するために私よりも知っている人にそれを任せます。

1
Jgraum

現在のセッションと同じコンピューターでセッションを作成しようとしている場合は、URIを省略します。

$cred = Get-Credential
$session = New-PSSession -ConfigurationName Microsoft.Exchange -Credential $cred

これにより、localhostに新しいセッションが作成され、必要に応じて接続して利用できます。

0