Exchange サーバーへのリモート PowerShell アクセスを制御する

Microsoft Exchange のリモート PowerShell を使用して、内部ネットワーク上にあるリモート コンピューターまたはインターネットから Exchange 組織を管理することができます。 リモート PowerShell を使用して、Exchange サーバーに接続するユーザーの機能を無効または有効にすることができます。 リモート PowerShell の詳細については、「 Exchange Server PowerShell (Exchange Management Shell)」を参照してください。

リモート PowerShell に関するその他の管理タスクについては、「リモート PowerShell を使用した Exchange サーバーへの接続」を参照してください。

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

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

  • この手順を実行するには、PowerShell を使用する必要があります。オンプレミスの Exchange 組織で Exchange 管理シェルを開く方法については、「Exchange 管理シェルを開く」をご覧ください。

  • 既定では、すべてのユーザー アカウントはリモート PowerShell にアクセスできます。ただし、実際にリモート PowerShell を使用して Exchange サーバーに接続するには、ユーザーは管理役割グループのメンバーであるか、ユーザーが Exchange コマンドレットを実行できる管理役割に直接割り当てられている必要があります。役割グループと管理役割の詳細については、「Permissions」を参照してください。

  • この手順を実行する際には、あらかじめアクセス許可を割り当てる必要があります。必要なアクセス許可の一覧については、以下を参照してください。「Exchange and Shell Infrastructure Permissions」トピックの「リモート PowerShell」。

Tip

問題がある場合は、 Exchange のフォーラムで質問してください。 Exchange Serverでフォーラムを参照してください。

Exchange 管理シェル を使用して、ユーザーのリモート PowerShell へのアクセスを有効または無効にします。

この例では、"Runcommand Ese Lindqvist" という名前のユーザーのリモート PowerShell アクセスを無効にします。

Set-User "Therese Lindqvist" -RemotePowerShellEnabled $false

この例では、Sirirat Kitjakarn という名前のユーザーのリモート PowerShell へのアクセスを有効にします。

Set-User "Sirirat Kitjakarn" -RemotePowerShellEnabled $true

Exchange 管理シェルを使用して多数のユーザーのリモート PowerShell アクセスを無効にする

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

  • 既存の属性に基づいてユーザーにフィルターをかける: この方法では、すべての対象ユーザーのアカウントが、フィルターできる固有の属性を共有していることを前提にしています。役職、部署、住所情報、電話番号などの一部の属性は、Get-User コマンドレットを使用した場合にのみ表示されます。CustomAttribute1 ~ 15 のようなその他の属性は、Get-Mailbox コマンドレットを使用した場合にのみ表示されます。

  • 特定のユーザーのリストを使用する: 特定のユーザーのリストを生成した後、そのリストを使用してリモート PowerShell へのアクセスを無効にすることができます。

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

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

$<VariableName> = <Get-Mailbox | Get-User> -ResultSize unlimited -Filter <Filter>
$<VariableName> | foreach {Set-User -RemotePowerShellEnabled $false}

この例では、 Title属性に値 "Sales アソシエイト" が含まれているすべてのユーザーのリモート PowerShell へのアクセスを削除します。

$DSA = Get-User -ResultSize unlimited -Filter {(RecipientType -eq 'UserMailbox') -and (Title -like '*Sales Associate*')}
$DSA | foreach {Set-User -RemotePowerShellEnabled $false}

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

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

$<VariableName> = Get-Content <text file>
$<VariableName> | foreach {Set-User -RemotePowerShellEnabled $false

この例では、ユーザープリンシパル名 (UPN) によってユーザーを識別するために、テキストファイル C:\My Documents\NoPowerShell.txt を使用します。 テキストファイルには、次のように各行に1つの UPN が含まれている必要があります。

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

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

$NPS = Get-Content "C:\My Documents\NoPowerShell.txt"
$NPS | foreach {Set-User -RemotePowerShellEnabled $false}

ユーザーのリモート PowerShell アクセスを表示する

特定のユーザーのリモート PowerShell アクセスの状態を表示するには、次の構文を使用します。

Get-User -Identity <UserIdentity> | Format-List RemotePowerShellEnabled

この例では、Sarah Jones という名前のユーザーのリモート PowerShell アクセス状態を表示します。

Get-User -Identity "Sarah Jones" | Format-List RemotePowerShellEnabled

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

Get-User -ResultSize unlimited | Format-Table -Auto Name,DisplayName,RemotePowerShellEnabled

リモート PowerShell へのアクセス許可が付与されていないユーザーのみを表示するには、次のコマンドを実行します。

Get-User -ResultSize unlimited -Filter {RemotePowerShellEnabled -eq $false}

リモート PowerShell へのアクセス許可が付与されているユーザーのみを表示するには、次のコマンドを実行します。

Get-User -ResultSize unlimited -Filter {RemotePowerShellEnabled -eq $true}