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 からのコピーペーストです。リモートマシンに対して機能しますが、実行中のマシンをターゲットにすると、上記のエラーが発生します。
私が今まで試したこと:
about_remote_troubleshooting
ヘルプトピック。アクセス拒否エラーに関連する機能は何もありませんでした。Net Use
およびnet session
同じ認証情報の問題で奇妙な複数の接続がなかったことを確認します。 (私はそれを示すものを見ませんでした)簡単なメモ:
私が入力している特定のコマンドは次のとおりです。
$cred = Get-Credential
$session = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri 'http://<HOSTNAME>/Powershell' -Credential $cred
このようなローカルホストへの接続は、私ができるはずのものですか?または、サポートされていないだけですか?
私はこの時点で完全に失われています。どんな助けでも、正しい方向に私を向けるために、大いに感謝されるでしょう。
編集:私は追加する必要があります、私は上記と同じコマンドを使用して、別のマシンからこのローカルホストに接続しようとしましたが、問題なく機能しました。だから、ローカル設定の問題だとは思わないとは思わない。
だから、先週遅くに私は解決策につまずいた。使用されている認証と関係があるようです。 「-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
なぜそれが機能したのですか?私は見当もつかない。それを説明するために私よりも知っている人にそれを任せます。
現在のセッションと同じコンピューターでセッションを作成しようとしている場合は、URIを省略します。
$cred = Get-Credential
$session = New-PSSession -ConfigurationName Microsoft.Exchange -Credential $cred
これにより、localhostに新しいセッションが作成され、必要に応じて接続して利用できます。