セキュリティ/コンプライアンス PowerShell に接続する
この記事では、多要素認証 (MFA) の有無にかかわらず、Exchange Online PowerShell モジュールを使用してセキュリティ & コンプライアンス PowerShell に接続する方法について説明します。
Exchange Online PowerShell モジュールでは、最新の認証を使用して、Microsoft 365 のすべての Exchange 関連 PowerShell 環境 (Exchange Online PowerShell、セキュリティ & コンプライアンス PowerShell、スタンドアロン Exchange Online Protection (EOP) PowerShell) に接続します。 Exchange Online PowerShell モジュールの詳細については、「 Exchange Online PowerShell モジュールについて」を参照してください。
自動化のために Security & Compliance PowerShell に接続するには、「 無人スクリプトのアプリ専用認証」を参照してください。
はじめに把握しておくべき情報
モジュールのインストールと使用に関する要件については、「 Exchange Online PowerShell モジュールのインストールと保守」を参照してください。
注:
リモート PowerShell 接続は、Security & Compliance PowerShell で非推奨になりました。 詳細については、「 Security & Compliance PowerShell でのリモート PowerShell (RPS) プロトコルの廃止」を参照してください。
Exchange Online PowerShell V3 モジュールの REST API 接続には、PowerShellGet モジュールと PackageManagement モジュールが必要です。 詳細については、「 Windows での REST ベースの接続用 PowerShellGet」を参照してください。
接続後、アクセスできるまたはアクセスできないコマンドレットとパラメーターは、役割ベースのアクセス制御 (RBAC) によって制御されます。 詳細については、「 Microsoft Defender ポータルのアクセス許可」 と「 Microsoft Purview コンプライアンス ポータルのアクセス許可」を参照してください。
手順 1: Exchange Online PowerShell モジュールを読み込む
注:
モジュールが既にインストールされている場合は、通常、この手順をスキップし、最初にモジュールを手動で読み込まずに Connect-IPPSSession を実行できます。
モジュールをインストールしたら、PowerShell ウィンドウを開き、次のコマンドを実行してモジュールを読み込みます。
Import-Module ExchangeOnlineManagement
手順 2: 接続して認証する
注:
接続に使用したアカウントのプロファイル パスに特殊な PowerShell 文字 (たとえば、 $
) が含まれている場合、接続コマンドは失敗する可能性があります。 回避策は、プロファイル パスに特殊文字を含まない別のアカウントを使用して接続することです。
実行する必要があるコマンドでは、次の構文を使用します。
Connect-IPPSSession -UserPrincipalName <UPN> [-ConnectionUri <URL>] [-AzureADAuthorizationEndpointUri <URL>] [-DelegatedOrganization <String>] [-PSSessionOption $ProxyOptions]
詳細な構文とパラメーターについては、「Connectt-IPPSSession」を参照してください。
<UPN> は、ユーザー プリンシパル名の形式 (たとえば、
navin@contoso.onmicrosoft.com
) のアカウントです。必要な ConnectionUri と AzureADAuthorizationEndpointUri の値は、Microsoft 365 組織の性質によって異なります。 一般的な値については、次の一覧を参照してください。
- Microsoft 365 または Microsoft 365 GCC:
- ConnectionUri: なし。
https://ps.compliance.protection.outlook.com/powershell-liveid/
必要な値も既定値であるため、Microsoft 365 または Microsoft 365 GCC 環境で ConnectionUri パラメーターを使用する必要はありません。 - AzureADAuthorizationEndpointUri: なし。 必要な値
https://login.microsoftonline.com/common
も既定値であるため、Microsoft 365 または Microsoft 365 GCC 環境で AzureADAuthorizationEndpointUri パラメーターを使用する必要はありません。
- ConnectionUri: なし。
- Microsoft 365 GCC High:
- ConnectionUri:
https://ps.compliance.protection.office365.us/powershell-liveid/
- AzureADAuthorizationEndpointUri:
https://login.microsoftonline.us/common
- ConnectionUri:
- Microsoft 365 DoD:
- ConnectionUri:
https://l5.ps.compliance.protection.office365.us/powershell-liveid/
- AzureADAuthorizationEndpointUri:
https://login.microsoftonline.us/common
- ConnectionUri:
- 21Vianet が運営する Office 365:
- ConnectionUri:
https://ps.compliance.protection.partner.outlook.cn/powershell-liveid
- AzureADAuthorizationEndpointUri:
https://login.chinacloudapi.cn/common
- ConnectionUri:
- Microsoft 365 または Microsoft 365 GCC:
プロキシ サーバーの背後にいる場合は、接続コマンドで PSSessionOption パラメーターを使用できます。 最初に、次のコマンドを実行します。
$ProxyOptions = New-PSSessionOption -ProxyAccessType <Value>
。ここで、 <Value> はIEConfig
、WinHttpConfig
、またはAutoDetect
です。 次に、PSSessionOption パラメーターに$ProxyOptions
値を使用します。 詳細については、「New-PSSessionOption」を参照してください。組織の性質によっては、次の手順で UserPrincipalName パラメーターを省略できる場合があります。 代わりに、ユーザー名とパスワードを入力するか、Connect-IPPSSession コマンドを実行した後に保存されている資格情報を選択します。 機能しない場合は、UserPrincipalName パラメーターを使用する必要があります。
MFA を使用していない場合は、多くの場合、UserPrincipalName パラメーターではなく Credential パラメーターを使用できます。 まず、コマンド
$Credential = Get-Credential
を実行し、ユーザー名とパスワードを入力し、 Credential パラメーター (-Credential $Credential
) に変数名を使用します。 機能しない場合は、UserPrincipalName パラメーターを使用する必要があります。
対話型ログイン プロンプトを使用してセキュリティ & コンプライアンス PowerShell に接続する
次の例は、MFA の有無にかかわらず、Windows PowerShell 5.1 と PowerShell 7 で機能します。
この例では、Microsoft 365 または Microsoft 365 GCC 組織でセキュリティ/コンプライアンス PowerShell に接続します。
Connect-IPPSSession -UserPrincipalName navin@contoso.onmicrosoft.com
この例では、Microsoft GCC High 組織でセキュリティ/コンプライアンス PowerShell に接続します。
Connect-IPPSSession -UserPrincipalName chris@govt.us -ConnectionUri https://ps.compliance.protection.office365.us/powershell-liveid/ -AzureADAuthorizationEndpointUri https://login.microsoftonline.us/common
この例では、Microsoft 365 DoD 組織でセキュリティ/コンプライアンス PowerShell に接続します。
Connect-IPPSSession -UserPrincipalName michelle@govt.mil -ConnectionUri https://l5.ps.compliance.protection.office365.us/powershell-liveid/ -AzureADAuthorizationEndpointUri https://login.microsoftonline.us/common
この例では、21Vianet 組織によって操作される Office 365 でセキュリティ/コンプライアンス PowerShell に接続します。
Connect-IPPSSession -UserPrincipalName li@fabrikam.cn -ConnectionUri https://ps.compliance.protection.partner.outlook.cn/powershell-liveid -AzureADAuthorizationEndpointUri https://login.chinacloudapi.cn/common
表示されるサインイン ウィンドウで、パスワードを入力し、[サインイン] をクリックします。
注:
PowerShell 7 では、ブラウザー ベースのシングル サインオン (SSO) が既定で使用されるため、スタンドアロン ダイアログではなく既定の Web ブラウザーでサインイン プロンプトが開きます。
MFA のみ: 確認コードが生成され、アカウントに対して構成されている応答オプション (テキスト メッセージまたはお持ちのデバイスの Microsoft Authenticator アプリなど) に基づいて配信されます。
表示される確認ウィンドウで、確認コードを入力して、[検証する] をクリックします。
ログイン プロンプトなしでセキュリティ & コンプライアンス PowerShell に接続する (無人スクリプト)
完全な手順については、「 Exchange Online PowerShell とセキュリティ & コンプライアンス PowerShell の無人スクリプトのアプリ専用認証」を参照してください。
顧客組織のセキュリティ & コンプライアンス PowerShell に接続する
このセクションの手順では、モジュールのバージョン 3.0.0 以降が必要です。
Security & Compliance PowerShell では、DelegatedOrganization パラメーターで AzureADAuthorizationEndpointUri を使用する必要があります。
パートナーと顧客組織の詳細については、次のトピックを参照してください。
この例では、次のシナリオで顧客組織に接続します。
CSP アカウントを使用して顧客組織に接続します。
GDAP を使用して顧客組織に接続します。
ゲスト ユーザーとして顧客組織に接続します。
Connect-IPPSSession -UserPrincipalName navin@contoso.onmicrosoft.com -DelegatedOrganization adatum.onmicrosoft.com -AzureADAuthorizationEndpointUri https://login.microsoftonline.com/adatum.onmicrosoft.com
手順 3: 完了したら切断する
完了したら、必ずセッションを切断してください。 セッションを切断せずに PowerShell ウィンドウを閉じると、使用可能なすべてのセッションを使い切ることができ、セッションの有効期限が切れるのを待つ必要があります。 セッションを切断するには、次のコマンドを実行します。
Disconnect-ExchangeOnline
確認プロンプトなしでサイレント切断するには、次のコマンドを実行します。
Disconnect-ExchangeOnline -Confirm:$false
注:
接続に使用したアカウントのプロファイル パスに特殊な PowerShell 文字 (たとえば、 $
) が含まれている場合、切断コマンドは失敗する可能性があります。 回避策は、プロファイル パスに特殊文字を含まない別のアカウントを使用して接続することです。
正常に接続されているのはどうすればわかりますか?
セキュリティ/コンプライアンス PowerShell コマンドレットがローカル Windows PowerShell セッションにインポートされ、進行状況バーで追跡されます。 エラーが表示されない場合は、正常に接続されています。 簡単にテストするには、Get-Ret-RentionCompliancePolicy などの、セキュリティ/コンプライアンス PowerShell コマンドレットを実行して、結果を確認します。
エラーが表示された場合は、次の要件を確認します。
よく起きる問題はパスワードの入力ミスです。 もう一度 3 つの手順を実行します。特に、ユーザー名とパスワードは慎重に入力します。
接続に使用するアカウントは、PowerShell で有効にする必要があります。 詳細については、「Exchange Online PowerShell へのアクセスを有効または無効にする」を参照してください。
ローカル コンピューターと Microsoft 365 の間に TCP ポート 80 のトラフィックを開く必要があります。 組織で厳格なインターネット アクセス ポリシーが使用されている場合は、開いている可能性がありますが、確認する必要があります。
セキュリティ & コンプライアンス PowerShell への REST ベースの接続には、PowerShellGet モジュールと依存関係によって PackageManagement モジュールが必要であるため、インストールせずに接続しようとするとエラーが発生します。 たとえば、次のエラーが表示される場合があります。
"Update-ModuleManifest" という用語は、コマンドレット、関数、スクリプト ファイル、または操作可能なプログラムの名前として認識されません。 名前が正しく記述されていることを確認し、パスが含まれている場合はそのパスが正しいことを確認してから、再試行してください。
PowerShellGet モジュールと PackageManagement モジュールの要件の詳細については、「 Windows での REST ベースの接続用 PowerShellGet」を参照してください。
接続要求中にクライアントの IP アドレスが変更された場合、接続に失敗する場合があります。 これは、組織が複数の IP アドレスを含むソース ネットワーク アドレス変換 (SNAT) プールを使用している場合に発生する可能性があります。 この接続エラーは次のようになります。
ShellId <ID を持つ Windows リモート シェルの要求> 、シェルがサーバー上に見つからなかったため失敗しました。 考えられる原因としては、指定された ShellId が正しくないか、サーバーにシェルが存在しなくなったことが考えられます。 正しい ShellId を提供するか、新しいシェルを作成して操作をやり直してください。
この問題を解決するには、単一の IP アドレスを含む SNAT プールを使用するか、セキュリティ/コンプライアンス PowerShell エンドポイントへの接続に特定の IP アドレスを強制的に使用します。