Exchange Online PowerShell へのアクセスを有効または無効にする
Exchange Online PowerShell は、管理者がコマンド ラインから Microsoft 365 organizationのExchange Online部分を管理できるようにする管理インターフェイスです (Exchange Online ProtectionおよびMicrosoft Defender for Office 365)。
既定では、Microsoft 365 のすべてのアカウントで PowerShell Exchange Online使用できます。 このアクセスは、ユーザーに管理機能を提供しません。 引き続き ロールベースのアクセス制御 (RBAC) によって制限されます。 たとえば、自分のメールボックスで一部の設定を構成したり、所有している配布グループを管理したりできますが、それ以外の設定は多くはありません。
管理者は、この記事の手順を使用して、ユーザーの PowerShell への接続を無効または有効Exchange Onlineできます。
はじめに把握しておくべき情報
各手順の推定完了時間:5 分未満
この記事の手順は、Exchange Online PowerShell でのみ使用できます。 Exchange Online PowerShell へ接続するには、「Exchange Online PowerShell に接続する」を参照してください。
この記事の手順を実行する前に、アクセス許可を割り当てる必要があります。 以下のオプションがあります。
- Exchange Online RBAC: Organization Management ロール グループまたは Recipient Management ロール グループのメンバーシップ。
- 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 のフォーラムで質問してください。 次のフォーラムにアクセスしてください: Exchange Online または Exchange Online Protection。
Exchange Online PowerShell へのユーザーのアクセスを有効または無効にする
次の使用例は、ユーザー david@contoso.onmicrosoft.com
の PowerShell Exchange Onlineへのアクセスを無効にします。
Set-User -Identity david@contoso.onmicrosoft.com -EXOModuleEnabled $false
この例では、ユーザー chris@contoso.onmicrosoft.com
の PowerShell Exchange Onlineへのアクセスを有効にします。
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
PowerShell にアクセスできないすべてのユーザー Exchange Online表示するには、次のコマンドを実行します。
Get-User -ResultSize unlimited -Filter 'RemotePowerShellEnabled -eq $false'
PowerShell へのアクセス権を持つすべてのユーザー Exchange Online表示するには、次のコマンドを実行します。
Get-User -ResultSize unlimited -Filter 'RemotePowerShellEnabled -eq $true'