Attribuer des stratégies Skype Entreprise en ligne par utilisateur avec PowerShell pour Microsoft 365

Cet article est valable pour Microsoft 365 Entreprise et Office 365 Entreprise.

L’utilisation de PowerShell pour Microsoft 365 est un moyen efficace d’attribuer des paramètres de communication par utilisateur avec des stratégies Skype Entreprise Online.

Préparer l’exécution des commandes PowerShell

Suivez ces instructions pour exécuter les commandes (sautez les étapes que vous avez déjà effectuées) :

Remarque

Le connecteur Skype Entreprise Online fait actuellement partie du dernier module PowerShell Teams. Si vous utilisez la version publique la plus récente de PowerShell Teams, vous n’avez pas besoin d’installer le connecteur Skype Entreprise Online.

  1. Installer le module PowerShell Teams.

  2. Ouvrez l’invite de commandes Windows PowerShell et exécutez les commandes suivantes :

    Import-Module MicrosoftTeams
    Connect-MicrosoftTeams
    

    Lorsque vous y êtes invité, entrez le nom utilisateur et le mot de passe de votre compte d'administrateur Skype Entreprise Online.

Mise à jour des paramètres de communication externe d’un compte d’utilisateur

Supposons que vous souhaitiez modifier les paramètres de communication externe d'un compte d'utilisateur. Par exemple, vous souhaitez autoriser Alex à communiquer avec les utilisateurs fédérés (EnableFederationAccess est défini sur True), mais pas avec les utilisateurs Windows Live (EnablePublicCloudAccess est défini sur False). Pour cela, vous devez faire deux choses :

  1. Trouver une stratégie d’accès externe qui réponde à nos critères.

  2. Attribuer cette stratégie d’accès externe à Alex.

Comment déterminer la stratégie d’accès externe à attribuer à Alex ? La commande suivante renvoie toutes les stratégies d’accès externe où EnableFederationAccess a la valeur True et EnablePublicCloudAccess a la valeur False :

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

Sauf si vous avez créé des instances personnalisées d’ExternalAccessPolicy, cette commande retourne une stratégie qui répond à nos critères (FederationOnly). Voici un exemple :

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

Maintenant que vous savez quelle stratégie attribuer à Alex, vous pouvez le faire à l'aide de la cmdlet Grant-CsExternalAccessPolicy. Voici un exemple :

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

L’attribution d’une stratégie est simple : vous pouvez spécifier l’identité de l’utilisateur et le nom de la stratégie à affecter.

En ce qui concerne les stratégies et les affectations de stratégies, vous n’êtes pas limité à utiliser des comptes d’utilisateur à la fois. Supposons que vous ayez besoin d’une liste de tous les utilisateurs autorisés à communiquer avec les partenaires fédérés et les utilisateurs de Windows Live. Nous savons déjà que la stratégie d’accès utilisateur externe FederationAndPICDefault a été attribuée à ces utilisateurs. Comme nous le savons, vous pouvez afficher une liste de tous ces utilisateurs en exécutant une commande simple. Voici la commande :

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

En d'autres termes, afficher tous les utilisateurs dont la propriété ExternalAccessPolicy est définie sur FederationAndPICDefault. (En outre, afin de limiter la quantité d'informations affichées à l'écran, utilisez la cmdlet Select-Object pour n'afficher que le nom d'affichage de chaque utilisateur.)

Pour configurer tous vos comptes d’utilisateur de manière à ce qu’ils utilisent la même stratégie, procédez comme suit :

Get-CsOnlineUser | Grant-CsExternalAccessPolicy "FederationAndPICDefault"

Cette commande utilise Get-CsOnlineUser pour renvoyer une collection de tous les utilisateurs qui ont été activés pour Lync, puis transmet toutes ces informations à la cmdlet Grant-CsExternalAccessPolicy, laquelle attribue la stratégie FederationAndPICDefault à chaque utilisateur de la collection.

Par exemple, supposons que vous avez précédemment attribué à Alex la stratégie FederationAndPICDefault, que vous avez changé d’avis et que vous souhaitez qu’il soit géré par la stratégie d’accès externe globale. Vous ne pouvez pas attribuer explicitement la stratégie globale à un utilisateur. Au lieu de cela, la stratégie globale est utilisée pour un utilisateur donné si aucune stratégie par utilisateur n’est affectée à cet utilisateur. Par conséquent, si nous voulons qu’Alex soit géré par la stratégie globale, vous devez annuler l’affectation de toute stratégie par utilisateur qui lui a été précédemment attribuée. Voici un exemple de commande :

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

Cette commande définit le nom de la stratégie d’accès externe affectée à Alex sur une valeur null ($Null). Null signifie « nothing ». En d’autres termes, aucune stratégie d’accès externe n’est affectée à Alex. Lorsqu’aucune stratégie d’accès externe n’est affectée à un utilisateur, celui-ci est alors géré par la stratégie globale.

Gestion d’un grand nombre d’utilisateurs

Pour gérer un grand nombre d’utilisateurs (1 000 ou plus), vous devez traiter les commandes par lot via un bloc de script à l’aide de l’applet de commande Invoke-Command . Dans les exemples précédents, chaque fois qu’une applet de commande est exécutée, elle doit configurer l’appel, puis attendre le résultat avant de le renvoyer. Lors de l’utilisation d’un bloc de script, cela permet d’exécuter les applets de commande à distance et, une fois terminé, de renvoyer les données.

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

Cela permet de trouver 500 utilisateurs à la fois qui n’ont pas de stratégie cliente. Il leur accorde la stratégie cliente « ClientPolicyNoIMURL » et la stratégie d’accès externe « FederationAndPicDefault ». Les résultats sont regroupés par lot en groupes de 50 et chaque lot de 50 est ensuite envoyé à l’ordinateur distant.

Voir aussi

Gestion de Skype Entreprise Online avec PowerShell

Gestion de Microsoft 365 à l’aide de PowerShell

Prise en main de PowerShell pour Microsoft 365