Powershell 経由で Office365 Exchange に最初からログインする

Powershell 経由で Office365 Exchange に最初からログインする

私は、何もインストールされていない、新しくインストールされた単純な PowerShell からこれを実行しようとしましたが、公式の方法では、パッケージ マネージャーが見つからない、パッケージ プロバイダーが存在しない、コマンドが見つからない、その他さまざまな同様のメッセージに関するエラーが発生するだけのようです。(Microsoft のサイトには、Install-Module ExchangeOnlineManagement必要なのはこれだけであると記載されています)

簡単に言えば、実際にこれを行うには、PowerShell に相互依存する多数のプログラムをインストールして、最終的にコマンドを実行できるようにすることですInstall-Module ExchangeOnlineManagement。これを行う手順は Microsoft サイト全体に分散しており、これを実行しようとすると、12 個程度のさまざまなエラーをデバッグする必要があり、時間のかかるプロセスになります。

何ですか完了Windows マシン上で、単純な PowerShell から Office-365 Exchange Online に接続できる PowerShell に移行するための一連の手順を教えてください。


答え1

利用可能なモジュールとコマンドレットは PowerShell のバージョンに固有です。実行している WinOS や実行している PowerShell のバージョンは指定されません。

WindowsにPowerShellをインストールする理由はありませんデフォルトでそこにありますは、OS の一部であるため、スタート メニューを使用してコンソール ホストまたは ISE (統合スクリプト環境) を起動するだけです。ただし、従来の Windows を使用している場合は、Windows Powershell のバージョンを最新バージョンにアップグレードしない限り、従来の PowerShell を使用します。

PowerShell バージョン間の違い

したがって、powershell.exe または powershell_ise.exe が実行可能ファイルになります。

インストールの唯一の他のオプションは、クロスプラットフォームのPowerShell Coreをインストールすることです。(ただし、あなたが求めているものには必須ではありませんが、それは選択肢であり、どちらか一方を同時に使用することもできます。)

PSCore をインストールしても Windows PowerShell はアップグレードまたは置き換えられません。、これは OS の一部です。これはサイドバイサイド モデルであり...

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 で何かを使用するには、まずサービスにログインする必要があります。

1 つの PowerShell ウィンドウですべての Microsoft 365 サービスに接続する

https://docs.microsoft.com/en-us/microsoft-365/enterprise/connect-to-all-microsoft-365-services-in-a-single-windows-powershell-window?view=o365-worldwide

$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 モジュールをインストールします。

  1. インストールまたは更新PowerShellGet モジュール(TLS 1.2 を使用していることを確認してください)

  2. 次のコマンドでEXO V2モジュールをインストールします。Install-Module -Name ExchangeOnlineManagement

PowerShellでEXO V2モジュールを使用してOffice 365オブジェクトを管理する以外に、Exchange Online PowerShell に接続するための基本認証(それ以前は、前提条件注目すべき点です。

関連情報