miércoles, 27 de enero de 2021

Añadir de golpe un conjunto de usuarios a un equipo o un canal privado de Microsoft Teams

 

Añadir usuarios manualmente a un equipo o un canal privado de Microsoft Teams es muy tedioso.

A continuación, se describe una manera para añadir de golpe un conjunto de usuarios en Windows, aprovechando PowerShell y la existencia de un módulo con funciones que permiten manejar ciertos aspectos de Teams (añadir usuarios, en particular).

[Parte de la información y la inspiración inicial están tomadas de aquí: Adding bulk users to Microsoft Teams private channels | Medium]
  • Arrancar el PowerShell en modo administrador 
  • Instalar el módulo de MicrosoftTeams para Powershell
    • PS> Install-Module -Name MicrosoftTeams 
  • [Si se quieren añadir usuarios a un canal privado] Para acceder a la función Add-TeamChannelUser del módulo, hay que instalar la última versión Preview del módulo porque aún no está en la versión release
    • Ver la versión instalada
      PS> Get-Module MicrosoftTeams –listavailable
    • Saber cuál es la última versión, incluyendo versiones preview
      PS> Find-Module MicrosoftTeams –AllowPrerelease
      • Si no funciona, puede que tengas que:
        • Actualizar la versión de PowerShellGet (ver punto siguiente)
        • Habilitar la ejecución de scripts en PowerShell, si está restringido:
          • PS> Set-ExecutionPolicy RemoteSigned
        • Instalar la última versión disponible preview (la 1.1.10-preview, por ejemplo)
          PS> Install-Module -Name MicrosoftTeams -RequiredVersion 1.1.10-preview –AllowPrerelease 
  • [Si no deja instalar versiones preview porque hay que actualizar la versión de PowershellGet]
    • PS> Install-Module PowershellGet -Force
    • Puede ser conveniente cerrar y volver a abrir la ventana de PowerShell 
  • Conectarse al Teams
    • PS> Connect-MicrosoftTeams
    • Pide en una ventana el usuario y la cuenta. También se pueden pasar como parámetros. 
  • Averiguar el GroupID de los equipos de Teams del usuario
    • PS> Get-Team -User <email del usuario de teams>
    • Ojo, si no se pone -User salen todos los de la organización y si son muchos se queda colgado. Puede tardar un rato.
    • Anotar el GroupID del equipo de interés 
  • Añadir un miembro a un canal privado de Teams. Función Add-TeamChannelUser
    • Necesita: GroupID del equipo, nombre del canal privado dentro del equipo, email del miembro a añadir. Por ejemplo:
    • PS> Add-TeamChannelUser -GroupId 586634fb-c6d6-46b0-bd96-e7573ad22aff -DisplayName ProyectoB_Privado -user miembro@empresa.com
    • Si se quiere dar el papel de Propietario a un usuario, después de añadir el miembro, volver a ejecutar añadiendo -Role Owner al final:
    • PS> Add-TeamChannelUser -GroupId 586634fb-c6d6-46b0-bd96-e7573ad22aff -DisplayName ProyectoB_Privado -user miembro@empresa.com -Role Owner 
  • Si se quiere añadir de golpe un conjunto de usuarios se puede crear una hoja de cálculo en formato CSV (columnas separadas por ; ) y hacer un bucle
    • Por ejemplo, supongamos que tenemos una hoja de cálculo CSV con una sola columna, el email de los usuarios a añadir (cabecera “email”, y luego un email por línea)
    • Con Import-CSV se alimenta cada fila a un bucle en el que se añade el usuario usando como parámetro el dato de la columna en cuestión de la hoja de cálculo (en este caso el encabezado “email”)
    • PS> Import-Csv -Path <ruta de la hoja .csv> -delimiter “;” | foreach { Add-TeamChannelUser -GroupId 586634fb-c6d6-46b0-bd96-e7573ad22aff -DisplayName ProyectoB_Privado -user $_.email}
    • De igual manera se podría hacer una hoja en la que hubiera columnas para el GroupID del equipo y/o el nombre del canal privado, si es que se quiere añadir en diferentes equipos y/o canales (la hoja tendría las columnas groupid y canal, y los parámetros correspondientes serían $_.groupid y $_.canal). Si el CSV está delimitado por comas hay que especificarlo en el import-csv:
      • PS> Import-Csv -Path <ruta de la hoja .csv> -delimiter “;” | foreach { Add-TeamChannelUser -GroupId $_.groupid -DisplayName $_.canal -user $_.email}
    • Ojo, a veces da algún error por no se sabe la causa, y quedan sin añadir algunos miembros. Puede ser conveniente partir la hoja en varias secciones. Si un usuario ya es miembro, repetir la inclusión no hace nada, así que simplemente se puede reintentar a ver si no da ningún fallo.
      Conviene comprobar que el número de miembros de cada canal es el correcto. 
  • [USANDO EXCEL PARA GENERAR LOS COMANDOS] Se trata de generar el texto de los comandos, y luego cortar y pegar
    • Por ejemplo, supongamos que tenemos una hoja de cálculo con el GroupID en la columna C, el nombre del canal en la D, y el email del usuario en la C. El texto con el comando a ejecutar se generaría así en Excel:
      • ="Add-TeamChannelUser -GroupId " & C2 & " -DisplayName " & D2 & " -User " & B2
    • Ahora solo hay que cortar estas líneas, y pegarlas en PowerShell. Es conveniente hacerlo por partes para ir comprobando que efectivamente se añaden en cada canal los usuarios correspondientes. 
  • [Si se quiere añadir miembros a un equipo, en lugar de a un Canal Privado] Función Add-TeamChannelUser
    • Como antes, solo que con la función Add-TeamChannelUser -GroupId <Id del equipo> -User <email a añadir>
    • También tiene la opción -Role Owner