
Я пытался сделать это из простого, недавно установленного PowerShell, на котором больше ничего не установлено, но официальный способ, похоже, просто приводит к ошибкам об отсутствующих менеджерах пакетов, несуществующих поставщиках пакетов, отсутствующих командах и различным другим подобным сообщениям. (На сайте Microsoft просто указано, Install-Module ExchangeOnlineManagement
что это все, что нужно)
Проще говоря, реальный способ сделать это — установить целый бардак взаимозависимых программ в powershell, чтобы наконец-то иметь возможность запустить команду Install-Module ExchangeOnlineManagement
. Инструкции по этому поводу разбросаны по всему сайту Microsoft, и попытка сделать это подразумевает отладку дюжины или около того различных ошибок, что является трудоемким процессом.
Что такоеполныйнабор шагов для перехода от простого PowerShell к такому, который может подключаться к Office-365 Exchange Online на компьютере с Windows?
решение1
Доступные модули и командлеты зависят от версии PowerShell. Вы не говорите, какую WinOS вы используете, или какую версию PowerShell вы используете.
Нет смысла устанавливать PowerShell на Windows.Он там по умолчанию, так как это часть ОС. Просто используйте меню «Пуск», чтобы запустить либо консольный хост, либо ISE (интегрированную среду сценариев). Однако, если вы используете устаревшую версию Windows, то вы используете устаревшую версию PowerShell, если только вы не обновили версию Windows Powershell до последней.
Различия между версиями PowerShell
Итак, powershell.exe или powershell_ise.exe — это исполняемые файлы.
Единственный другой вариант установки — это установка кроссплатформенного PowerShell Core.(хотя это не обязательно для вашей цели, но вы можете выбрать любой из них, даже одновременно.)
Установка PSCore не обновляет и не заменяет Windows PowerShell., которая является частью ОС. Это модель Side-by-Side и...
pwsh.exe
... — исполняемый файл для PSCore.
Затем вы обновляете файлы справки PowerShell...
Update-Help -Force -ErrorAction SilentlyContinue
..., а затем используйте...
Find-Module
... команда для обновления управления пакетами или определенного модуля,
Find-Module -Name 'ExchangeOnlineManagement' |
Install-Module -Force
... или просто запустите это...
Install-Module -Name PackageManagement -Force -MinimumVersion 1.4.6 -Scope CurrentUser -AllowClobber
... вручную, чтобы обновить менеджер пакетов.
Наконец, установите нужные/желаемые модули и загрузите их автоматически, используя ваш профиль PowerShell. В вашем профиле это...
# Required for use with web SSL sites
[Net.ServicePointManager]::SecurityProtocol = [Net.ServicePointManager]::
SecurityProtocol -bor [Net.SecurityProtocolType]::Tls12
(New-Object System.Net.WebClient).Proxy.Credentials = [System.Net.CredentialCache]::DefaultNetworkCredentials
... должны быть там, а также во всех ваших распространяемых скриптах.
Чтобы использовать что-либо на O365/M365, вам необходимо сначала войти в систему.
Подключитесь ко всем службам Microsoft 365 в одном окне PowerShell
$orgName="<for example, litwareinc for litwareinc.onmicrosoft.com>"
$acctName="<UPN of the account, such as [email protected]>"
$credential = Get-Credential -UserName $acctName -Message "Type the account's password."
#Azure Active Directory
Connect-AzureAD -Credential $credential
#SharePoint Online
Import-Module Microsoft.Online.SharePoint.PowerShell -DisableNameChecking
Connect-SPOService -Url https://$orgName-admin.sharepoint.com -credential $credential
#Skype for Business Online
Import-Module MicrosoftTeams
Connect-MicrosoftTeams -Credential $credential
#Exchange Online
Import-Module ExchangeOnlineManagement
Connect-ExchangeOnline -ShowProgress $true
#Security & Compliance Center
Connect-IPPSSession -UserPrincipalName $acctName
#Teams
Import-Module MicrosoftTeams
Connect-MicrosoftTeams -Credential $credential
решение2
Методом проб и ошибок мне удалось сделать это следующим образом (хотя я не совсем уверен, насколько это безопасно и правильно, и есть ли какие-то лишние шаги, поскольку необходимые знания разрознены):
Начать:
Сначала проверьте версию powershell с помощью Get-Host
, которая должна быть не ниже 5.0
. Если нет, установите для нее последний .msu
пакет, загрузив и запустив указанный установщик. Затем выполните:
# Powershell defaults to TLS1.1, which was deprecated.
# Thus by default its package management functions ship broken. Force it to use TLS1.2 by setting:
[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12
Find-PackageProvider -Name "NuGet" -AllVersions
# Select the latest version
Install-PackageProvider -Name "NuGet" -RequiredVersion "2.8.5.208" -Force
# Check with
Get-PackageProvider
# Register the repo
Register-PSRepository -Default -Verbose
# Check with
Get-PSRepository
# Check which version pops up in the error when running
Install-Module PowerShellGet
# Then run the command to update PowerShellGet (replace the version number with the latest from the previous command):
Install-Module PowerShellGet -RequiredVersion 2.2.5
# Finally:
Install-Module ExchangeOnlineManagement
# Next, enable running scripts with:
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned
# Import
Import-Module ExchangeOnlineManagement
решение3
Убедитесь, что версия вашего сервера/клиента Windows соответствуетподдерживаемая операционная система, и ваш сервер/клиент соответствуетПредварительные условия для модуля EXO V2(Поддерживаемые операционные системы для модуля EXO V2):
Затем установите модуль EXO V2:
Установите или обновитеМодуль PowerShellGet(Убедитесь, что вы используете TLS 1.2)
Установите модуль EXO V2 с помощью команды
Install-Module -Name ExchangeOnlineManagement
Помимо использования модуля EXO V2 в PowerShell для управления объектами Office 365, вы также можете использоватьБазовая аутентификация для подключения к Exchange Online PowerShell(До этого,предпосылкиследует обратить внимание.)