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'