#powershell #azure-active-directory #office365 #exchangewebservices
#powershell #azure-active-directory #office365 #exchangewebservices
Вопрос:
Я подключал Exchange Online с помощью окна PowerShell, которое открывается при доступе к системе. Я использовал PsExec в командной строке с повышенными правами, чтобы открыть системный доступ к PowerShell. Ниже приведена команда.
PSExec -i -s PowerShell
В PowerShell я импортировал последнюю версию модуля PowerShell для управления Exchange Online версии 2.0.3. Я использую аутентификацию на основе приложений, описанную здесь: https://docs.microsoft.com/en-us/powershell/exchange/app-only-auth-powershell-v2?view=exchange-ps#setup-app-only-authentication.
Есть еще один веб-сайт, который показывает, как подключиться с помощью аутентификации на основе приложений: https://o365reports.com/2020/07/04/modern-auth-and-unattended-scripts-in-exchange-online-powershell-v2.
Ниже приведены команды, используемые для подключения к Exchange Online.
Import-Module .ExchangeOnlineManagement
$sessopt = New-PSSessionOption -SkipCACheck -SkipCNCheck -SkipRevocationCheck -ProxyAccessType IEConfig
$certkey = ConvertTo-SecureString "<EnterCertificateKeyHere>" -AsPlainText -Force
Connect-ExchangeOnline -CertificateFilePath "pfx Certificate Path" -AppId <EnterAppIdHere> -Organization "domain.onmicrosoft.com" -CertificatePassword $certkey -PSSessionOption $sessopt -verbose
При выполнении вышеуказанного он возвращает ошибку ссылки на объект. Я был взволнован и продолжил поиск ошибки путем декомпиляции DLL-файлов и обнаружил, что внутри ‘ ExoPowershellGalleryModule.dll
-> NewExoPSSession.cs
‘ модуля Exchange функция ‘getAccessToken’, которая вызывается в строке: 308, вызывает эту ошибку. Есть идеи, что вызывает Object reference not set to an instance of an object. System.Management.Automation.RemoteException: Object reference not set to an instance of an object.
ошибку. Не был ли прокси-сервер взят из IE?
Я установил настройки прокси-сервера в IE, используя приведенную ниже команду Powershell -позволяет использовать system PowerShell.
Set-ItemProperty -Path 'HKCU:SoftwareMicrosoftWindowsCurrentVersionInternet Settings' -name ProxyServer -Value "ProxyServerAddress"
Set-ItemProperty -Path 'HKCU:SoftwareMicrosoftWindowsCurrentVersionInternet Settings' -name ProxyEnable -Value 1
Приветствуется любая помощь в решении этой проблемы.
Ответ №1:
Если вы используете
PSExec -i -s PowerShell
Тогда информация о прокси, которую вы вводите для пользователя, не будет иметь никакого эффекта, поскольку локальная системная учетная запись будет иметь свою собственную информацию профиля. Кроме того, если прокси-серверу требуется проверка подлинности, вы также не будете предоставлять какие-либо сетевые учетные данные.
Если вы действительно хотите работать под системной учетной записью, вы можете попробовать использовать netsh для настройки прокси https://docs.microsoft.com/en-us/windows/security/threat-protection/microsoft-defender-atp/configure-proxy-internet но если вам нужна аутентификация прокси-сервера, это не сработает.
Комментарии:
1. Использование Netsh также выдает ошибку, но на этот раз кажется, что модуль Exchange не выбирает прокси из WinHTTP.