Skip to main content

Welcome to a Grasp lesson

Create a free account to keep studying and create your own study path.

Lesson 13

Gestion des numéros de téléphone avec PowerShell

Recommended resources

Bonjour et bienvenue dans cette nouvelle leçon dédiée à l'automatisation de la téléphonie sur Teams.

Dans la leçon précédente, vous avez appris à scripter la création complète d'une équipe, de ses canaux et de ses membres. Vous maîtrisez donc le provisionnement des espaces de collaboration. Aujourd'hui, nous allons aborder une brique fondamentale de votre objectif : la téléphonie.

L'objectif de cette leçon est de vous rendre capable de gérer l'attribution des numéros de téléphone aux utilisateurs via PowerShell. C'est une compétence essentielle, que ce soit pour des numéros fournis par Microsoft (Calling Plan) ou, comme cela vous intéresse particulièrement, pour des numéros acheminés via votre propre infrastructure (Direct Routing).

1. Prérequis et le Cmdlet Central

Avant d'attribuer un numéro, un utilisateur doit posséder la licence appropriée (généralement Téléphone Microsoft Teams ou Microsoft Teams Phone) et être "activé pour la voix".

Historiquement, l'activation pour la voix se faisait avec une commande distincte : Set-CsUser -Identity "user@domain.com" -EnterpriseVoiceEnabled $true. Bien que vous puissiez encore rencontrer cette commande dans d'anciennes documentations, la méthode moderne est beaucoup plus simple.

La gestion des numéros de téléphone se fait aujourd'hui principalement via une seule commande : Set-CsPhoneNumberAssignment. L'un de ses grands avantages est qu'elle active automatiquement la fonctionnalité de voix pour l'utilisateur (EnterpriseVoiceEnabled passe à $true) au moment où vous lui assignez un numéro.

Pour comprendre en détail cette commande, nous allons nous appuyer sur la documentation officielle de Microsoft.

Set-CsPhoneNumberAssignment (MicrosoftTeams) | Microsoft Learn

Cet article de Microsoft Learn est la référence pour la commande Set-CsPhoneNumberAssignment. Il décrit sa fonction, sa syntaxe et ses paramètres. C'est votre source de vérité pour cette leçon.

Lisez la description initiale de la commande pour confirmer qu'elle active bien EnterpriseVoiceEnabled automatiquement. Ensuite, survolez la section des paramètres ("Parameters") et repérez -Identity, -PhoneNumber et surtout -PhoneNumberType. Nous allons détailler ce dernier juste après.

Comme vous l'avez lu, les paramètres clés sont :

  • -Identity : L'UPN (User Principal Name) de l'utilisateur ou du compte de ressource.
  • -PhoneNumber : Le numéro de téléphone à attribuer. Le format E.164 (ex: +33123456789) est la norme recommandée.
  • -PhoneNumberType : Le paramètre le plus important, car il définit l'origine du numéro. Les valeurs principales sont :
    • CallingPlan : Pour un numéro fourni et géré par Microsoft.
    • DirectRouting : Pour un numéro provenant de votre propre opérateur téléphonique via un SBC (Session Border Controller). C'est le cas qui nous intéressera le plus pour la suite.
    • OperatorConnect : Pour un numéro fourni par un opérateur partenaire de Microsoft.

2. Attribuer un Numéro de Téléphone : Cas du Direct Routing

Étant donné votre objectif de maîtriser le Direct Routing, nous allons nous concentrer sur ce scénario. L'attribution d'un numéro de type DirectRouting signale à Teams que les appels entrants et sortants pour ce numéro doivent être acheminés via le SBC que vous aurez configuré.

La ressource suivante de Microsoft Learn met cette commande en contexte dans le cadre d'un déploiement Direct Routing.

Enable users for Direct Routing - Microsoft Teams

Cet article, "Enable users for Direct Routing", fournit une procédure complète pour l'activation des utilisateurs. La section sur PowerShell est particulièrement pertinente car elle montre des exemples concrets.

Concentrez-vous sur la sous-section "Use PowerShell". Analysez les exemples de commandes fournis pour l'assignation d'un numéro standard et d'un numéro avec extension. C'est exactement la syntaxe que vous utiliserez en production.

Voici la syntaxe à retenir, directement applicable à vos futurs déploiements.

Exemple 1 : Attribuer un numéro de base

