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帮助主题.那里没有与Access Denied错误有关的任何内容.
>使用与收到“拒绝访问”错误相同的凭据的目标远程计算机. (没有问题连接)
>已验证我的PowerShell会话是以管理员身份运行的. (它是)
>已验证Exchange命令行管理程序是否能够成功启动. (它是)
>尝试没有凭据,看看是否可行. (它没有)
>检查网络使用和网络会话,以确保我没有具有相同凭据问题的奇怪的多个连接. (我没有看到任何迹象表明)
>从导致问题的脚本和手动键入命令到PowerShell控制台中尝试了这一点. (两种方式都得到了相同的结果.为了保持一致性)
>在多个系统上尝试过这个. (各地的结果相同)
一些快速说明:
>这是在Windows Server 2012上运行的Exchange 2013.这是一个基本安装,只是一个测试环境,除了安装和启用远程处理之外,其数据和配置都很少.
>使用的凭据用于域管理员,域管理员还具有必要的Exchange权限,可以执行我需要执行的任何操作.即,只要我的机器不是我正在运行的机器,我就没有任何问题,没有其他任何改变我连接的方式.此外,这是一个测试域,其中域管理员的访问权限没有受到任何限制或调整,因此它应该完全和完全访问所有内容.
我输入的具体命令是:
$cred = Get-Credential $session = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri 'http://<HOSTNAME>/Powershell' -Credential $cred
连接到localhost这样的东西,我应该能做什么?还是只是不支持?
在这一点上我完全失败了.任何帮助,即使指出我正确的方向,将不胜感激.
编辑:我应该补充一点,我尝试使用与上面相同的命令从另一台机器连接到本地主机,并且它没有问题.所以,我认为这不是本地配置问题.
显然,这默认为“Negotiate”身份验证方法,它将针对远程计算机选择Kerberos,但是否则将选择NTLM(或者至少,这是我的观察/假设行为).请参见this Microsoft description的身份验证方法.
指定一个特定的身份验证方法(“Kerberos”和“Basic”都工作,“Negotiate”没有,我没有过多地修改过这个)清除问题并允许我连接到本地交换实例.
所以,而不是这个:
$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
为什么这样做?我没有线索.我会把它留给那些比我更了解的人来解释它.