Microsoft Teams PowerShell es la forma de administrar Teams con comandos, en lugar de hacerlo con clics en el centro de administración. Con una línea se saca la lista de todos los equipos con sus propietarios, se asigna una directiva de reuniones a cien personas o se archiva un equipo que ya cumplió su función. Esta guía explica qué es, cómo instalar el módulo, cómo conectarse a Microsoft Teams y qué comandos usa a diario un administrador. Además, incluye escenarios completos, una lista de errores con su solución y la lógica de las directivas, que es donde más se equivoca la gente.
Está escrita para dos lectores. Si usted no es de sistemas, las primeras secciones le explican qué hace esta herramienta y por qué su equipo de TI la usa. En cambio, si administra Microsoft 365, encontrará los comandos listos para copiar, con sus límites y sus trampas.
No copiamos el manual sin más. Comprobamos cada comando y cada parámetro contra el módulo vigente, la versión 8.0.0, y contra la referencia oficial de Microsoft. Además, medimos el módulo en Windows PowerShell 5.1 y en PowerShell 7, y ahí apareció un detalle que la documentación no cuenta.
Qué es Microsoft Teams PowerShell y para qué sirve
Microsoft Teams es la aplicación de chat, reuniones y trabajo en equipo de Microsoft 365. Cada equipo de Teams es, por debajo, un grupo de Microsoft 365, con su sitio de SharePoint para los archivos y su buzón para el calendario.
Microsoft Teams PowerShell es el conjunto de comandos, llamados cmdlets, que administran ese servicio desde la consola. Microsoft los distribuye en un módulo gratuito, MicrosoftTeams. En la práctica, mucha gente lo llama Teams PowerShell a secas.
Para entenderlo sin tecnicismos, piense en un edificio de oficinas con muchas salas de reunión. El centro de administración es la recepción: cómoda, pero atiende de a una sala o de a una persona. En cambio, Microsoft Teams PowerShell es el tablero de control del edificio. Desde él se revisan, se ajustan o se cierran todas las salas a la vez.
Sirve, sobre todo, para cinco trabajos:
- Hacer inventario: qué equipos existen, quién es propietario de cada uno y cuáles quedaron sin dueño.
- Cambiar muchos equipos o usuarios a la vez, con la misma orden y sin olvidar ninguno.
- Asignar directivas, como las de reuniones o mensajería, a grupos enteros o a miles de personas.
- Revisar con quién puede comunicarse su organización: dominios externos e invitados.
- Automatizar tareas que se repiten, como el informe mensual de equipos sin propietario.
Por qué conviene frente al centro de administración de Teams
El centro de administración de Teams sigue siendo útil para el caso suelto. Sin embargo, trabaja de a un objeto, no deja registro reutilizable de lo que se hizo y algunas opciones solo existen en la consola. Por eso, los administradores combinan las dos herramientas.
| Tarea | Centro de administración de Teams | Microsoft Teams PowerShell |
|---|---|---|
| Listar los equipos con sus propietarios | Una vista por páginas, sin propietarios juntos | Un informe en un archivo CSV |
| Encontrar los equipos sin propietario | Revisando equipo por equipo | Un filtro sobre todos los equipos |
| Asignar una directiva a miles de personas | Por lotes desde la lista de usuarios | Un lote de hasta 5.000 personas por orden |
| Saber de dónde viene la directiva de un usuario | No lo muestra | Get-CsUserPolicyAssignment dice si es directa, de grupo o global |
| Bloquear también los subdominios de un dominio externo | No | -BlockAllSubdomains |
| Repetir la misma tarea el mes siguiente | Volver a hacer cada clic | Ejecutar el mismo script |
En resumen, el panel sirve para lo puntual. Microsoft Teams PowerShell sirve para lo que se repite, para lo masivo y para lo que hay que poder demostrar después.
Si todavía no conoce los paneles, empiece por nuestra guía del centro de administración de Microsoft 365. Allí se crean los usuarios y se asignan las licencias que luego usa Teams.
Dos familias de comandos en el mismo módulo
El módulo MicrosoftTeams junta dos mundos que conviene distinguir. Los contamos en la versión 8.0.0:
| Familia | Ejemplos | Cuántos hay | Qué administra |
|---|---|---|---|
| Comandos de equipos | Get-Team, Add-TeamUser, New-TeamChannel | 28 con «Team» en el nombre | Los equipos, sus canales y sus miembros |
| Comandos Cs | Get-CsOnlineUser, Grant-CsTeamsMeetingPolicy | 627 | Directivas, configuración de la organización, usuarios y telefonía |
| Total del módulo | 679 |
El prefijo Cs viene de Skype Empresarial, el antecesor de Teams. El antiguo conector de Skype Empresarial Online se retiró y sus comandos pasaron a este módulo. Por eso, si encuentra un script viejo con New-CsOnlineSession, cámbielo por Connect-MicrosoftTeams, como indica Microsoft.
Una aclaración de alcance: la telefonía de Teams, con números, colas de llamadas y operadores automáticos, tiene sus propios comandos en este módulo. Esta guía no la cubre.
Requisitos de Microsoft Teams PowerShell
Para usar Microsoft Teams PowerShell hacen falta tres cosas: una cuenta con permisos, una versión de PowerShell compatible y el propio módulo. Ninguna exige comprar nada adicional.
Permisos: qué rol pide Microsoft Teams PowerShell
Para administrar todo Teams, la cuenta necesita el rol de administrador de Teams, según la guía de roles de Microsoft. Hay roles más acotados, como los de comunicaciones, que solo cubren reuniones, llamadas y su soporte. El administrador global también puede, pero Microsoft recomienda reservarlo para emergencias y usar el rol con menos privilegios que permita hacer la tarea.
Según Microsoft, el rol de administrador de comunicaciones de Teams, por ejemplo, está pensado para las llamadas y las reuniones, con sus directivas. Si una orden se rechaza, revise primero qué rol tiene la cuenta.
Versión de PowerShell que pide el módulo de Teams
La guía de instalación de Microsoft indica que el módulo funciona en Windows PowerShell 5.1, con .NET Framework 4.7.2 o posterior, y en PowerShell 7.2 o posterior. Lo comprobamos: el manifiesto de la 8.0.0 declara las dos ediciones, y el módulo cargó en las dos consolas con sus 679 comandos.
Si no sabe qué versión de PowerShell tiene, nuestra guía de PowerShell explica cómo verlo y cómo instalar la versión 7.
Instalar el módulo de Microsoft Teams PowerShell
El módulo se instala desde la Galería de PowerShell. Primero, compruebe si ya lo tiene:
Get-Module -Name MicrosoftTeams -ListAvailable | Select-Object Name, Version, ModuleBase
Si no aparece, instálelo solo para su usuario, sin permisos de administrador. Para instalarlo para todo el equipo, cambie CurrentUser por AllUsers y abra la consola como administrador:
Install-Module -Name MicrosoftTeams -Scope CurrentUser
La primera vez, PowerShell puede avisar de que la Galería es un repositorio que no es de confianza. Acepte para continuar. Después, actualícelo con la misma vía con la que lo instaló:
Update-Module -Name MicrosoftTeams
Microsoft solo da soporte a las versiones 4.x y posteriores. Además, publica a menudo: en los doce meses anteriores a esta guía salieron seis versiones estables, de la 7.5.0, en noviembre de 2025, a la 8.0.0, en septiembre de 2026. Cada una añade o cambia parámetros, así que un script escrito con una versión vieja puede fallar con la nueva.
Lo que medimos en Microsoft Teams PowerShell 8.0.0
En el equipo de prueba el módulo no estaba instalado. Por eso descargamos la 8.0.0 de la Galería a una carpeta temporal, sin instalarla, y la cargamos desde allí. Sin conectarnos a ninguna organización, esto es lo que dio:
| Medida | Resultado |
|---|---|
| Tamaño | 80,7 MB en 217 archivos |
| Comandos | 679, todos con verbos aprobados por PowerShell |
| Carga en PowerShell 7.6.7 | 3,7 segundos |
| Avisos al importar | Ninguno |
| Mensaje sin conexión, comandos de equipos | You must call the Connect-MicrosoftTeams cmdlet before calling any other cmdlets. |
| Mensaje sin conexión, comandos Cs | Session is not established, run Connect-MicrosoftTeams before requesting access token |
Los dos mensajes distintos tienen una explicación práctica. Los comandos de equipos y los Cs viven en piezas distintas del módulo. Así que, si un script falla con uno u otro, la causa es la misma: falta Connect-MicrosoftTeams.
Una trampa del módulo de Teams en Windows PowerShell 5.1: las rutas largas
Aquí apareció el hallazgo. Al importar la 8.0.0 en Windows PowerShell 5.1 desde la carpeta temporal, salieron siete errores como este: «No se encontró el elemento», seguido del nombre de un archivo terminado en .format.ps1xml.
El módulo cargó igual, con sus 679 comandos, pero sin esos siete archivos, que definen cómo se muestran en pantalla algunas configuraciones. La causa es la longitud de la ruta. El archivo de nombre más largo del módulo tiene 106 caracteres, y en esa carpeta la ruta completa llegaba a 283. Windows PowerShell 5.1 no abre rutas de 260 caracteres o más si Windows no tiene activadas las rutas largas, y en ese equipo no lo estaban.
Lo comprobamos de dos formas. Cargando la misma copia desde una unidad de ruta corta, los errores desaparecieron. Y en una instalación normal no pasa: en la carpeta Documentos de ese usuario, la ruta más larga mediría 205 caracteres.
Por tanto, el problema solo aparece si el módulo se copia a una carpeta muy profunda, algo habitual al llevarlo a mano a un servidor sin internet. Si lo hace, déjelo en una ruta corta. PowerShell 7 no tuvo el problema.
Cómo conectarse a Microsoft Teams con PowerShell
Para conectarse a Microsoft Teams basta una orden. Se abre la ventana de inicio de sesión de Microsoft, con su contraseña y su segundo factor:
Connect-MicrosoftTeams
Tenga en cuenta estas opciones de la referencia oficial de Connect-MicrosoftTeams:
- En un servidor sin navegador, use
-UseDeviceAuthentication. La consola muestra un código y una dirección para iniciar sesión desde otro equipo. - Si administra varias organizaciones, indique cuál con
-TenantId. - Las nubes especiales, como las del Gobierno de Estados Unidos, se indican con
-TeamsEnvironmentName. Para una empresa normal no hace falta.
Al terminar, cierre la conexión:
Disconnect-MicrosoftTeams
Hay otra vía sin instalar nada. Desde el centro de administración de Teams se abre Azure Cloud Shell, una consola en el navegador, y allí se ejecuta Connect-MicrosoftTeams.
Errores al conectarse a Teams con PowerShell
Estos son los mensajes que vimos en el equipo de prueba o que documenta Microsoft, con su causa:
| Mensaje o síntoma | Causa | Solución |
|---|---|---|
You must call the Connect-MicrosoftTeams cmdlet before calling any other cmdlets. | No se ha conectado, o la conexión se cerró | Ejecute Connect-MicrosoftTeams |
Session is not established, run Connect-MicrosoftTeams before requesting access token | Lo mismo, en un comando Cs | Ejecute Connect-MicrosoftTeams |
«No se encontró el elemento…» con archivos .format.ps1xml al importar | El módulo está en una ruta demasiado larga para Windows PowerShell 5.1 | Muévalo a una ruta corta o use PowerShell 7 |
| El comando existe en la documentación pero no en su consola | Su versión del módulo es anterior | Actualice con Update-Module |
Un script viejo usa New-CsOnlineSession | Es del conector de Skype Empresarial, retirado | Cámbielo por Connect-MicrosoftTeams |
| La orden se rechaza por permisos | La cuenta no tiene el rol necesario | Pida el rol de administrador de Teams o el que cubra esa tarea |
Comandos de Microsoft Teams PowerShell más usados
Con casi 700 comandos, conviene saber cuáles se usan de verdad. Los agrupamos por tarea. Todos exigen haberse conectado antes.
Equipos y miembros
| Comando | Para qué sirve |
|---|---|
Get-Team | Listar equipos, con filtros por nombre, visibilidad o archivado |
New-Team | Crear un equipo |
Set-Team | Cambiar el nombre, la descripción o los permisos de un equipo |
Remove-Team | Borrar un equipo y su grupo de Microsoft 365 |
Set-TeamArchivedState | Archivar o reactivar un equipo |
Get-TeamUser | Listar propietarios, miembros e invitados de un equipo |
Add-TeamUser | Añadir a alguien como miembro o como propietario |
Remove-TeamUser | Quitar a alguien de un equipo |
Get-AssociatedTeam | Ver los equipos a los que pertenece una persona |
Canales
| Comando | Para qué sirve |
|---|---|
Get-TeamAllChannel | Listar todos los canales de un equipo, incluidos los que otros equipos comparten con él |
New-TeamChannel | Crear un canal estándar, privado o compartido |
Add-TeamChannelUser | Añadir a alguien a un canal privado o compartido |
Get-TeamChannelUser | Ver quién está en un canal privado o compartido |
Directivas, usuarios y organización
| Comando | Para qué sirve |
|---|---|
Get-CsOnlineUser | Ver un usuario de Teams y sus directivas |
Get-CsTeamsMeetingPolicy | Ver las directivas de reuniones |
Set-CsTeamsMeetingPolicy | Cambiar una directiva de reuniones |
Grant-CsTeamsMeetingPolicy | Asignar una directiva de reuniones a un usuario o a un grupo |
Get-CsTeamsMessagingPolicy | Ver las directivas de mensajería |
Get-CsUserPolicyAssignment | Saber qué directiva tiene un usuario y de dónde le viene |
New-CsBatchPolicyAssignmentOperation | Asignar una directiva a hasta 5.000 usuarios en un lote |
New-CsGroupPolicyAssignment | Asignar una directiva a un grupo |
Get-CsTenantFederationConfiguration | Ver con qué dominios externos se puede hablar |
Set-CsTenantFederationConfiguration | Permitir o bloquear dominios externos |
Get-CsTeamsClientConfiguration | Ver ajustes generales, como el acceso de invitados |
Get-TeamsApp | Listar las aplicaciones del catálogo de la organización |
Cómo funcionan las directivas de Teams
Las directivas de Teams deciden qué puede hacer cada persona: si graba reuniones, si edita mensajes enviados o quién entra directo a una reunión. Casi todos los problemas con ellas vienen de no conocer cómo se reparten. Según la guía de asignación de directivas de Microsoft, cada usuario recibe una sola directiva de cada tipo, elegida en este orden:
- La asignada directamente al usuario. Gana siempre, sin importar sus grupos.
- La de un grupo al que pertenece. Si está en varios grupos con directivas del mismo tipo, gana la del grupo con mejor rango: el 1 gana al 2.
- La global, llamada Global (Org-wide default), si no tiene ninguna de las anteriores.
Hay dos detalles que explican muchos «no funciona». Primero, la asignación por grupo solo llega a los miembros directos: los integrantes de un grupo anidado dentro de otro no la reciben. Segundo, llega en segundo plano, y en grupos grandes puede tardar.
Por eso, antes de cambiar nada, pregunte a Teams de dónde viene la directiva de esa persona. El escenario de directivas, más abajo, muestra cómo.
Escenarios de Microsoft Teams PowerShell paso a paso
Estos escenarios cubren lo que más se pide en una mesa de servicio. En los ejemplos, contoso es el nombre de la organización: cámbielo por el suyo. Cada bloque supone que ya ejecutó Connect-MicrosoftTeams.
Inventario de equipos con propietarios y miembros
El primer informe que conviene tener es la lista de equipos con sus propietarios y el número de miembros e invitados. Este bloque lo guarda en un CSV que se abre con Excel:
$informe = foreach ($equipo in Get-Team) {
$usuarios = @(Get-TeamUser -GroupId $equipo.GroupId)
[pscustomobject]@{
Equipo = $equipo.DisplayName
Visibilidad = $equipo.Visibility
Archivado = $equipo.Archived
Propietarios = ($usuarios | Where-Object Role -eq 'Owner' | ForEach-Object User) -join '; '
Miembros = @($usuarios | Where-Object Role -eq 'Member').Count
Invitados = @($usuarios | Where-Object Role -eq 'Guest').Count
}
}
$informe | Export-Csv -Path "$env:USERPROFILE\Desktop\equipos-teams.csv" -NoTypeInformation -Encoding UTF8
En una organización con muchos equipos tarda, porque consulta los miembros de cada uno. Déjelo correr y no lo repita a mitad de camino.
Encontrar los equipos sin propietario
Un equipo sin propietario no tiene quién apruebe a los miembros nuevos ni quién lo cierre cuando termina. Ocurre cuando el único propietario se va de la empresa. Con el informe anterior en memoria, basta un filtro:
$informe | Where-Object { -not $_.Propietarios } | Select-Object Equipo, Miembros, Archivado
Para cada equipo de la lista, nombre a un responsable con Add-TeamUser y el rol de propietario:
Add-TeamUser -GroupId 00000000-0000-0000-0000-000000000000 -User ana.gomez@contoso.com -Role Owner
El identificador del equipo, el GroupId, sale en el inventario o con Get-Team -DisplayName "Nombre del equipo". Es el mismo identificador del grupo de Microsoft 365. Conviene que cada equipo tenga al menos dos propietarios, para que la salida de uno no lo deje huérfano; Teams admite hasta 100.
Crear un equipo con sus canales
Crear el equipo de un proyecto nuevo con la misma estructura siempre evita olvidos. Este bloque crea un equipo privado, le añade un canal estándar y uno privado, y suma a dos personas:
$equipo = New-Team -DisplayName "Proyecto Sede Norte" -Description "Obra y compras de la sede norte" -Visibility Private
New-TeamChannel -GroupId $equipo.GroupId -DisplayName "Compras"
New-TeamChannel -GroupId $equipo.GroupId -DisplayName "Dirección" -MembershipType Private -Owner ana.gomez@contoso.com
Add-TeamUser -GroupId $equipo.GroupId -User luis.perez@contoso.com
Add-TeamUser -GroupId $equipo.GroupId -User ana.gomez@contoso.com -Role Owner
Los valores de visibilidad son Public, Private y HiddenMembership. Los canales pueden ser Standard, Private o Shared. Para entrar en un canal privado, la persona tiene que ser antes miembro del equipo, y después se le añade con Add-TeamChannelUser.
Un límite que importa al planear: un equipo admite hasta 1.000 canales, y en esa cuenta entran también los canales borrados.
Añadir a una persona a varios equipos
Cuando alguien entra a un área, suele necesitar varios equipos a la vez. Con una lista basta un bucle:
$equipos = "Proyecto Sede Norte", "Compras", "Comité de obra"
foreach ($nombre in $equipos) {
$equipo = Get-Team -DisplayName $nombre
Add-TeamUser -GroupId $equipo.GroupId -User nuevo.empleado@contoso.com
}
Get-AssociatedTeam -User nuevo.empleado@contoso.com | Select-Object DisplayName
La última línea comprueba en qué equipos quedó. Un aviso: -DisplayName filtra por nombre, y dos equipos pueden llamarse igual. Si el nombre se repite, use el GroupId.
Archivar un equipo terminado, antes que borrarlo
Cuando un proyecto termina, archivar es casi siempre mejor que borrar. El equipo deja de tener actividad, pero su contenido se puede seguir consultando y se puede reactivar:
Set-TeamArchivedState -GroupId 00000000-0000-0000-0000-000000000000 -Archived $true -SetSpoSiteReadOnlyForMembers $true
Get-Team -Archived $true | Select-Object DisplayName, GroupId
Con -SetSpoSiteReadOnlyForMembers $true, los miembros tampoco pueden cambiar los archivos del sitio de SharePoint del equipo. Para reactivarlo, repita la orden con -Archived $false.
Borrar es distinto. Remove-Team elimina el equipo y su grupo de Microsoft 365, con el chat de los canales y los archivos. Según la guía de Microsoft para archivar o eliminar un equipo, un equipo borrado no se restaura directamente: lo que se restaura es su grupo, durante 30 días, y con él vuelve el equipo. Pasado ese plazo, se pierde. Si quiere ver qué más se puede recuperar en Microsoft 365, y qué no, lo explicamos en la guía de backup de Microsoft 365.
Ver qué directiva tiene un usuario y por qué
Este es el escenario que más tiempo ahorra. Cuando alguien dice «a mí no me deja grabar la reunión», esta orden muestra su directiva efectiva de reuniones y de dónde le viene:
Get-CsUserPolicyAssignment -Identity ana.gomez@contoso.com -PolicyType TeamsMeetingPolicy | Select-Object -ExpandProperty PolicySource
La respuesta dice si la directiva le llega por asignación directa o por un grupo, y con qué rango. Si le llega directa, ningún cambio en sus grupos la afectará. En cambio, si no aparece ninguna, rige la global. Para ver qué permite esa directiva:
Get-CsTeamsMeetingPolicy -Identity Global | Select-Object Identity, AllowCloudRecording, AllowTranscription, AutoAdmittedUsers
Asignar una directiva a un grupo o a muchos usuarios
Para que una directiva llegue a un área entera, asígnela a su grupo, con su rango. Las personas que entren después al grupo la recibirán solas:
Grant-CsTeamsMeetingPolicy -Group comercial@contoso.com -PolicyName "Reuniones con grabación" -Rank 1
Según Microsoft, la asignación por grupo se recomienda para grupos de hasta 50.000 personas. Si en cambio tiene una lista concreta, use un lote. Admite hasta 5.000 personas por orden y se procesa en segundo plano:
$personas = Import-Csv -Path "$env:USERPROFILE\Desktop\personas.csv" | ForEach-Object Correo
$lote = New-CsBatchPolicyAssignmentOperation -PolicyType TeamsMeetingPolicy -PolicyName "Reuniones con grabación" -Identity $personas -OperationName "Grabación para ventas"
Get-CsBatchPolicyAssignmentOperation -OperationId $lote | Select-Object OperationName, OverallStatus, CompletedCount, ErrorCount
El archivo personas.csv debe tener una columna llamada Correo. La última línea muestra cómo va el lote: cuántas personas están hechas y cuántas dieron error. Microsoft aconseja no enviar muchos lotes a la vez y esperar a que terminen.
Recuerde el orden de las directivas. Si una persona tiene una directiva asignada directamente, la de su grupo no le llegará. Para quitarle la directa y que herede la del grupo, asígnele $null:
Grant-CsTeamsMeetingPolicy -Identity ana.gomez@contoso.com -PolicyName $null
Revisar con quién puede hablar su organización
De fábrica, Teams permite chatear y reunirse con personas de cualquier otra organización de Microsoft 365. Microsoft lo llama acceso externo. Muchas empresas no lo saben hasta que lo revisan:
Get-CsTenantFederationConfiguration | Select-Object AllowFederatedUsers, AllowedDomains, BlockedDomains, BlockAllSubdomains, AllowTeamsConsumer
Get-CsTeamsClientConfiguration | Select-Object Identity, AllowGuestUser
La primera línea muestra el acceso externo: si está activo, qué dominios se permiten o bloquean y si se puede hablar con cuentas personales de Teams. La segunda muestra si los invitados pueden usar Teams.
Para bloquear un dominio concreto, Microsoft usa un patrón de dominio. Por defecto, bloquear contoso-externo.com no bloquea sus subdominios; para eso existe -BlockAllSubdomains:
$dominio = New-CsEdgeDomainPattern -Domain "dominio-no-deseado.com"
Set-CsTenantFederationConfiguration -BlockedDomains @{Add = $dominio}
Set-CsTenantFederationConfiguration -BlockAllSubdomains $true
Antes de cerrar el acceso externo, hable con las áreas que trabajan con clientes y proveedores. Cerrarlo de golpe corta conversaciones que la empresa necesita.
Revisar las aplicaciones del catálogo
Teams admite aplicaciones de terceros, y conviene saber cuáles publicó la propia organización. Este bloque lista las del catálogo de la empresa:
Get-TeamsApp -DistributionMethod organization | Select-Object DisplayName, Id, ExternalId
Automatizar Microsoft Teams PowerShell sin una persona delante
Un script programado no puede responder a una ventana de inicio de sesión. Para eso, el módulo admite conectarse con una aplicación registrada en Entra ID y un certificado, sin usuario:
Connect-MicrosoftTeams -CertificateThumbprint "3FAAAA1111AAAAAAAAAAA2222AAAAAAAAAAAAAAA" -ApplicationId 00000000-0000-0000-0000-000000000000 -TenantId 11111111-1111-1111-1111-111111111111
Según Microsoft, el certificado debe estar en el almacén de certificados del usuario que ejecuta el script. Además, la aplicación necesita un rol de Entra ID, como el de administrador de Teams, y el permiso de lectura de roles de Microsoft Graph. Trate esa aplicación como una cuenta de administrador más.
Hay una excepción que sorprende: con este tipo de conexión no funciona New-Team. Microsoft lo indica en su guía de autenticación por aplicación. Para crear equipos, use una conexión con usuario.
En el módulo, -CertificateThumbprint es otro nombre del parámetro -Certificate, que también acepta el objeto del certificado. Así lo vimos en la versión 8.0.0.
Recomendaciones para administrar Teams con PowerShell
Estas recomendaciones resumen lo que vimos en las fuentes de Microsoft y en el equipo de prueba:
- Use el rol de administración más acotado que permita hacer la tarea, no el de administrador global.
- Mantenga el módulo al día. Salen versiones cada uno o dos meses, y la documentación describe la vigente.
- Instálelo con
Install-Moduleen su carpeta normal. Si lo copia a mano, déjelo en una ruta corta. - Antes de cambiar una directiva, mire de dónde le viene al usuario con
Get-CsUserPolicyAssignment. - Asigne directivas a grupos con rango, y recuerde que no llegan a los grupos anidados.
- Archive antes de borrar. Un equipo borrado solo vuelve durante 30 días, y a través de su grupo.
- Revise cada mes los equipos sin propietario y los invitados.
- Guarde sus scripts y los CSV que generan. Son la prueba de qué se cambió, cuándo y por qué.
Lo que no probamos
Una guía honesta dice dónde termina su laboratorio:
- No nos conectamos a ninguna organización real. Medimos el módulo 8.0.0 sin instalarlo y validamos cada comando y cada parámetro contra el módulo y contra la referencia oficial de Microsoft.
- Por tanto, las salidas de los comandos con conexión no las vimos en pantalla. Los límites que citamos, como los 5.000 usuarios por lote o los 30 días, son los publicados por Microsoft.
- No probamos la conexión con certificado ni la de Azure Cloud Shell.
- No probamos el módulo en Linux ni en macOS.
Lo que sí medimos lo hicimos en Windows 11, con Windows PowerShell 5.1 y PowerShell 7.6.7, sin permisos de administrador.
Cuándo conviene delegar la administración de Teams
Microsoft Teams PowerShell resuelve en minutos lo que en el panel lleva días. Sin embargo, Teams no se ordena solo. Alguien tiene que revisar los equipos sin propietario, cerrar los de proyectos terminados y mantener las directivas al día.
En KHARONTE, ese trabajo forma parte de la administración de Microsoft 365 de nuestra línea de gestión de plataformas: usuarios, licencias, equipos y accesos. Cada solicitud entra por nuestra mesa de ayuda TI, queda registrada y se resuelve con su trazabilidad.
Si además quiere delegar el correo, los servidores y el soporte de los puestos de trabajo, todo eso entra en nuestros servicios administrados de TI. Para el correo y los archivos, tenemos también las guías de Exchange Online PowerShell y SharePoint Online PowerShell. Puede ver el alcance completo en la página de servicios de TI para empresas.
Preguntas frecuentes sobre Microsoft Teams PowerShell
¿Qué es Microsoft Teams PowerShell?
Es el conjunto de comandos de PowerShell que administra Teams en Microsoft 365. Se instala con el módulo gratuito MicrosoftTeams y se conecta con Connect-MicrosoftTeams.
¿Cómo me conecto a Microsoft Teams con PowerShell?
Instale el módulo con Install-Module -Name MicrosoftTeams -Scope CurrentUser y ejecute Connect-MicrosoftTeams. Se abrirá la ventana de inicio de sesión de Microsoft.
¿Funciona en Windows PowerShell 5.1 o necesito PowerShell 7?
Funciona en los dos. Microsoft pide Windows PowerShell 5.1 con .NET Framework 4.7.2, o PowerShell 7.2 o posterior.
¿Por qué una directiva asignada a un grupo no le llega a una persona?
Porque tiene otra asignada directamente, que siempre gana, o porque está en un grupo anidado, al que no llegan las asignaciones. Compruébelo con Get-CsUserPolicyAssignment.
¿Se puede recuperar un equipo borrado?
Sí, durante 30 días, restaurando su grupo de Microsoft 365. Después se pierde. Por eso conviene archivar antes de borrar.
¿Necesito una licencia especial?
No. El módulo es gratuito. Lo que necesita es una cuenta con un rol de administración de Teams.




