Ошибка "доступ запрещен" при попытке удаленного 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. Он работает против удаленной машины, но всякий раз, когда я нацеливаюсь на машину, с которой я бегу, я получаю вышеуказанную ошибку.
что я пробовал до сих пор:
- проверил
about_remote_troubleshooting
раздел справки. Ничего там работали ошибки, связанные с отказом в доступе. - целевые удаленные машины, использующие те же учетные данные, что и полученная ошибка отказа в доступе. (Подключить без проблем)
- проверено, что мой сеанс PowerShell работает от имени администратора. (Это)
- проверено, что командная консоль Exchange может успешно запускаться. (Это)
- пробовал без учетных данных, чтобы увидеть, будет ли это работать. (Не)
- проверил
net use
иnet session
чтобы убедиться, что у меня не было странных нескольких соединений с той же проблемой учетных данных. (Я не видел ничего, что указывало бы на это) - попробовал это как из сценария, который вызывает проблемы, так и путем ввода команд в консоль powershell вручную. (получили одинаковые результаты в обоих направлениях. Ура для консистенции)
- попробовал это на нескольких системах. (Везде один и тот же результат)
некоторые быстрые заметки:
- это 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, к которому вы можете подключиться и использовать по мере необходимости.