Exchange Online PowerShell へのアクセスを有効または無効にする

Exchange Online PowerShell は、コマンド ラインから Microsoft 365 organization の Exchange Online 部分を管理できる管理インターフェイスです (すべてのクラウド メールボックスの多くの組み込みセキュリティ機能と Microsoft Defender for の保護を含む)Office 365) など)。

既定では、Microsoft 365 のすべてのアカウントで Exchange Online PowerShell を使用できます。 このアクセスは、ユーザーに管理機能を付与しません。 これらは引き続き ロールベースのアクセス制御 (RBAC) によって制限されます。 たとえば、自分のメールボックスでいくつかの設定を構成したり、所有する配布グループを管理したりできますが、それ以外はあまり管理できません。

管理者は、この記事の手順を使用して、ユーザーが Exchange Online PowerShell に接続する機能を無効または有効にすることができます。

はじめに把握しておくべき情報

  • 各手順の推定完了時間:5 分未満

  • この記事の手順は、Exchange Online PowerShell でのみ使用できます。 Exchange Online PowerShell へ接続するには、「Exchange Online PowerShell に接続する」を参照してください。

  • この記事の手順を実行する前に、アクセス許可を割り当てる必要があります。 以下のオプションがあります。

    • Exchange Online アクセス許可: 組織の管理役割グループまたは受信者管理役割グループのメンバーシップ。
    • Microsoft Entra RBAC:Exchange 管理者またはグローバル管理者* ロールのメンバーシップにより、必要なアクセス許可と Microsoft 365 の他の機能へのアクセス許可ユーザーに付与されます。

    重要

    クラウドベースのorganizationで PowerShell アクセスを迅速かつグローバルに無効にすることを急いでいる場合は、管理者アカウントを考慮せずに Get-User | Set-User -EXOModuleEnabled $false のようなコマンドに注意してください。 この記事の手順を使用して、PowerShell アクセス を選択的に 削除するか、グローバル削除コマンドで次の構文を使用して、 必要なユーザーのためにアクセスを保持 します。 Get-User | Where-Object {$_.UserPrincipalName -ne 'admin1@contoso.onmicrosoft.com' -and $_.UserPrincipalName -ne 'admin2@contoso.onmicrosoft.com'...} | Set-User -EXOModuleEnabled $false

    誤って PowerShell へのアクセスからロックアウトしてしまった場合は、Microsoft 365 管理センターで新しい管理者アカウントを作成し、この記事の手順に従ってそのアカウントを使用して PowerShell へのアクセス権を付与します。

    * Microsoft では、最小限のアクセス許可を持つロールを使うことをお勧めします。 アクセス許可の低いアカウントを使用すると、組織のセキュリティが向上します。 グローバル管理者は高い特権を持つロールであり、既存のロールを使用できない場合の緊急時に限定する必要があります。

  • Exchange Online の OPATH フィルター構文の詳細については、「その他の OPATH 構文情報」を参照してください。

Exchange Online PowerShell へのユーザーのアクセスを有効または無効にする

この例では、ユーザー david@contoso.onmicrosoft.comExchange Online PowerShell へのアクセスを無効にします。

Set-User -Identity david@contoso.onmicrosoft.com -EXOModuleEnabled $false

この例では、ユーザー chris@contoso.onmicrosoft.comExchange Online PowerShell へのアクセスを有効にします。

Set-User -Identity chris@contoso.onmicrosoft.com -EXOModuleEnabled $true

多数のユーザーの Exchange Online PowerShell へのアクセスを無効にする

既存ユーザーの特定のグループの Exchange Online PowerShell へのアクセスを禁止するには、次のオプションを使用できます。

  • 既存の属性に基づいてユーザーをフィルタリングする: この方法では、ターゲット ユーザー アカウントがすべて、フィルタリング可能な一意の属性を共有していることを前提としています。 一部の属性 (役職、部署、住所情報、電話番号など) は、 Get-User コマンドレットからのみ使用できます。 その他の属性 (たとえば、CustomAttribute1 から CustomAttribute15) は、 Get-Mailbox コマンドレットからのみ使用できます。
  • 特定のユーザーのリストを使用する: 特定のユーザーのリストを生成し、このリストを使用して、Exchange Online PowerShell へのアクセスを無効にできます。

既存の属性に基づいてユーザーにフィルターをかける

既存の属性に基づいて任意の数ユーザーの Exchange Online PowerShell へのアクセスを無効にするには、次の構文を使用します。

$<VariableName> = <Get-Mailbox | Get-User> -ResultSize unlimited -Filter <Filter>

$<VariableName> | foreach {Set-User -Identity $_.WindowsEmailAddress -EXOModuleEnabled $false}

この例では、Title 属性に値 "Sales Associate" が含まれるすべてのユーザーの Exchange Online PowerShell へのアクセスを削除します。

$DSA = Get-User -ResultSize unlimited -Filter "(RecipientType -eq 'UserMailbox') -and (Title -like 'Sales Associate*')"

$DSA | foreach {Set-User -Identity $_.WindowsEmailAddress -EXOModuleEnabled $false}

特定のユーザーのリストを使用する

特定のユーザーのリストの Exchange Online PowerShell へのアクセスを無効にするには、次の構文を使用します。

$<VariableName> = Get-Content <text file>

$<VariableName> | foreach {Set-User -Identity $_ -EXOModuleEnabled $false}

次の例では、テキスト ファイル C:\My Documents\NoPowerShell.txt を使用して、アカウントによってユーザーを識別します。 テキスト ファイルでは、次のように各行に 1 つのアカウントを含める必要があります。

akol@contoso.onmicrosoft.com
tjohnston@contoso.onmicrosoft.com
kakers@contoso.onmicrosoft.com

更新するユーザー アカウントをテキスト ファイルに設定したら、次のコマンドを実行します。

$NoPS = Get-Content "C:\My Documents\NoPowerShell.txt"

$NoPS | foreach {Set-User -Identity $_ -EXOModuleEnabled $false}

ユーザーの Exchange Online PowerShell アクセス状態を表示する

ヒント

新しい EXOModuleEnabled プロパティは Get-User コマンドレットの Filter パラメーターと共に使用することはできませんが、EXOModuleEnabled プロパティと古い RemotePowerShellEnabled プロパティの値は常に同じであるため、Get-User コマンドレットの Filter パラメーターを指定して RemotePowerShellEnabled プロパティを使用します。

特定のユーザーの PowerShell アクセス状態を表示するには、 <UserIdentity> をユーザーの名前またはユーザー プリンシパル名 (UPN) に置き換え、次のコマンドを実行します。

Get-User -Identity "<UserIdentity>" | Format-List EXOModuleEnabled

すべてのユーザーの Exchange Online PowerShell へのアクセス状態を表示するには、次のコマンドを実行します。

Get-User -ResultSize unlimited | Format-Table -Auto DisplayName,EXOModuleEnabled

Exchange Online PowerShell にアクセスできないすべてのユーザーを表示するには、次のコマンドを実行します。

Get-User -ResultSize unlimited -Filter 'RemotePowerShellEnabled -eq $false'

Exchange Online PowerShell にアクセスできるすべてのユーザーを表示するには、次のコマンドを実行します。

Get-User -ResultSize unlimited -Filter 'RemotePowerShellEnabled -eq $true'