共用方式為


使用 PowerShell for Microsoft 365 指派每位使用者 商務用 Skype 在線原則

本文適用於 Microsoft 365 企業版和 Office 365 企業版。

使用適用於 Microsoft 365 的 PowerShell 是使用 商務用 Skype Online 原則指派每位使用者通訊設定的有效方式。

準備執行 PowerShell 命令

使用下列指示來設定以執行命令 (略過您已完成的步驟) :

注意事項

商務用 Skype Online 連接器目前是最新 Teams PowerShell 模組的一部分。 如果您使用的是最新的 Teams PowerShell 公開發行版本,則不需要安裝商務用 Skype Online 連接器。

  1. 安裝Teams PowerShell 模組安裝

  2. 開啟 Windows PowerShell 命令提示字元,然後執行下列命令:

    Import-Module MicrosoftTeams
    Connect-MicrosoftTeams
    

    出現提示時,輸入您的 商務用 Skype Online 系統管理員帳戶名稱和密碼。

更新用戶帳戶的外部通訊設定

假設您想要變更用戶帳戶上的外部通訊設定。 例如,您想要允許 Alex 與同盟用戶通訊 (EnableFederationAccess 等於 True) 但不能與 Windows Live 使用者通訊, (EnablePublicCloudAccess 等於 False) 。 若要這樣做,您需要執行兩件事:

  1. 尋找符合我們準則的外部存取原則。

  2. 將該外部存取原則指派給 Alex。

如何判斷要指派 Alex 的外部存取原則? 下列命令會傳回 EnableFederationAccess 設定為 True 且 EnablePublicCloudAccess 設定為 False 的所有外部存取原則:

Get-CsExternalAccessPolicy -Include All| Where-Object {$_.EnableFederationAccess -eq $True -and $_.EnablePublicCloudAccess -eq $False}

除非您已建立 ExternalAccessPolicy 的任何自定義實例,否則該命令會傳回一個符合我們準則的原則, (FederationOnly) 。 以下為範例:

Identity                          : Tag:FederationOnly
Description                       :
EnableFederationAccess            : True
EnableXmppAccess                  : False
EnablePublicCloudAccess           : False
EnablePublicCloudAudioVideoAccess : False
EnableOutsideAccess               : True

既然您知道要指派給 Alex 的原則,我們可以使用 Grant-CsExternalAccessPolicy Cmdlet 來指派該原則。 以下為範例:

Grant-CsExternalAccessPolicy -Identity "Alex Darrow" -PolicyName "FederationOnly"

指派原則很簡單:您可以指定使用者的身分識別和要指派的原則名稱。

而在原則和原則指派方面,您不限於一次使用一個用戶帳戶。 例如,假設您需要可與同盟夥伴和 Windows Live 使用者進行通訊的所有使用者清單。 我們已經知道這些使用者均被指派外部使用者存取原則 FederationAndPICDefault。 因為我們知道,您可以執行一個簡單的命令來顯示所有用戶的清單。 以下是 命令:

Get-CsOnlineUser -Filter {ExternalAccessPolicy -eq "FederationAndPICDefault"} | Select-Object DisplayName

換句話說,顯示 ExternalAccessPolicy 屬性設定為 FederationAndPICDefault 的所有使用者。 (為了限制螢幕上顯示的資訊量,請使用 Select-Object Cmdlet 只顯示每個使用者的顯示名稱。)

若要將所有使用者帳戶設定為使用該相同原則,請使用下列命令:

Get-CsOnlineUser | Grant-CsExternalAccessPolicy "FederationAndPICDefault"

此命令會使用 Get-CsOnlineUser 傳回已啟用 Lync 之所有使用者的集合,然後將所有資訊傳送至 Grant-CsExternalAccessPolicy,這會將 FederationAndPICDefault 原則指派給集合中的每個使用者。

另一個範例是,假設您先前已將 FederationAndPICDefault 原則指派給 Alex,現在您已改變心意,希望由全域外部存取原則管理。 您無法明確地將全域原則指派給任何人。 相反地,如果未將每個用戶的原則指派給該使用者,則會針對指定的使用者使用全域原則。 因此,如果我們想要讓 Alex 受全域原則管理,您必須 取消 指派先前指派給他的任何每位用戶原則。 以下是範例命令:

Grant-CsExternalAccessPolicy -Identity "Alex Darrow" -PolicyName $Null

此命令會將指派給 Alex 的外部存取原則名稱設定為 null 值 ($Null) 。 Null 表示「無」。 換句話說,不會將外部存取原則指派給 Alex。 當未將外部存取原則指派給使用者時,該用戶會接著受到全域原則的管理。

管理大量使用者

若要管理 (1000 或更多) 的大量使用者,您需要使用 Invoke-Command Cmdlet 透過腳本區塊批處理命令。 在先前的範例中,每次執行 Cmdlet 時,它都必須設定呼叫,然後等候結果再傳回。 使用腳本區塊時,這可讓 Cmdlet 從遠端執行,一旦完成,就會將數據傳回。

$s = Get-PSSession | Where-Object { ($.ComputerName -like '*.online.lync.com' -or $.Computername -eq 'api.interfaces.records.teams.microsoft.com') -and $.State -eq 'Opened' -and $.Availability -eq 'Available' }

$users = Get-CsOnlineUser -Filter { ClientPolicy -eq $null } -ResultSize 500

$batch = 50
$filter = ''
$total = $users.Count
$count = 0
    $users | ForEach-Object {
    $upn = $_.UserPrincipalName
    $filter += "(UserPrincipalName -eq '$upn')"
    $batch--
    $count++
    if (($batch -eq 0) -or ($count -eq $total)) {
        $filterSB=[ScriptBlock]::Create($filter)
        Invoke-Command -Session $s -ScriptBlock {param($f) Get-CsOnlineUser -filter $f | Grant-CsClientPolicy -PolicyName "ClientPolicyNoIMURL" -Passthru | Grant-CsExternalAccessPolicy -PolicyName "FederationAndPICDefault"} -ArgumentList $filterSB

        # Reset
        $batch = 50
        $filter = ''
    } else {
        $filter += " -or "
    }
}

這會一次尋找 500 個沒有客戶端原則的使用者。 它會授與他們客戶端原則 「ClientPolicyNoIILOL」 和外部存取原則 “FederationAndPicDefault”。 結果會批處理成50個群組,然後每個50個批次都會傳送至遠端電腦。

另請參閱

使用 PowerShell 管理商務用 Skype Online

使用 PowerShell 管理 Microsoft 365

開始使用適用於 Microsoft 365 的 PowerShell