Я столкнулся с проблемой, когда простые команды (например, Get-Module) отсутствуют при удаленном подключении к серверу Exchange 2016.
Я выполняю следующую команду:
Invoke-Command -ConfigurationName Microsoft.Exchange -ConnectionUri http://SERVERNAME/powershell -Authentication Kerberos -Credential $cred -ScriptBlock { Get-Module }
Результат:
The term 'Get-Module' is not recognized as the name of a cmdlet, function, script file, or operable program. Check the spelling of the name, or if a path was included, verify that the path is correct and try again.
+ CategoryInfo : ObjectNotFound: (Get-Module:String) [], CommandNotFoundException
+ FullyQualifiedErrorId : CommandNotFoundException
+ PSComputerName : SERVERNAME
Другие основные команды, такие как Get-Command, работают должным образом, включая команды Exchange (Get-Mailbox и т. Д.).
Единственное изменение, которое я сделал, - это изменение PSLanguageMode в IIS для сайта Powershell на FullLanguage. Отмена этого изменения (и перезапуск соответствующих пулов и сайтов) не влияет на результат.
Я не регулярно имею дело с Exchange или PowerShell, поэтому приветствую любые советы.
Серверы Exchange были разработаны как конечные точки с ограничениями. Конфигурация сеанса Microsoft.Exchange
это простая схема конфигурации с ограниченными доступными методами. Поскольку серверы Exchange открыты для внешнего мира, дизайнеры одержимы безопасностью. Команда, которую вы пытаетесь использовать, является тривиальной в вашем существующем контексте, поскольку вы указали среду, которую хотите, с вашим экземпляром.
Настоятельно рекомендуется работать в рамках существующей конфигурации сеанса (для удаленного доступа) или запускать код локально для доступа ко всем методам. Однако, если ваша терпимость к риску это позволяет, вы можете создать собственную схему конфигурации сеанса. используя информацию, которую вы найдете здесь.