我正在尝试建立一个PowerShell会话,以在本地主机上运行几个Exchange命令来与Exchange服务器进行通信。但是我一直收到以下错误:
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
我的代码是从微软Technet文章中复制粘贴的。它可以用于远程机器,但是每当我将目标定向到本机时,就会出现上述错误。
到目前为止,我尝试过以下方法:
- 查看了关于远程故障排除的帮助主题,但其中与访问被拒绝错误相关的内容都没有奏效。
- 使用与接收到访问被拒绝错误相同的凭据定位到远程计算机。(成功连接)
- 验证我的PowerShell会话是否以管理员身份运行。(是的)
- 验证Exchange管理Shell能够成功启动。(是的)
- 尝试不使用凭据来查看是否可以正常工作。(没有)
- 检查了
net use
和net session
,以确保我没有出现奇怪的多个具有相同凭据的连接问题。(我没有看到任何指示) - 在引起问题的脚本中尝试了这个方法,并手动在powershell控制台中输入命令进行了尝试。(两种方式都得到了相同的结果。一致性太棒了)
- 在多个系统上尝试过。(在每个地方都有相同的结果)
一些快速注释:
这是在Windows Server 2012上运行的Exchange 2013。这只是一个基本安装,只是一个测试环境,数据很少,除了安装和启用远程之外几乎没有配置。使用的凭据是域管理员的,该管理员也具有必要的Exchange权限,可以执行所需的任何操作。也就是说,只要我针对的机器不是我正在运行的机器,我就没有任何问题,而连接方式并没有发生任何其他变化。此外,这是一个测试域,域管理员的访问权限没有受到任何限制或调整,因此应该完全访问所有内容。
我输入的具体命令是:
$cred = Get-Credential
$session = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri 'http://<HOSTNAME>/Powershell' -Credential $cred
我应该能够像这样连接到本地主机吗?还是说它不支持?
我现在完全不知所措。任何帮助,即使只是指点方向,都将不胜感激。
编辑:我应该补充一下,我尝试使用与上面相同的命令从另一台机器连接到此本地主机,而且没有出现任何问题。因此,我认为这不是本地配置问题。
Set-Item -force WSMan:\localhost\Client\TrustedHosts –Value *
。 - Jan Chrbolka