控制遠端 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}