Exchange 2013, On Premise, scripts
Para los que tengan Exchange 2013 «on premise», agrupare una serie de scripts que he utilizado a lo largo de mucho tiempo e intentare darle una pequeña descripción.
Quizá tengan Exchange dentro de un dominio y por consiguiente este correlacionado o integrado con otras aplicaciones o servicios, por ejemplo con Lync 2013 (Chat o mensajería) en este caso quisiéramos quitar las fotos de empleados que suben de manera arbitraria y no son las fotos institucionales que RH o CH son tan amables de tomar, estas fotos se almacenan en el objeto User del Dominio, pero desde Exchange se pueden eliminar, para esto utilizamos este script:
Eliminar thumbnail
Remove-UserPhoto "user@dominio.net" -Confirm: $false
Pero ¿Qué pasa si te piden aplicarle una foto institucional a determinado User? ah pues muy fácil con este script:
Agregar Thumbnail
Set-UserPhoto "Usuario" -PictureData ([System.IO.File]::ReadAllBytes("C:\temporal\004515.jpg")) -Confirm:$false
Hace tiempo cree un programa de escritorio para poblar contactos al mensajero Lync y también tenia la función de agregar y borrar los thumbnail al objeto User de Active Directory.
Tal vez te hayan pedido un listado de buzones o quisieras hacer una auditoria para saber cuantos buzones tienes y cual es el tamaño de cada uno y si gustas agregarle cuando fue la ultima vez que se logearon.
Listado de buzones
Try{ [String]$Path = Read-Host Path Write-Host " " for($i = 0; $i -le 100; $i++) { Write-Progress -Activity "Exporting mailbox information" -PercentComplete $i -Status "Processing"; Sleep -Milliseconds 100; } $mailbox= Get-MailboxServer | Get-mailbox -resultsize unlimited $MS = Foreach ($m in $mailbox) {Get-MailboxStatistics $m.Identity| Select-Object DisplayName,@{expression={$_.TotalItemSize.Value.ToMB()}; label="TotalItemSizeMB"},@{expression={$_.TotalDeletedItemSize.Value.ToMB()};label="TotalDeletedItemSize"},ItemCount,LastLogonTime,@{Name='EmailAddresses';Expression={[string]::join(";", ($m.PrimarySmtpAddress))}}} $MS | Export-CSV -Delimiter ";" -Path "$Path\MailboxSizeReportFina13102022.csv" Write-host Listado Terminado!! } Catch{($Error)}
Te generara un archivo separado por comas (CSV)
Deshabilitar y Habilitar Buzón
Disable-Mailbox usuario@dominio.net Enable-Mailbox -Database "MiBaseData" -Identity "usuario"
Incrementar Tamaño de correos de entrada
get-transportconfig | ft maxsendsize, maxreceivesize set-transportconfig -maxsendsize 60MB -maxreceivesize 60MB
Mostrar Bases de Datos
Get-MailboxDatabase
Mostrar el estatus de las Base de Datos
Importante: si estas en configuración DAG de alta disponibilidad debes de considerar ejecutar el script en todos los servidores que conforman la solución
Get-MailboxDatabaseCopyStatus -Server "NameServer" | Format-table
Exportar e Importar Buzones
Para exportar buzón
New-MailboxExportRequest usuario@dominio.net -FilePath \\server\carpeta_compartida\usuario.pst
Una mera de saber si ya se termino la tarea de exportación de buzones es ejecutar este script
Get-MailboxExportRequest Get-MailboxExportRequest -Status Completed | Remove-MailboxExportRequest Get-MailboxExportRequest -Status Failed | Remove-MailboxExportRequest
Para Importar un PST en un buzón
New-MailboxImportRequest -FilePath \\server\carpeta_compartida\usuario.pst -Mailbox "usuario@dominio.net"
Para saber cuantos Servers y que roll tienen
Get-ExchangeServer | select name, serverrole, edition, admindisplayversion, isClientAccessServer | fl
Buzones Desconectados
¿Cómo, Cuando. Donde, Por qué?
Bueno resulta que si deshabitamos un buzón, la información del buzón permanece de acuerdo al periodo de retención configurado, que oscila entre 14 y 30 días, y es posible rehabilitarlos, ojo si se utilizo el cmdlet (script) Remove-Mailbox y el parámetro Permanent o StoreMailboxIdentity , se eliminará inmediatamente de la base de datos de buzones. Para identificar los buzones deshabilitados
$dbs = Get-MailboxDatabase $dbs | foreach {Get-MailboxStatistics -Database $_.DistinguishedName} | where {$_.DisconnectReason -eq "Disabled"} | Format-Table DisplayName,Database,DisconnectDate
Ejecute lo siguiente para identificar buzones eliminados temporalmente
$dbs = Get-MailboxDatabase $dbs | foreach {Get-MailboxStatistics -Database $_.DistinguishedName} | where {$_.DisconnectReason -eq "SoftDeleted"} | Format-Table DisplayName,Database,DisconnectDate
¡Vaya!, no me acordaba de que ya había subido contenido sobre el mismo tema