powershell - 尝试远程连接到本地主机上的Exchange服务器时出现"Access Is Denied"错误

标签 powershell windows-server-2012 access-denied powershell-remoting exchange-server-2013

我试图建立一个PowerShell session ,以对本地主机上的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

我的代码是Microsoft Technet Article的复制粘贴。它适用于远程计算机,但是每当我针对要运行的计算机定位时,都会出现上述错误。

到目前为止,我已经尝试过:
  • 检查了about_remote_troubleshooting帮助主题。那里没有任何与“访问被拒绝”错误有关的信息。
  • 使用与收到访问拒绝错误相同的凭据的目标远程计算机。 (连接无问题)
  • 验证我的PowerShell session 是否以管理员身份运行。 (是)
  • 验证Exchange命令行管理程序能够成功启动。 (是)
  • 尝试不使用凭据,以查看是否可行。 (没有)
  • 检查了net usenet session,以确保我没有具有相同凭据问题的奇怪的多个连接。 (我没有看到任何指示)
  • 从导致问题的脚本和通过手动在Powershell控制台中键入命令来对此进行尝试。 (两种方法都得到相同的结果。是的,为了保持一致性)
  • 在多个系统上进行了尝试。 (到处都有相同的结果)

  • 一些快速注意事项:
  • 这是在Windows Server 2012上运行的Exchange2013。它是基本安装,只是一个测试环境,除了安装和启用远程处理外,其数据很少且配置最少。
  • 使用的凭据用于域管理员,该管理员还具有执行我需要做的所有必要的Exchange权限。也就是说,只要我定位的计算机不是我要运行的计算机,我就不会有任何问题,而且连接方式也没有其他改变。此外,这是一个测试域,域管理员的访问没有受到任何限制或调整,因此它应该具有对所有内容的完全访问权限。

  • 我输入的特定命令是:

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

    我应该能够像这样连接到本地主机吗?还是不被支持?

    在这一点上,我完全不知所措。任何帮助,甚至为我指明正确的方向,都将不胜感激。

    编辑:我应该添加,我已经尝试使用与上述相同的命令从另一台计算机连接到此本地主机,并且没有问题。因此,我认为这不是本地配置问题。

    最佳答案

    因此,上周下半年,我偶然发现了该解决方案。似乎与所使用的身份验证有关。我将“-Authentication”参数留为空白,目的是让New-PSSession命令挑选出最佳方法。

    显然,这默认为“协商”身份验证方法,该方法将针对远程计算机选择Kerberos,但否则将选择NTLM(或者至少是我观察到的/假定的行为)。请参阅this Microsoft description的身份验证方法。

    指定一种特定的身份验证方法(“Kerberos”和“基本”均有效,“协商”无效,我对此不做过多修改)清除了该问题,并允许我连接到本地交换实例。

    因此,而不是这样:

    $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
    

    为什么行得通?我没有任何线索。我将它留给比我了解更多的人来解释。

    关于powershell - 尝试远程连接到本地主机上的Exchange服务器时出现"Access Is Denied"错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30492236/

    相关文章:

    windows - 如何在Windows上配置IBM Kubernetes CLI

    php - IIS 上的 Drupal 8 - 安装时出错

    IIS8中的IIS_IUSRS和IUSR权限

    c - 尝试删除文件时获取权限被拒绝错误

    php - 使用 php 脚本将 mySQL 切换到本地服务器访问被拒绝

    Powershell 相当于 `netsh http show sslcert ipport=' 0.0.0.0 :817 2'`

    powershell - 从命令提示符相对路径调用 Powershell

    c# - 从 C# 应用程序调用 windows 资源管理器 “rotate clockwise” 操作

    java - 为什么我在 Windows Server 2012 上看到来自 Sonarqube 的 "An illegal reflective access operation has occurred"?

    c# - 获取进程路径时访问被拒绝