Cette commande attribue un numéro de téléphone Direct Routing à l'utilisateur spencer.low@contoso.com. Votre expérience avec Cisco VoIP vous permet de faire l'analogie : c'est l'équivalent d'associer un Directory Number (DN) à un utilisateur ou un téléphone dans Cisco Unified Communications Manager (CUCM).

Set-CsPhoneNumberAssignment -Identity "spencer.low@contoso.com" -PhoneNumber "+14255388797" -PhoneNumberType DirectRouting

Exemple 2 : Attribuer un numéro avec une extension

Teams supporte également les numéros avec extensions, ce qui est courant dans les entreprises pour partager un numéro de base.

Set-CsPhoneNumberAssignment -Identity "stacy.quinn@contoso.com" -PhoneNumber "+14255388701;ext=1002" -PhoneNumberType DirectRouting

3. Vérification et Bonnes Pratiques

Une fois la commande exécutée, il est essentiel de vérifier que l'assignation a été prise en compte correctement.

Vous pouvez utiliser la commande Get-CsPhoneNumberAssignment pour cela :

Get-CsPhoneNumberAssignment -Identity "stacy.quinn@contoso.com" | Format-List

Cette commande affichera des détails comme le numéro assigné (TelephoneNumber), son type (NumberType), et l'identifiant de localisation d'urgence si configuré.

Point de vigilance pour les migrations

Dans un contexte de migration depuis un environnement Skype for Business sur site, un attribut peut causer des conflits : OnPremLineUri. Si un utilisateur est synchronisé depuis un Active Directory local où ce champ était utilisé, vous ne pourrez pas lui assigner un nouveau numéro via Set-CsPhoneNumberAssignment tant que cet attribut n'est pas vidé.

La documentation Enable users for Direct Routing (ressource LINK, section 2) que vous avez consultée explique très bien cette situation. C'est une vérification cruciale dans les projets de migration du monde réel. Vous devez utiliser le Skype for Business Management Shell sur un serveur local pour vider l'attribut (Set-CsUser -Identity "user" -LineUri $null) avant de pouvoir gérer le numéro dans le cloud.


4. Mise en Pratique

Il est temps de mettre la main à la pâte. Pour cet exercice, vous aurez besoin d'un compte utilisateur de test dans votre environnement qui possède bien une licence Teams Phone.

Votre mission :

  1. Connectez-vous à votre session PowerShell Microsoft Teams.
  2. Choisissez un utilisateur de test.
  3. Assignez-lui un numéro de téléphone fictif pour le Direct Routing (par exemple, +33102030405) en utilisant la commande Set-CsPhoneNumberAssignment.
  4. Vérifiez que le numéro a bien été assigné en utilisant Get-CsPhoneNumberAssignment.
  5. (Bonus) Une fois la vérification faite, supprimez l'assignation du numéro avec la commande Remove-CsPhoneNumberAssignment -Identity "user@domain.com".

Cet exercice simple validera votre capacité à exécuter le cycle de vie de base de l'attribution d'un numéro.


Conclusion

Félicitations ! Vous avez franchi une étape clé dans l'administration de la téléphonie Teams. Vous êtes désormais capable d'utiliser PowerShell pour une tâche fondamentale : l'attribution de numéros de téléphone, en particulier pour le Direct Routing.

Points clés à retenir :

  • La commande moderne et centralisée est Set-CsPhoneNumberAssignment.
  • Elle gère à la fois l'attribution du numéro et l'activation de la voix (EnterpriseVoiceEnabled).
  • Le paramètre -PhoneNumberType est crucial pour indiquer à Teams comment router les appels (ici, DirectRouting).
  • La vérification avec Get-CsPhoneNumberAssignment est une étape indispensable.
  • Soyez vigilant au legacy OnPremLineUri dans les scénarios de migration.

Prochaine étape :
Maintenant que vos utilisateurs ont des numéros, comment contrôler ce qu'ils peuvent appeler ? Dans la prochaine leçon, nous allons explorer la création et l'attribution de politiques vocales (Dial Plan, Voice Routing Policy) via PowerShell. Vous apprendrez à définir des règles de normalisation de numéros et à construire les routes qui détermineront quels appels sont autorisés à sortir via le SBC, une logique qui vous rappellera sans doute la configuration des route patterns et translation patterns dans l'univers Cisco.