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.

mi programa

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é?

exchange

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

Exchange, Forwarding Mail

Exchange, Cambiar ubicación de base de datos mail.que

Exchange, Migración De Buzones

Exchange, Búsqueda de mails

Exchange, Powershell Utilerias

 

 

También te podría gustar...