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

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

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

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

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

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

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

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

  • この手順を実行する際には、あらかじめアクセス許可が割り当てられている必要があります。 必要なアクセス許可を確認するには、インフラストラクチャと PowerShell のアクセス許可に関する記事の「リモート PowerShell Exchange」を参照してください。

ヒント

問題が発生する場合 フォーラムでヘルプExchange Serverします。

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

この例では、Therese 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 Associate" が含まれるすべてのユーザーのリモート 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

この例では、C:\My Documents\NoPowerShell.txtファイルを使用して、ユーザー プリンシパル名 (UPN) でユーザーを識別します。 テキスト ファイルには、次のような各行に 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'