Compartilhar via


Atribuir políticas de Skype for Business Online por usuário com o PowerShell para o Microsoft 365

Esse artigo se aplica ao Microsoft 365 Enterprise e ao Office 365 Enterprise.

Usar o PowerShell para Microsoft 365 é uma maneira eficiente de atribuir configurações de comunicação por usuário com políticas Skype for Business Online.

Preparar para executar os comandos do PowerShell

Use estas instruções para se configurar para executar os comandos (ignore as etapas que você já concluiu):

Observação

O Conector Skype for Business Online atualmente faz parte do módulo mais recente do PowerShell do Teams. Se você estiver usando o último lançamento público do PowerShell Teams, você não precisa instalar o Conector do Skype for Business Online.

  1. Instale o módulo PowerShell do Teams.

  2. Abra um prompt de comando do Windows PowerShell e execute os seguintes comandos:

    Import-Module MicrosoftTeams
    Connect-MicrosoftTeams
    

    Quando solicitado, insira o nome e a senha da conta de administrador do Skype for Business Online.

Atualizando as configurações de comunicação externa para uma conta de usuário

Suponha que você queira alterar as configurações de comunicação externa em uma conta de usuário. Por exemplo, você deseja permitir que Alex se comunique com usuários federados (EnableFederationAccess é igual a True), mas não com usuários do Windows Live (EnablePublicCloudAccess é igual a False). Para fazer isso, você precisa fazer duas coisas:

  1. Localizar uma política de acesso externo que atenda aos nossos critérios.

  2. Atribuir essa política de acesso externo a Antônio.

Como você determina qual política de acesso externo atribuir ao Alex? O comando a seguir retorna todas as políticas de acesso externo em que EnableFederationAccess é definido como True e EnablePublicCloudAccess como False:

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

A menos que você tenha criado instâncias personalizadas do ExternalAccessPolicy, esse comando retorna uma política que atenda aos nossos critérios (FederationOnly). Veja um exemplo:

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

Agora que você sabe qual política atribuir a Alex, podemos atribuir essa política usando o cmdlet Grant-CsExternalAccessPolicy . Veja um exemplo:

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

Atribuir uma política é simples: você pode especificar a identidade do usuário e o nome da política a ser atribuída.

E quando se trata de políticas e atribuições de política, você não se limita a trabalhar com contas de usuário uma por vez. Por exemplo, suponha que você precise de uma lista de todos os usuários que têm permissão para se comunicar com parceiros federados e com usuários do Windows Live. Já sabemos que esses usuários foram atribuídos à política de acesso de usuário externo FederationAndPICDefault. Como sabemos disso, você pode exibir uma lista de todos esses usuários executando um comando simples. Aqui está o comando:

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

Em outras palavras, isso nos mostra todos os usuários cuja propriedade ExternalAccessPolicy está definida como FederationAndPICDefault. (E, para limitar a quantidade de informações exibidas na tela, use o cmdlet Select-Object para exibir o nome de exibição de cada usuário.)

Para configurar todas as nossas contas de usuário para usar essa mesma política, use este comando:

Get-CsOnlineUser | Grant-CsExternalAccessPolicy "FederationAndPICDefault"

Esse comando usa Get-CsOnlineUser para retornar uma coleção de todos os usuários habilitados para Lync e, em seguida, envia todas essas informações para Grant-CsExternalAccessPolicy, que atribui a política FederationAndPICDefault a cada usuário da coleção.

Como exemplo adicional, suponha que você tenha atribuído anteriormente a Alex a política FederationAndPICDefault, e agora você mudou de ideia e gostaria que ele fosse gerenciado pela política global de acesso externo. Você não pode atribuir explicitamente a política global a ninguém. Em vez disso, a política global será usada para um determinado usuário se nenhuma política por usuário for atribuída a esse usuário. Portanto, se quisermos que Alex seja gerenciado pela política global, você precisará desatribuir qualquer política por usuário atribuída anteriormente a ele. Aqui está um comando de exemplo:

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

Esse comando define o nome da política de acesso externo atribuída a Alex como um valor nulo ($Null). Nulo significa "nada". Em outras palavras, nenhuma política de acesso externo é atribuída a Alex. Quando nenhuma política de acesso externo é atribuída a um usuário, esse usuário é gerenciado pela política global.

Gerenciando um grande número de usuários

Para gerenciar um grande número de usuários (1000 ou mais), você precisa colocar em lote os comandos por meio de um bloco de script usando o cmdlet Invoke-Command . Em exemplos anteriores, sempre que um cmdlet é executado, ele deve configurar a chamada e aguardar o resultado antes de enviá-lo de volta. Ao usar um bloco de script, isso permite que os cmdlets sejam executados remotamente e, uma vez concluídos, enviem os dados de volta.

$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 "
    }
}

Isso localiza 500 usuários por vez que não têm uma política de cliente. Ela concede a eles a política de cliente "ClientPolicyNoIMURL" e a política de acesso externo "FederationAndPicDefault". Os resultados são agrupados em grupos de 50 e cada lote de 50 é enviado para o computador remoto.

Confira também

Gerenciar o Skype for Business Online com o Windows PowerShell

Gerenciar o Microsoft 365 com o PowerShell

Introdução ao PowerShell para o Microsoft 365