Utilice Get-Mailbox Cmdlet para exportar la lista de buzones en Exchange
Sep 26, 2024
¿Qué es un Cmdlet Get-Mailbox?
El cmdlet Get-Mailbox es un comando clave en la Exchange Management Shell (para Exchange Server) y en el módulo de PowerShell Exchange Online (para Office 365). Se utiliza para recuperar información sobre buzones en un entorno de Exchange. Ya sea que esté tratando con buzones de usuario, buzones vinculados, buzones compartidos o buzones de recursos, con Get-Mailbox los administradores pueden listar todos los buzones dentro de un ámbito especificado, como una base de datos, servidor o unidad organizativa, o recuperar propiedades detalladas para un solo buzón. También puede filtrar los resultados para devolver solo los buzones que cumplan con criterios específicos.
El cmdlet de PowerShell Get-Mailbox admite muchos parámetros que se pueden utilizar para personalizar la información devuelta. Parámetros como -Properties permiten obtener un detalle exhaustivo de los atributos del buzón. La salida de Get-Mailbox puede exportarse fácilmente a formatos CSV o JSON, facilitando la integración con otras herramientas y plataformas. El cmdlet Get-Mailbox también proporciona la flexibilidad de la programación en PowerShell en entornos de Exchange.
Disponibilidad tanto en Exchange local como en servicio basado en la nube
El cmdlet Get-Mailbox de PowerShell está disponible tanto en entornos de Exchange Server locales como en Exchange Online (Office 365), aunque existen diferencias en la implementación y las características disponibles. Se introdujo como parte de Exchange Management Shell en Exchange Server 2007.
Contenido relacionado seleccionado:
Servidor Exchange On-Premises
Get-Mailbox está disponible en Exchange Server 2010, 2013, 2016 y 2019. Get-Mailbox se utiliza a través de Exchange Management Shell (EMS) en Exchange local o mediante PowerShell cargando el módulo de Exchange. Incluye parámetros para filtrar por base de datos, unidad organizativa, tipo de destinatario y más. Proporciona salidas de diversas propiedades de los buzones de correo como el nombre, dirección de correo electrónico y base de datos del buzón.
Exchange Online (Office 365)
Get-Mailbox a través de PowerShell se puede utilizar para Exchange Online, al cual se accede mediante conexiones remotas de PowerShell. Este módulo proporciona capacidades de gestión basadas en la nube y se accede a él de forma remota. Similar al Exchange local, pero puede incluir parámetros adicionales o características optimizadas para el entorno en la nube. La salida incluye propiedades relevantes para la gestión en la nube.
Recomendación para usar el cmdlet Get-EXOMailbox en Exchange Online
El cmdlet Get-EXOMailbox es parte del módulo de PowerShell de Exchange Online y se utiliza para recuperar información sobre los buzones de correo en Exchange Online (parte de Office 365). Este cmdlet es una alternativa a Get-Mailbox con mejoras para Exchange Online. Get-EXOMailbox está optimizado para entornos en la nube y puede ofrecer un mejor rendimiento y características adicionales diseñadas para Office 365. Este cmdlet ofrece opciones de filtrado y consulta más avanzadas que son especialmente útiles en una configuración basada en la nube y es una mejor integración con otros servicios y características de Office 365.
Recomendaciones para usar Get-EXOMailbox
- Cuando trabaje en Exchange Online, utilice Get-EXOMailbox en lugar de Get-Mailbox para un rendimiento optimizado y características específicas de la nube.
- Utilice el parámetro -Filter para recuperar de manera eficiente subconjuntos de buzones de correo basados en criterios específicos, reduciendo la carga y mejorando el rendimiento de la consulta.
- Para organizaciones grandes, utilice -ResultSize Unlimited para asegurarse de capturar todos los buzones relevantes. Tenga en cuenta las implicaciones de rendimiento con conjuntos de datos muy grandes.
- Utilice Get-EXOMailbox en scripts de PowerShell para tareas automatizadas de informes, gestión y mantenimiento en Exchange Online.
Get-Mailbox Cmdlet’s Function
El cmdlet Get-Mailbox en Exchange Server y Exchange Online se utiliza para obtener información detallada sobre los buzones de correo. El cmdlet no modifica ningún dato, su función principal es recopilar y mostrar las propiedades y configuraciones de los buzones, esto incluye datos sobre el tamaño de los buzones, cuotas, el número de elementos, la última vez que se accedió y mucho más. El cmdlet ofrece flexibilidad para enfocarse en buzones específicos, conjuntos de buzones o todos los buzones, dependiendo de los parámetros utilizados.
Propósito
El cmdlet Get-Mailbox recupera información sobre buzones de correo, incluyendo buzones de usuario, buzones compartidos, buzones de recursos (como buzones de sala, compartidos y de equipo), y otros. Proporciona detalles como las propiedades del buzón, ubicación y configuración.
Usos principales
Genere listas de buzones de correo para fines de informes, como la auditoría de tipos de buzones, ubicaciones y atributos. Recupere los detalles necesarios para las tareas de gestión de buzones, como configurar ajustes de buzones o realizar operaciones masivas. Ayude a diagnosticar problemas proporcionando información específica del buzón relacionada con configuraciones, cuotas y más.
Operación
Cuando ejecutas el cmdlet Get-Mailbox, consulta los servicios de directorio de Exchange, Active Directory en entornos locales, o el directorio de Exchange Online en Office 365, para recuperar la información del buzón. El cmdlet obtiene datos de la base de datos del buzón o directorios y los presenta según los parámetros especificados. Esto incluye propiedades como direcciones de correo electrónico, tamaños de buzón y más.
Salida
De forma predeterminada, Get-Mailbox muestra un conjunto de propiedades comunes como DisplayName, PrimarySmtpAddress, Database y Recipient Type. La salida se puede personalizar utilizando Select-Object para mostrar propiedades adicionales o específicas.
Parámetros
Parámetros como -Identity, -Database, -OrganizationalUnit y -Filter te permiten acotar la búsqueda a buzones de correo específicos o conjuntos de buzones basados en criterios como la ubicación de la base de datos, la unidad organizativa o atributos personalizados. -ResultSize te permite controlar el número de resultados devueltos, lo cual es útil para gestionar el rendimiento y centrarse en subconjuntos de datos relevantes. Get-Mailbox admite muchos otros parámetros para más tareas.
Permisos necesarios para ejecutar el Cmdlet Get-Mailbox
Se requieren permisos específicos para ejecutar el cmdlet Get-Mailbox en Exchange Server y Exchange Online. Estos permisos determinan quién puede ejecutar el cmdlet para recuperar información del buzón. Estos permisos suelen asignarse a través del control de acceso basado en roles (RBAC) en Exchange. Estos roles suelen incluir “Gestión de destinatarios”, “Gestión de la organización” o “Gestión de la organización solo visualización”. A continuación, se ofrece una visión detallada de los permisos necesarios para ejecutar el cmdlet Get-Mailbox.
Exchange Server (On-Premises)
En un entorno de Exchange Server local, los permisos suelen otorgarse a través del control de acceso basado en roles (role-based access control). Los roles RBAC pueden asignarse en varios ámbitos, desde toda la organización hasta bases de datos de buzones específicos.
Rol de Gestión de Destinatarios
Para la gestión general de buzones de correo, incluyendo la ejecución de Get-Mailbox, los usuarios suelen agregarse al grupo de roles “Recipient Management”. Este grupo de roles incluye roles que permiten crear, gestionar y eliminar buzones de correo, entre otras tareas relacionadas con los destinatarios.
Rol de Gestión de la Organización
Para privilegios administrativos de alto nivel, incluyendo la capacidad de ejecutar todos los cmdlets relacionados con buzones, se puede utilizar el grupo de roles “Organization Management”, que otorga permisos en toda la organización de Exchange.
Rol de Gestión de Organización Solo Lectura
Este rol proporciona acceso de solo lectura a la configuración organizacional, incluyendo la capacidad de ejecutar Get-Mailbox pero sin la posibilidad de modificar la configuración.
Roles RBAC personalizados
También puede crear roles personalizados que incluyan específicamente el cmdlet Get-Mailbox, personalizando los permisos para necesidades específicas sin otorgar un acceso más amplio de lo necesario.
Exchange Online (Office 365)
En Exchange Online para Get-Mailbox, los permisos se gestionan de manera similar a través de RBAC, parte de la estructura general de permisos de Office 365, todos los roles mencionados anteriormente para el servidor Exchange local también están disponibles, pero hay algunos roles de alto nivel mencionados a continuación, que también tienen permisos para ejecutar el cmdlet Get-Mailbox.
Administrador Global
Los usuarios con el rol de Administrador Global tienen permisos para ejecutar Get-Mailbox junto con otros cmdlets administrativos en toda la organización de Exchange Online.
Rol de Administrador de Exchange
Específico para Exchange Online, el rol de Exchange Administrator proporciona los permisos necesarios para gestionar la configuración de Exchange, la administración de objetos, incluyendo la ejecución de Get-Mailbox.
Roles de Administrador Personalizados
Office 365 permite la creación de roles de administrador personalizados, como Exchange on-premises. Un rol personalizado puede incluir específicamente el cmdlet Get-Mailbox, junto con cualquier otro cmdlet requerido, ofreciendo un control preciso sobre los permisos.
Sintaxis para el Cmdlet Get-Mailbox
Sintaxis básica
El uso más sencillo del cmdlet Get-Mailbox es obtener todas las bandejas de correo utilizando PowerShell. El cmdlet devuelve una lista resumida de todas las bandejas de correo cuando se utiliza sin ningún parámetro, incluyendo atributos principales como DisplayName, Alias, ServerName, ProhibitSendQuota y otros dependiendo del entorno.
Get-Mailbox
Sintaxis general
La estructura general del Get-Mailbox con varios parámetros es la siguiente.
Get-Mailbox [-Identity <MailboxIdParameter>] [-Database <DatabaseIdParameter>] [-OrganizationalUnit <OrganizationalUnitIdParameter>] [-RecipientTypeDetails <RecipientTypeDetails>] [-Filter <FilterExpression>] [-ResultSize <Unlimited | Integer>] [-DomainController <Fqdn>] [-ReadFromDomainController] [-Anr <String>] [-IncludeSoftDeletedMailboxes] [-MessageTrackingLogPath <String>] [-ResultSize <Unlimited | Integer>]
A continuación se muestra la sintaxis general con un parámetro
Get-Mailbox [-Parameter <value>]
Contenido relacionado seleccionado:
Parámetros de Get-Mailbox de uso común
Los siguientes son parámetros de Get-Mailbox comúnmente utilizados:
Get-Mialbox Parámetros | Sintaxis |
|---|---|
|
-Parámetro de Identity |
Get-Mailbox -Identity “BarbaraCole” |
|
-Filter Parameter |
Get-Mailbox -Filter {Name -like “Bar*”} |
|
-Parámetro de base de datos |
Get-Mailbox -Database “ Mailbox Database 1767124038″ |
|
-Parámetro OrganizationalUnit |
Get-Mailbox -OrganizationalUnit “OU=Versacorp,DC=MILKYWAY,DC=LOCAL” |
|
-Parámetro de Arbitraje |
Get-Mailbox -Arbitration |
|
-AuditLog Paramter |
Get-Mailbox -AuditLog |
|
-RecipientTypeDetails Parameter |
Get-Mailbox -RecipientTypeDetails SharedMailbox |
|
-ResultSize Parameter |
Get-Mailbox -ResultSize 10 |
|
-SoftDeletedMailbox Parameter |
Get-Mailbox -SoftDeletedMailbox |
|
-Anr |
Get-Mailbox -Anr “Adita” |
|
-SortBy |
Get-Mailbox -SortBy Name |
Veamos cada uno de ellos
-Parámetro de Identity
El parámetro -Identity especifica el buzón de correo que se va a recuperar. Puede aceptar varias formas de identificadores como el GUID del buzón, Nombre Distinguido (DN), Dominio\Nombre de usuario, Nombre Principal de Usuario (UPN), DN de Exchange Antiguo, dirección SMTP o Alias. Este parámetro se puede utilizar para acceder rápidamente a información sobre un buzón específico.
Get-Mailbox -Identity "BarbaraCole"
-Filter Parameter
El parámetro -Filter permite consultas más complejas. Se utiliza para definir condiciones que identifican con precisión el conjunto exacto de buzones de correo que le interesan, basándose en atributos como el departamento, atributos personalizados o el tamaño del buzón.
Get-Mailbox -Filter {Name -like "Bar*"}
Get-Mailbox -Filter {DisplayName -like "Bar*"}
Get-Mailbox -Filter {CustomAttribute1 -like 'TeamA'}
-Parámetro de base de datos
El parámetro -Database filtra los buzones de correo en función de la base de datos en la que están almacenados. Es útil para operaciones que se dirigen a bases de datos específicas, como durante las migraciones o para informes específicos de la base de datos.
Get-Mailbox -Database " Mailbox Database 1767124038"
-OrganizationalUnit Parameter
El parámetro -OrganizationalUnit limita la búsqueda a buzones de correo ubicados dentro de una unidad organizativa específica de Active Directory Esto es particularmente útil en organizaciones grandes con una jerarquía de OU estructurada.
Get-Mailbox -OrganizationalUnit "OU=Versacorp,DC=MILKYWAY,DC=LOCAL"
-Parámetro de Arbitraje
El parámetro de conmutador -Arbitration recupera buzones de arbitraje, que son buzones de sistema utilizados para almacenar datos organizativos, como registros de auditoría de administrador, información de eDiscovery, y otras tareas relacionadas con el sistema.
Get-Mailbox -Arbitration
-AuditLog Parámetro
El parámetro de conmutación -AuditLog se utiliza para recuperar buzones de registro de auditoría, que contienen registros de auditoría de las acciones realizadas por administradores y usuarios. Esto es importante para fines de cumplimiento y monitoreo.
Get-Mailbox -AuditLog
-RecipientTypeDetails Parameter
Este parámetro permite filtrar los buzones de correo en función de su tipo, como UserMailbox, SharedMailbox, RoomMailbox o EquipmentMailbox, entre otros. Facilita operaciones dirigidas específicamente a la gestión de tipos particulares de buzones de correo.
Get-Mailbox -RecipientTypeDetails SharedMailbox
-ResultSize Parameter
El parámetro -ResultSize limita la cantidad de resultados devueltos por el cmdlet. Por defecto, Get-Mailbox recupera hasta 1000 buzones. Establecer este parámetro en “Ilimitado” permite obtener detalles de todos los buzones sin truncamiento o configurarlo a un número menor, por ejemplo, 50, traerá resultados de acuerdo al valor proporcionado.
Get-Mailbox -ResultSize 10
-SoftDeletedMailbox Parameter
Recupere buzones que han sido eliminados de forma suave pero no removidos permanentemente, este parámetro solo está disponible para Exchange Online (Office365).
Get-Mailbox -SoftDeletedMailbox
-Anr
El parámetro -Anr (Resolución de Nombres Ambiguos) se utiliza en conjunto con el parámetro -Identity para buscar un buzón de correo donde la cadena especificada sea cercana o similar a la identidad real del buzón. Es útil cuando no se conoce el nombre exacto o alias del buzón.
Get-Mailbox -Anr "Adita"
-SortBy
Este parámetro especifica la propiedad por la cual se deben ordenar los resultados. Por ejemplo, utilizando -SortBy DisplayName, organiza la lista de buzones devuelta alfabéticamente por el nombre para mostrar de los buzones.
Get-Mailbox -SortBy Name
Parámetros comunes
Como otros cmdlets en PowerShell, Get-Mailbox soporta parámetros comunes como -Verbose, -Debug, -ErrorAction, -ErrorVariable, -WarningAction, -WarningVariable, -OutBuffer, -PipelineVariable y -OutVariable. Estos parámetros pueden ayudar a controlar los mensajes del cmdlet, manejar errores y advertencias, y gestionar la salida en scripts y funciones.
Otros parámetros disponibles para cmdlet
-Archivo: Devuelve buzones con archivos habilitados
-AuxAuditLog: Devuelve los buzones de correo de registros de auditoría auxiliares
-Credential: Especifica el nombre de usuario y la contraseña
-DomainController: Especifica el controlador de dominio
-GroupMailbox: Devuelve solo los grupos de Microsoft 365
-IgnoreDefaultScope: Ignora el ámbito del destinatario predeterminado
-InactiveMailboxOnly: Devuelve solo buzones de correo inactivos
-IncludeInactiveMailbox: Incluye buzones de correo inactivos
-MailboxPlan: Filtra los resultados por plan de buzón
-Migración: Devuelve buzones de migración
-Monitoreo: Devuelve buzones de monitoreo
-PublicFolder: Devuelve buzones de correo de carpetas públicas
-ReadFromDomainController: Lee información del controlador de dominio
-RemoteArchive: Devuelve buzones de correo de archivo remoto
-Server: Filtra los resultados por servidor de Exchange
Contenido relacionado seleccionado:
Combinando parámetros
Puede combinar múltiples parámetros para refinar su consulta. A continuación se presentan algunos ejemplos.
- El cmdlet siguiente recupera todos los buzones de usuario en una base de datos específica con el tipo de destinatario como “usuario”.
Get-Mailbox -Database "Test3" -RecipientTypeDetails UserMailbox
- El siguiente cmdlet obtendrá todas las bandejas de correo con un atributo personalizado específico, mostrando todos los resultados utilizando -ResultSize.
Get-Mailbox -Filter {CustomAttribute1 -eq “TeamA”} -ResultSize Unlimited
Al canalizar la salida del cmdlet Get-Mailbox en el cmdlet Select-Object, los cmdlets de ejemplo a continuación recuperan una lista personalizada que muestra el nombre para mostrar, la dirección SMTP principal y la cuota de envío para cada buzón de una OU específica. Este formato es particularmente útil para generar informes o auditorías.
- Recupere buzones de correo en una OU específica y muestre solo sus nombres para mostrar y direcciones de correo electrónico.
Get-Mailbox -OrganizationalUnit "OU=Versacorp,DC=MILKYWAY,DC=LOCAL" | Select-Object DisplayName,PrimarySmtpAddress
- Listado de todos los buzones con propiedades detalladas
Get-Mailbox | Select-Object DisplayName, PrimarySmtpAddress, ProhibitSendQuota
- El ejemplo más complejo que se muestra a continuación combina varios cmdlets para identificar buzones que no han sido accedidos en los últimos 90 días.
Get-Mailbox -ResultSize Unlimited | Get-MailboxStatistics | Where-Object {$_.LastLogonTime -lt (Get-Date).AddDays(-90)}
Casos de uso y escenarios
Get-Mailbox combinado con sus parámetros, permite una amplia gama de usos y escenarios que pueden facilitar la gestión eficaz del sistema de correo electrónico, el cumplimiento, la generación de informes y la resolución de problemas. A continuación, se presentan algunos casos de uso y escenarios.
Auditoría y reportes de buzones de correo
Generando informes sobre tamaños de buzones, cuotas y uso para garantizar el cumplimiento de las políticas organizacionales. El cmdlet a continuación no produce ningún resultado, puede ir a la ubicación proporcionada en el cmdlet Export-CSV y abrir el archivo CSV, se verá como en la captura de pantalla a continuación.
Get-Mailbox -ResultSize Unlimited | Get-MailboxStatistics | Select DisplayName, TotalItemSize, ItemCount, StorageLimitStatus | Export-Csv -Path "MailboxReport.csv"
Identificación de buzones inactivos o huérfanos
Buscar buzones de correo a los que no se ha accedido durante un período específico, lo que podría indicar que se trata de buzones inactivos o huérfanos. Esta situación ayuda a limpiar el sistema de correo, lo que podría liberar recursos y licencias al identificar los buzones que ya no se utilizan.
Get-Mailbox -ResultSize Unlimited | Get-MailboxStatistics | Where-Object {$_.LastLogonTime -lt (Get-Date).AddMonths(-6)} | Select DisplayName, LastLogonTime
Gestión de configuraciones de buzones
Listado de buzones con determinadas configuraciones, como el reenvío habilitado o funciones específicas del buzón.
Get-Mailbox -ResultSize Unlimited | Where {$_.ForwardingAddress -ne $null} | Select DisplayName, ForwardingAddress
Gestión masiva
Realizar operaciones masivas, como mover buzones o aplicar configuraciones de buzones a varios buzones a la vez. Mover todos los buzones de una base de datos a otra como parte de una tarea de mantenimiento.
Get-Mailbox -Database "DB01" | New-MoveRequest -TargetDatabase "DB05"
Operaciones masivas y delegaciones
Buscar todos los buzones compartidos o delegados y revisar sus usuarios delegados con fines de auditoría.
Get-Mailbox -RecipientTypeDetails SharedMailbox -Database “Test3” | Get-MailboxPermission | Where {$_.AccessRights -contains "FullAccess"}
Establecer cuotas para el buzón
Si desea establecer cuotas de envío y recepción según sus necesidades, el siguiente cmdlet le permitirá establecer una cuota de 5 GB, aunque puede utilizar el valor que desee.
Get-Mailbox -Identity "JackRobert" | Set-Mailbox -ProhibitSendReceiveQuota "5GB"
El cmdlet anterior no generará ningún resultado, pero establecerá el valor. Puede utilizar el cmdlet siguiente para comprobar el resultado deseado que ha establecido con el cmdlet anterior.
Get-Mailbox -Identity "JackRobert" | Select prohibitsendreceivequota
Solución de problemas
Diagnostique y solucione problemas relacionados con los buzones de correo, como identificar los buzones que han superado las cuotas. Identifique los buzones que han superado sus cuotas de envío para abordar posibles problemas de rendimiento.
Get-Mailbox -ResultSize Unlimited | Where-Object { $_.ProhibitSendQuota -ne $null -and $_.ProhibitSendQuota -lt 5GB } | Select-Object DisplayName,PrimarySmtpAddress,ProhibitSendQuota
Administración de unidades organizativas
Administre los buzones de correo dentro de una unidad organizativa (OU) específica, como aplicar ajustes o configuraciones específicos. Recupere y aplique un cambio de configuración a todos los buzones de correo de la OU «RR. HH.».
Get-Mailbox -OrganizationalUnit "OU=Test,DC=MILKYWAY,DC=LOCAL " | Set-Mailbox -MaxSendSize 50MB
El cmdlet anterior no producirá ningún resultado, pero asignará el valor del tamaño máximo de envío de mensajes para todos los usuarios de la unidad organizativa especificada. Utilice el cmdlet siguiente para confirmarlo.
Get-Mailbox -OrganizationalUnit "OU=Test,DC=MILKYWAY,DC=LOCAL " | Select MaxSendSize
Acceso delegado
Delegue el acceso a los buzones de correo con fines administrativos o de soporte técnico. Conceda permisos de acceso completo a un buzón de correo de soporte técnico para todos los buzones de correo de una base de datos de buzones específica.
Get-Mailbox -Database “Test3” | Add-MailboxPermission -User "administrator@milkyway.local" -AccessRights FullAccess
Comprobación de la configuración de la cuota del buzón
Es importante comprobar la configuración de la cuota del buzón, ya que ayuda a garantizar que los usuarios no superen los límites de almacenamiento establecidos por la organización, lo que podría afectar al funcionamiento del correo electrónico.
Descripción general de la cuota del buzón
Las cuotas de los buzones se utilizan para limitar la cantidad de espacio de almacenamiento que puede utilizar un buzón. Estas cuotas incluyen lo siguiente.
- Cuota de advertencia: el umbral en el que se advierte a los usuarios de que su buzón se está acercando al límite de almacenamiento.
- Cuota de prohibición de envío: el umbral en el que se impide a los usuarios enviar nuevos mensajes.
- Cuota de prohibición de envío y recepción: umbral en el que se impide a los usuarios enviar o recibir nuevos mensajes.
Para comprobar la configuración de la cuota de un buzón específico, puede utilizar el cmdlet Get-Mailbox seguido de la identidad del buzón. Esto devolverá varias propiedades del buzón, incluida la configuración de la cuota.
Get-Mailbox -Identity "BarbaraCole" | Format-List IssueWarningQuota, ProhibitSendQuota, ProhibitSendReceiveQuota, UsedDatabaseQuotaDefaults
Si necesita revisar la configuración de cuota en varios o todos los buzones de correo de su entorno, puede utilizar el cmdlet Get-Mailbox sin especificar una identidad y generar las propiedades de cuota relevantes, y exportar los datos a un archivo CSV, lo que facilita el análisis y la generación de informes sobre las configuraciones de cuota.
Get-Mailbox -ResultSize Unlimited -Database “Test3” | Select-Object DisplayName,ProhibitSendQuota,ProhibitSendReceiveQuota,IssueWarningQuota
Ejemplo 1: Devolver una lista resumida de todos los buzones de correo.
Para devolver una lista resumida de todos los buzones de correo en Exchange Online o Exchange Server mediante PowerShell, utilice el siguiente cmdlet.
El comando siguiente generará una tabla en la consola de PowerShell con un resumen de todos los buzones de correo, incluyendo sus nombres para mostrar, alias, UPN, fechas de creación y direcciones de correo electrónico principales. Este resumen proporciona una visión general rápida, útil para informes, auditorías o simplemente para obtener información sobre los buzones de correo actualmente establecidos en su entorno Exchange.
Get-Mailbox -ResultSize Unlimited | Select-Object DisplayName, Alias, UserPrincipalName, WhenCreated, PrimarySmtpAddress | Format-Table -AutoSize
El siguiente cmdlet utilizará algunas propiedades más, por ejemplo, Database, ProhibitSendQuota, ProhibitSendReceiveQuota, IssueWarningQuota, junto con el nombre para mostrar y la dirección SMTP principal.
Get-Mailbox -ResultSize Unlimited | Select-Object DisplayName,PrimarySmtpAddress,Database,ProhibitSendQuota,ProhibitSendReceiveQuota,IssueWarningQuota | Format-Table -Autosize
Ejemplo 2: devolver una lista resumida de buzones de correo archivados en una base de datos específica
Para devolver una lista resumida de buzones de correo archivados ubicados en una base de datos específica mediante PowerShell en Exchange Online o Exchange Server, puede utilizar una combinación de los cmdlets «Get-Mailbox» y «Get-MailboxStatistics». Esta combinación le permite filtrar los buzones de correo por su base de datos de alojamiento y, a continuación, comprobar si cada uno de ellos tiene un archivo. A continuación se explica cómo puede hacerlo.
Get-Mailbox -Database "Test3" -Archive | Get-MailboxStatistics -Archive | Select-Object DisplayName, TotalItemSize, ItemCount | Format-Table -AutoSize
Handpicked related content:
Combinación de Get-Mailbox con otros cmdlets (Get-Member, Select-Object, Format-List)
El cmdlet Get-Member se utiliza para inspeccionar las propiedades y métodos de los objetos devueltos por Get-Mailbox. Esto resulta especialmente útil para descubrir qué propiedades están disponibles para su selección o formato.
Get-Member
The Get-Member cmdlet is used to inspect the properties and methods of objects returned by Get-Mailbox. This is particularly useful for discovering which properties are available for selection or formatting.
Get-Mailbox -Identity "BarbaraCole@milkyway.local" | Get-Member
Select-Object
El cmdlet Select-Object le permite especificar qué propiedades desea incluir en la salida. Esto resulta útil para crear una vista personalizada de la información del buzón.
Get-Mailbox -ResultSize Unlimited | Select-Object DisplayName, PrimarySmtpAddress,Database
Format-List
El cmdlet Format-List formatea la salida como una lista, mostrando todas las propiedades y sus valores. Esto resulta útil para obtener una vista detallada de las propiedades de un objeto de buzón.
Get-Mailbox -Identity "BarbaraCole@milkyway.local" | Format-List DisplayName, PrimarySmtpAddress, ProhibitSendQuota
Operaciones masivas con Get-Mailbox y Set-Mailbox
Desea actualizar la configuración de varios buzones, como establecer una cuota específica para un buzón o habilitar/deshabilitar el archivado.
El comando siguiente busca todos los buzones de correo en «Test3» y establece su configuración de cuota. Actualiza ProhibitSendQuota, ProhibitSendReceiveQuota e IssueWarningQuota para cada buzón de correo.
Get-Mailbox -ResultSize Unlimited | Where-Object { $_.Database -eq "Test3" } | Set-Mailbox -ProhibitSendQuota 5GB -ProhibitSendReceiveQuota 6GB -IssueWarningQuota 4GB
Uso de filtros y clasificación de resultados
Cuando se trabaja con grandes conjuntos de información, puede reducir el conjunto de datos a lo que necesita exactamente, y la clasificación ayuda a organizar la salida para un mejor análisis o generación de informes. Los siguientes cmdlets muestran cómo utilizar los mecanismos de filtrado y clasificación con Get-Mailbox.
Uso de filtros en Get-Mailbox
Los cmdlets de filtrado le permiten especificar criterios para incluir solo los objetos que coincidan con esos criterios en el resultado del comando. Puede aplicar filtros directamente en los cmdlets que admiten el parámetro -Filter o utilizar el cmdlet «Where-Object» para escenarios de filtrado más complejos o no compatibles.
Get-Mailbox -ResultSize Unlimited | Where-Object {$_.CustomAttribute1 -eq "TeamA" -and $_.DisplayName -like "Barb*"}
Sorting Results with Get-Mailbox
Sorting helps in organizing your data in a meaningful order, making it easier to read and analyze. You can use the “Sort-Object” cmdlet for sorting purposes. This command retrieves all mailboxes and sorts them alphabetically by their display name.
Get-Mailbox -ResultSize 10 | Sort-Object DisplayName
Exportar resultados a CSV
Para exportar los resultados a un archivo CSV, PowerShell ofrece el cmdlet Export-Csv, que toma la entrada del pipeline y la escribe en un archivo CSV especificado.
Por ejemplo, si deseas exportar una lista de buzones de Exchange junto con sus tamaños y detalles de uso, puedes usar el siguiente cmdlet.
Debes especificar la ruta y el nombre de archivo para tu CSV mediante el parámetro -Path.
Get-Mailbox -ResultSize Unlimited | Get-MailboxStatistics | Select-Object DisplayName, TotalItemSize, ItemCount | Export-Csv -Path "C:\Exports\MailboxDetails.csv" -NoTypeInformation
Agrupar y dar formato a los resultados
Agrupar y dar formato a los resultados mejora significativamente la legibilidad de la salida de datos. PowerShell ofrece cmdlets como Group-Object, Format-Table, Format-List, entre otros, que pueden usarse con este fin.
Agrupar resultados
El cmdlet Group-Object sirve para categorizar objetos según valores de propiedades. Esto puede ser útil para agrupar buzones por atributos como el departamento o atributos personalizados.
Get-Mailbox -ResultSize Unlimited | Group-Object -Property CustomAttribute1
Dar formato a los resultados
Después de agrupar los datos o al presentar cualquier información, un formato adecuado mejora la comprensión de la salida.
Format-Table (abreviado ft) muestra los datos en formato de tabla, ideal cuando deseas ver los resultados en columnas.
Puedes especificar las propiedades a mostrar e incluso controlar el ancho de las columnas.
Get-Mailbox -Identity "BarbaraCole@milkyway.local" | Format-Table DisplayName,UserPrincipalName,WhenCreated,PrimarySmtpAddress,database -AutoSize
Uso de “Format-List”
Format-List (abreviado fl) muestra cada propiedad de un objeto en una nueva línea, lo que lo hace adecuado para ver en detalle pocos objetos o cuando estos tienen muchas propiedades que no cabrían bien en una tabla.
Get-Mailbox -Identity "BarbaraCole" | Format-List DisplayName, PrimarySmtpAddress, EmailAddresses
Diferencias en el comportamiento del cmdlet en Exchange Online
El cmdlet Get-Mailbox se comporta de manera ligeramente diferente en Exchange Online comparado con Exchange local (on-premises).
Estas diferencias se deben principalmente a la arquitectura basada en la nube de Exchange Online y a su entorno multiinquilino (multi-tenant), lo cual afecta cómo los administradores interactúan con los buzones y el alcance de los cmdlets. Algunos puntos clave:
- En Exchange Online, las operaciones del cmdlet pueden estar sujetas a limitaciones de rendimiento (throttling) para mantener el rendimiento general del servicio. Esto puede hacer que algunas operaciones tarden más o requieran procesamiento por lotes.
- Exchange Online incluye más tipos de destinatarios y propiedades para abarcar los distintos servicios de Office 365. Puedes encontrar tipos de destinatarios que no existen en Exchange local.
- Algunas propiedades disponibles en Exchange local no están presentes o no son accesibles en Exchange Online, debido a la naturaleza del entorno hospedado. Los buzones en la nube pueden incluir propiedades adicionales, como información de licencias o planes de buzón.
- La salida predeterminada en Exchange Online difiere, mostrando información más relevante para la administración en la nube.
- Debido a la arquitectura multiinquilino, el alcance de Get-Mailbox está limitado a los buzones de la organización. En un entorno híbrido, para administrar buzones locales, se debe usar Exchange Management Shell local.
- Exchange Online se integra estrechamente con otros servicios de Office 365, ofreciendo funciones avanzadas de seguridad y cumplimiento (como litigation hold, eDiscovery y Advanced Threat Protection).
Handpicked related content:
Uso de Get-EXOMailbox para un mejor rendimiento
Get-EXOMailbox es un cmdlet diseñado para Exchange Online, que ofrece mejor rendimiento y funciones optimizadas para entornos en la nube, comparado con el clásico Get-Mailbox.
Está optimizado para una ejecución más rápida en conexiones remotas y requiere autenticación moderna, que puede incluir autenticación multifactor (MFA), dependiendo de la configuración.
Connect-ExchangeOnline -UserPrincipalName administrator@milkyway.com
Ejemplos comunes:
Get-EXOMailbox -ResultSize Unlimited
Filtrar por tipo de destinatario (Recipient Type).
Get-EXOMailbox -RecipientTypeDetails SharedMailbox | Format-Table -Autosize
Filtrar por estado de archivo (Archive Status).
Get-EXOMailbox -Filter { ArchiveStatus -eq "Active" } Format-Table -Autosize
El archivado en Office 365 es una función premium. He utilizado ArchiveStatus to None para mostrar el resultado como se muestra a continuación. El cmdlet anterior funcionará si hay buzones con el archivado habilitado.
Seleccionar propiedades específicas.
Get-EXOMailbox -ResultSize Unlimited | Select-Object DisplayName,PrimarySmtpAddress,UserPrincipalName
Ordenar por nombre para mostrar (Display Name).
Get-EXOMailbox -ResultSize Unlimited | Select-Object DisplayName,UserPrincipalName | Sort-Object DisplayName
Parámetros exclusivos de Get-Mailbox en Exchange Online
El cmdlet Get-Mailbox incluye parámetros que son exclusivos de Exchange Online o que tienen relevancia en un entorno alojado en la nube en comparación con una configuración de Exchange Server local. Estos parámetros exclusivos proporcionan características únicas para la administración de buzones en la nube, como el manejo de licencias, la lista de buzones inactivos o la recuperación de buzones eliminados temporalmente.
InactiveMailboxOnly
Limita los resultados únicamente a buzones inactivos. Un buzón se considera inactivo si fue eliminado estando bajo litigation hold o in-place hold.
MailboxPlan
Filtra los buzones asociados con un plan de buzón específico. Útil en organizaciones con distintos planes por departamento o rol.
IncludeInactiveMailbox
Incluye buzones inactivos (usuarios eliminados pero retenidos para fines de cumplimiento o eDiscovery).
SoftDeletedMailbox
Incluye buzones que han sido eliminados de manera temporal (soft deleted), permitiendo su recuperación durante un tiempo.
Mejores prácticas con Get-Mailbox
Seguir buenas prácticas al usar Get-Mailbox garantiza un rendimiento óptimo, seguridad y una mejor administración.
Limita el alcance de tus consultas
Utilice filtros para limitar los resultados solo a los buzones que le interesan. Esto reduce la carga en su sistema y le permite obtener la información más rápidamente. Al ejecutar «Get-Mailbox», especialmente en entornos grandes, intente limitar el alcance del comando a los buzones necesarios. Utilice parámetros como «-RecipientTypeDetails» o «-OrganizationalUnit» para limitar los resultados y reducir la carga en su servidor Exchange.
Usa filtrado del lado del servidor
Siempre que sea posible, utilice parámetros de cmdlet que realicen el filtrado en el lado del servidor en lugar de traer todos los objetos a la memoria y filtrarlos en el lado del cliente con «Where-Object». Esto mejora el rendimiento y la eficiencia. Aproveche el parámetro «-Filter» para realizar el filtrado en el lado del servidor. Este enfoque es más eficiente y reduce la cantidad de datos transmitidos a través de la red.
Controla el tamaño de los resultados
Ten cuidado con el parámetro «-ResultSize Unlimited», especialmente en entornos grandes. Aunque es necesario para operaciones complejas, puede provocar problemas de rendimiento. Considera la posibilidad de dividir las operaciones grandes en partes más pequeñas.
Recupera solo las propiedades necesarias
De forma predeterminada, Get-Mailbox recupera muchas propiedades para cada buzón, lo que puede no ser siempre necesario. Utilice el parámetro «-Properties» para especificar solo las propiedades que necesita, o utilice «Select-Object» para reducir los resultados. Esto puede mejorar significativamente el rendimiento.
Usa comodines con cuidado
Cuando utilices comodines (*) en los filtros, ten en cuenta que pueden provocar problemas de rendimiento si se utilizan de forma excesiva o ineficaz. Coloca los comodines con cuidado en tus consultas para garantizar que sean lo más eficaces posible.
Combina con otros cmdlets de forma eficiente
A menudo, «Get-Mailbox» se utiliza junto con otros cmdlets para tareas como modificaciones del buzón o informes. Al canalizar «Get-Mailbox» a otros cmdlets, asegúrese de que el comando «Get-Mailbox» inicial sea lo más específico posible para evitar un procesamiento innecesario.
Comprende RecipientTypeDetails
Este parámetro es increíblemente útil para seleccionar tipos específicos de buzones de correo (por ejemplo, UserMailbox, SharedMailbox, etc.). Comprender y utilizar este parámetro de forma eficaz puede ayudar a ejecutar operaciones más precisas.
Seguridad y cumplimiento
Cuando ejecute scripts o comandos «Get-Mailbox» que puedan exponer información confidencial, asegúrese de cumplir con las políticas de seguridad de su organización. Limite el acceso a estos scripts y a sus resultados únicamente al personal autorizado.
Prueba y valida tus scripts
Antes de ejecutar un script que realice cambios basados en la salida de «Get-Mailbox», especialmente en un entorno de producción, pruebe exhaustivamente el script en un entorno que no sea de producción. Valide la selección de buzones de correo y los cambios previstos para evitar impactos no deseados.
Revisa y actualiza tus scripts regularmente
A medida que evoluciona su entorno Exchange, también deben hacerlo sus scripts y comandos. Revíselos y actualícelos periódicamente para asegurarse de que utilizan los métodos más eficientes y se ajustan a las mejores prácticas actuales.
Mantente actualizado
Asegúrese de que su sesión o módulo de PowerShell para Exchange esté actualizado. Microsoft actualiza periódicamente los cmdlets de PowerShell para Exchange Online, introduciendo nuevas características y mejoras que pueden optimizar sus capacidades de scripting.
Handpicked related content:
Solución de problemas comunes con Get-Mailbox
Es posible que se encuentre con varios problemas o comportamientos inesperados al trabajar con el cmdlet Get-Mailbox. A continuación se indican algunos problemas comunes, junto con los pasos para solucionarlos y las soluciones para resolverlos de forma eficaz.
Cmdlet no reconocido
Es posible que reciba un mensaje de error indicando que «Get-Mailbox» no se reconoce como el nombre de un cmdlet, función, archivo de script o programa operativo.
Pasos para la resolución de problemas
- Asegúrese de que está ejecutando el cmdlet en Exchange Management Shell (para Exchange Server) o de que se ha conectado a Exchange Online PowerShell mediante «Connect-ExchangeOnline» (para Exchange Online).
- For Exchange Online, ensure the Exchange Online PowerShell Module is installed and up to date.
- Check your PowerShell session, you might be in a session that does not load the Exchange cmdlets by default.
Permisos insuficientes
Está conectado a Exchange Online o Exchange Server, pero recibe errores relacionados con los permisos al intentar ejecutar «Get-Mailbox».
Troubleshooting Steps
- Compruebe que la cuenta que está utilizando tiene los permisos necesarios (por ejemplo, la función de administrador de Exchange para Exchange Online o las funciones RBAC adecuadas en Exchange Server).
- En Exchange Online, asegúrese de que tiene configurada correctamente la autenticación multifactor (MFA) si su cuenta lo requiere.
- En Exchange Server, compruebe que la cuenta tiene acceso explícito para utilizar «Get-Mailbox» o que se ha añadido a un rol que permite la operación, por ejemplo, el rol de administración de destinatarios.
Resultados incompletos o inesperados.
El cmdlet «Get-Mailbox» se ejecuta sin errores, pero devuelve resultados incompletos o inesperados.
Pasos para solucionar el problema.
- Utilice el parámetro «-ResultSize» para asegurarse de que se consultan todos los buzones de correo esperados. Es posible que el valor predeterminado no devuelva todos los buzones de correo.
- Refine la consulta con el parámetro «-Filter» para asegurarse de que refleja con precisión los criterios que desea aplicar.
- Compruebe si hay alguna opción de filtrado del lado del servidor o del lado del cliente que pueda estar limitando los resultados.
- En Exchange Online, las directivas de limitación de ancho de banda pueden retrasar en ocasiones la ejecución de comandos; considere volver a intentarlo tras un breve intervalo.
Problemas de rendimiento
El cmdlet tarda mucho tiempo en ejecutarse, especialmente en entornos con un gran número de buzones.
Pasos para la resolución de problemas
- Limite el alcance de la consulta utilizando «-ResultSize», «-Filter» u otros parámetros específicos como «-OrganizationalUnit» para reducir los resultados y mejorar el rendimiento.
- Considere la posibilidad de dividir la tarea en lotes más pequeños si está procesando un gran número de buzones de correo.
- En el caso de Exchange Online, asegúrese de que está utilizando la última versión del módulo de administración de Exchange Online, que está optimizado para grandes conjuntos de datos.
Problemas de conectividad
Experimenta problemas de conectividad al intentar utilizar «Get-Mailbox» en Exchange Online.
Pasos para la resolución de problemas
- Asegúrese de que su conexión a Internet sea estable.
- Confirme que no haya incidentes de servicio en curso que afecten a Exchange Online consultando el panel de estado del servicio de Office 365.
- Restablezca su sesión de PowerShell en Exchange Online utilizando «Connect-ExchangeOnline», ya que los tiempos de espera de la sesión o los cambios en la red pueden interrumpir la conectividad.
Restricciones de la directiva de ejecución de scripts
Se producen restricciones relacionadas con la directiva de ejecución de scripts de PowerShell al ejecutar scripts que incluyen el cmdlet «Get-Mailbox».
Pasos para la resolución de problemas
- Utilice «Get-ExecutionPolicy» para comprobar su política de ejecución actual de PowerShell.
- Si es necesario, ajuste la política utilizando «Set-ExecutionPolicy» con un nivel adecuado (por ejemplo, RemoteSigned) que permita la ejecución de su script, teniendo en cuenta las implicaciones de seguridad.
Windows PowerShell Scripting Tutorial (PDF) for Beginners
Learn MoreFAQs
¿Por qué no se reconoce Get-Mailbox en PowerShell?
El error «Get-Mailbox no reconocido» se produce porque el módulo Exchange Management Shell no está cargado en la sesión de PowerShell. Este cmdlet es específico de Exchange Server y requiere el módulo adecuado para funcionar. Para Exchange Online, es necesario instalar y conectar el módulo Exchange Online PowerShell V2:
Install-Module ExchangeOnlineManagement
Para Exchange local, asegúrese de que está ejecutando PowerShell desde Exchange Management Shell o de que ha importado el módulo Exchange. Después de la instalación, conéctese utilizando:
# For cloud environments
Connect-ExchangeOnline
# For on-premises
Import-Module Exchange
El nombre del cmdlet también difiere entre versiones: Exchange Online utiliza Get-EXOMailbox para obtener un mejor rendimiento en entornos grandes, mientras que Exchange tradicional utiliza Get-Mailbox.
¿Cómo conectarse a Exchange Online PowerShell?
Para conectarse a Exchange Online PowerShell se requiere el módulo Exchange Online Management y una autenticación adecuada. En primer lugar, instale el módulo en una sesión de PowerShell con privilegios elevados:
Install-Module -Name ExchangeOnlineManagement
A continuación, conéctese:
Connect-ExchangeOnline
Se le solicitarán sus credenciales de Office 365. Para mayor seguridad, utilice la autenticación moderna:
Connect-ExchangeOnline -UserPrincipalName youradmin@domain.com -ShowProgress
La autenticación multifactor se gestiona automáticamente en el proceso de conexión. Una vez conectado, puede utilizar Get-EXOMailbox en lugar de Get-Mailbox para obtener un mejor rendimiento en entornos grandes. Desconéctese siempre cuando haya terminado:
Disconnect-ExchangeOnline
Este método de conexión proporciona acceso administrativo completo a las funciones de administración de Exchange Online.
¿Cómo comprobar los permisos del buzón con PowerShell?
Para comprobar los permisos del buzón, es necesario combinar los cmdlets Get-Mailbox y Get-MailboxPermission para obtener información de acceso completa. Utilice este comando para ver quién tiene acceso a un buzón específico:
Get-MailboxPermission -Identity username@domain.com
Esto muestra los permisos de acceso completo, enviar como y enviar en nombre de. Para un análisis masivo, canalice los resultados de Get-Mailbox a Get-MailboxPermission:
Get-Mailbox | Get-MailboxPermission
La salida muestra la configuración de AccessRights, User y Deny para cada entrada de permiso. Para identificar privilegios excesivos, filtre los resultados con Where-Object:
Get-MailboxPermission -Identity username@domain.com | Where-Object {$_.User -notlike "NT AUTHORITY*"}
Este en La salida muestra la configuración de AccessRights, User y Deny para cada entrada de permiso. Para identificar privilegios excesivos, filtre los resultados con Where-Object:
foque proporciona visibilidad sobre quién puede acceder a qué datos del buzón, lo cual es crucial para mantener el acceso con privilegios mínimos y los requisitos de cumplimiento.
¿Cómo exportar la lista de buzones a CSV?
La exportación de listas de buzones a CSV combina los cmdlets Get-Mailbox y Export-CSV para obtener informes completos. Para una exportación básica:
Get-Mailbox | Select-Object DisplayName, PrimarySmtpAddress, RecipientTypeDetails | Export-CSV -Path "C:\MailboxList.csv" -NoTypeInformation
Para obtener informes detallados, incluya propiedades adicionales:
Get-Mailbox | Select-Object DisplayName, PrimarySmtpAddress, TotalItemSize, ProhibitSendQuota, LastLogonTime | Export-CSV -Path "C:\DetailedMailboxList.csv" -NoTypeInformation
El cmdlet Select-Object controla qué atributos del buzón aparecen en la exportación, mientras que Export-CSV se encarga del formato del archivo. Para entornos grandes, considere la posibilidad de utilizar Get-EXOMailbox en Exchange Online para obtener un mejor rendimiento. Añada filtros para exportar tipos de buzones específicos:
Get-Mailbox | Where-Object {$_.RecipientTypeDetails -eq "UserMailbox"} | Export-CSV -Path "C:\UserMailboxes.csv" -NoTypeInformation
Este método crea archivos de datos estructurados perfectos para informes de cumplimiento normativo, planificación de la capacidad y auditorías de seguridad.
Get-Mailbox frente a Get-EXOMailbox: ¿cuál utilizar?
Get-EXOMailbox es el sustituto moderno de Get-Mailbox en entornos Exchange Online, y ofrece un rendimiento significativamente mejor para grandes organizaciones. Utilice Get-EXOMailbox cuando trabaje con Exchange Online, ya que está optimizado para operaciones a escala de nube y gestiona la paginación automáticamente. La sintaxis sigue siendo prácticamente idéntica, pero Get-EXOMailbox procesa los resultados más rápidamente y utiliza menos memoria. Para Exchange Server local, debe utilizar Get-Mailbox, ya que Get-EXOMailbox no existe en Exchange Management Shell tradicional. En entornos híbridos, utilice el cmdlet adecuado para cada entorno: Get-EXOMailbox para buzones de correo en la nube y Get-Mailbox para buzones locales. Microsoft recomienda Get-EXOMailbox para todos los nuevos scripts de Exchange Online y migrar gradualmente los scripts existentes para obtener un mejor rendimiento y compatibilidad futura.
Compartir en
Aprende más
Acerca del autor
Kevin Horvatin
Arquitecto Principal de Software
Kevin Horvatin es un Arquitecto de Software Principal en Netwrix y responsable de Netwrix Privilege Secure. Desarrollador de software por más de 20 años, ha trabajado con PowerShell y C# desde que fueron introducidos.