Ошибка "доступ запрещен" при попытке удаленного Exchange server на localhost

Я пытаюсь установить сеанс PowerShell для запуска нескольких команд обмена с Exchange-сервера на localhost. Я продолжаю получать следующую ошибку:

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. Он работает против удаленной машины, но всякий раз, когда я нацеливаюсь на машину, с которой я бегу, я получаю вышеуказанную ошибку.

что я пробовал до сих пор:

  1. проверил about_remote_troubleshooting раздел справки. Ничего там работали ошибки, связанные с отказом в доступе.
  2. целевые удаленные машины, использующие те же учетные данные, что и полученная ошибка отказа в доступе. (Подключить без проблем)
  3. проверено, что мой сеанс PowerShell работает от имени администратора. (Это)
  4. проверено, что командная консоль Exchange может успешно запускаться. (Это)
  5. пробовал без учетных данных, чтобы увидеть, будет ли это работать. (Не)
  6. проверил net use и net session чтобы убедиться, что у меня не было странных нескольких соединений с той же проблемой учетных данных. (Я не видел ничего, что указывало бы на это)
  7. попробовал это как из сценария, который вызывает проблемы, так и путем ввода команд в консоль powershell вручную. (получили одинаковые результаты в обоих направлениях. Ура для консистенции)
  8. попробовал это на нескольких системах. (Везде один и тот же результат)

некоторые быстрые заметки:

  • это Exchange 2013 работает в Windows Server 2012. Это базовая установка, просто тестовая среда, которая имеет очень мало данных и минимальную конфигурацию за пределами установки и включения удаленного взаимодействия.
  • учетные данные использовались для администратора домена, который также имеет необходимые разрешения Exchange для выполнения всех необходимых действий. То есть, пока я нацеливаюсь на машину, которая не является той, от которой я бегу, у меня нет никаких проблем, и ничего не меняется в том, как я подключаюсь. Вдобавок, это тестовый домен, где доступ администратора домена не был ограничен или изменен каким-либо образом, поэтому он должен иметь полный и полный доступ ко всему.

конкретные команды, которые я ввожу:

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

подключение к localhost, как это что-то, что я должен быть в состоянии сделать? Или это просто не поддерживается?

Я в полной растерянности в этот момент. Любая помощь, даже чтобы указать мне в правильном направлении, была бы очень оцененный.

EDIT: я должен добавить, я попытался подключиться к этому localhost с другой машины, используя те же команды, что и выше, и он работал без проблем. Итак, я не думаю это проблема локальной конфигурации.

2 ответов


Так, я наткнулся на решение в конце прошлой недели. Кажется, это как-то связано с используемой аутентификацией. Я оставил параметр "-Authentication" пустым, намереваясь позволить команде New-PSSession разобраться, какой метод будет лучшим.

по-видимому, по умолчанию используется метод проверки подлинности "согласование", который выбирает Kerberos на удаленной машине, но в противном случае выбирает NTLM (или, по крайней мере, это было мое наблюдаемое/предполагаемое поведение). См.этот Microsoft описание методов аутентификации.

указание определенного метода аутентификации (оба" Kerberos "и" Basic "работали," Negotiate " не делали, я не слишком много возился с этим) очищает проблему и позволяет мне подключиться к локальному экземпляру 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, к которому вы можете подключиться и использовать по мере необходимости.