控制遠端 PowerShell 對 Exchange 伺服器的存取

Microsoft Exchange 中的遠端 PowerShell 可讓您從內部網路或網際網路上的遠端電腦管理 Exchange 組織。 您可以使用遠端 PowerShell 和 Exchange 管理命令介面,停用或啟用使用者連線到 Exchange 伺服器的能力。 如需遠端 PowerShell 的詳細資訊,請參閱 Exchange Server PowerShell (Exchange 管理命令介面)

如需與遠端 PowerShell 相關的其他管理工作,請參閱使用遠端 PowerShell 連線到 Exchange 伺服器

開始之前有哪些須知?

  • 每項程序的預估完成時間:不到 5 分鐘

  • 根據預設,所有使用者帳戶都具有遠端 PowerShell 的存取權。 不過,若要實際使用遠端 PowerShell 連接到 Exchange 伺服器,使用者必須是管理角色群組的成員,或直接被指派可讓使用者執行 Exchange 指令程式的管理角色。 如需角色群組和管理角色的詳細資訊,請參閱Exchange Server許可權

    重要事項

    在您快速且全域停用組織中遠端 PowerShell 存取的雜湊中,請注意命令,例如 Get-User | Set-User -RemotePowerShellEnabled $false ,不考慮需要遠端 PowerShell 存取的系統管理員帳戶、服務帳戶或健康情況監視信箱。 使用本文中的程式選擇性地移除遠端 PowerShell 存取,或在全域移除命令中使用下列語法保留需要該存取權的使用者: Get-User | Where-Object {$_.UserPrincipalName -ne 'admin1@contoso.com' -and $_.UserPrincipalName -ne 'admin2@contoso.com'...} | Set-User -RemotePowerShellEnabled $false

    如果您不小心將自己鎖定在遠端 PowerShell 存取,您必須使用極不鼓勵的直接載入 Exchange 管理命令介面嵌入式管理單元 (Add-PSSnapIn Microsoft.Exchange.Management.PowerShell.SnapIn) 來提供自己的存取權。 將您使用這個方法的時間和變更降到最低。 修正一個帳戶並開啟 Exchange 管理命令介面,以進行任何其他變更。

  • 您只能使用 PowerShell 來執行這些程式。 若要了解如何在內部部署 Exchange 組織中開啟 Exchange 管理命令介面,請參閱 Open the Exchange Management Shell

  • 如需 Exchange 中 OPATH 篩選語法的詳細資訊,請參閱 其他 OPATH 語法資訊

  • 您必須已獲指派權限,才能執行此程序或這些程序。 若要查看您需要的許可權,請參閱 Exchange 基礎結構和 PowerShell 許可權 一文中的「遠端 PowerShell」專案。

  • 如果您使用協力廠商工具來自訂使用者的電子郵件地址,則必須先停用受影響使用者的電子郵件地址原則,再執行本文中的程式。 如果沒有, Set-User 命令會變更使用者的電子郵件地址,以符合適用的電子郵件地址原則。 若要停用使用者的電子郵件地址原則,請在 Set-Mailbox Cmdlet 上將 EmailAddressPolicyEnabled 參數的值設定為 $false。

提示

有問題嗎? 在Exchange Server論壇中尋求協助。

檢視使用者的遠端 PowerShell 存取

若要檢視特定使用者的遠端 PowerShell 存取狀態,請將 UserIdentity > 取代 < 為使用者的名稱或使用者主體名稱 (UPN) ,然後執行下列命令:

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

若要顯示所有使用者的遠端 PowerShell 存取狀態,請執行下列命令:

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

若要顯示所有無法存取遠端 PowerShell 的使用者,請執行下列命令:

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

若要顯示可存取遠端 PowerShell 的所有使用者,請執行下列命令:

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

使用 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 -Identity $_ -RemotePowerShellEnabled $false}

本範例會移除 Title 屬性包含 值 「Sales Associate」 的所有使用者對遠端 PowerShell 的存取。

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

$DSA | foreach {Set-User -Identity $_ -RemotePowerShellEnabled $false}

使用特定使用者的清單

若要針對特定使用者清單停用遠端 PowerShell 的存取,請使用下列語法:

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

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

此範例會使用文字檔 C:\My Documents\NoPowerShell.txt,依使用者主體名稱 (UPN) 來識別使用者。 文字檔必須在每一行上包含一個 UPN,如下所示:

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

在文字檔中填入您想要更新的使用者帳戶之後,請執行下列命令:

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

$NPS | foreach {Set-User -Identity $_ -RemotePowerShellEnabled $false}