[Microsoft] Más libros y recursos técnicos gratuitos

23 eBooks y Resource Kits gratis…

Blog Sales Excellence Manager – Eric Ligman
Another large collection of Free Microsoft eBooks and Resource Kits for you, including: SharePoint 2013, Office 2013, Office 365, Duet 2.0, Azure, Cloud, Windows Phone, Lync, Dynamics CRM, and more.

[PowerShell Office 365] Usuarios migrados a Office 2013 (versión 15)

Ahora que estamos inversos en plena migración de Office 365 a la versión 2013 y no está siendo tan transparente como debiera, seguro que os es de utilidad estos scripts para saber que usuarios están migrados y cuales no.

# Office 2010
Get-Mailbox -Resultsize Unlimited | ?{$_.ExchangeVersion -eq '0.10 (14.0.100.0)'}

# Office 2013
Get-Mailbox -Resultsize Unlimited | ?{$_.ExchangeVersion -eq '0.20 (15.0.0.0)'}

Las repercusiones mas relevantes que estamos sufriendo son:

  • Durante el proceso de migración (de bastantes horas) a los usuarios aún no migrados con cuentas configuradas en dispositivos Andriod les da un error de credenciales en el móvil.
  • 14 días después de la migración el servidor m.outlook.com deja de estar operativo y hay que sustituirlo en la configuración de los clientes de correo por outlook.office365.com.
  • Las cuentas de correo configuradas manualmente, poniendo el nombre del servidor, dejan de funcionar. Hay que volver a configuraras usando el autodiscover.

[PowerShell Office 365] Agregar un propietario a todos los grupos de distribución

Aquí os dejo un script bastante interesante, agrega masivamente un propietario a todos los grupos de distribución existentes en la organización. Recordad que los propietarios de un grupo deben ser usuarios, no pueden ser otros grupos.

# Usurio que queremos asignar como propietario.
$NewManageUser = Get-User Administrator@sqlbull.com

# Todos los grupos de distribución.
$DGs = Get-DistributionGroup -ResultSize Unlimited

# Añadir el propietario a la lista de propietarios ya existente en el grupo.
$DGs | %{$NewManage = $_.ManagedBy; $NewManage += $NewManageUser.UserPrincipalName; Set-DistributionGroup $_.PrimarySmtpAddress -ManagedBy $NewManage -BypassSecurityGroupManagerCheck}

Es un script sencillo, tras obtener todos los grupos de distribución existentes en Office 365, de cada uno de ellos obtiene a su vez los propietarios actuales y le suma el que hayamos definido al principio. Hay dos verificaciones que no se hacen, la primera si ese usuario es ya propietario del grupo, y la segunda si el grupo está sincronizado con un dominio federado. En ambos casos se produciría un error, sin menoscabo a que en el resto de casos la inserción se hiciera de manera correcta.

[PowerShell Office 365] Obtener el tamaño de todos los buzones

El siguiente script exporta a un CSV todos los buzones que existen en nuestro entorno de Office 365 con el tamaño en Megabites de los mismos, además de algún dato interesenate mas, como la última vez que se logó el usuario. Esto puede resultar útil si pretendemos controlar el ritmo de crecimiento de los buzones o ver los buzones con mayor tamaño, por ejemplo, para activarles el archivado.

$MailBox = Get-Mailbox -ResultSize Unlimited
$MailBox | %{Get-MailboxStatistics -Identity $_.UserPrincipalName | Select DisplayName, ObjectClass, StorageLimitStatus,@{name="TotalItemSize (MB)";expression={[math]::Round(([double]$_.TotalItemSize.ToString().Split("(")[1].Split(" ")[0].Replace(",","")/1MB),2)}},@{name="TotalDeletedItemSize (MB)";expression={[math]::Round(($_.TotalDeletedItemSize.ToString().Split("(")[1].Split(" ")[0].Replace(",","")/1MB),2)}},ItemCount,DeletedItemCount,LastLogoffTime,LastLogonTime} | Export-CSV "D:\MailboxesSize.csv" -Encoding utf8 -NoTypeInformation -Delimiter ";" -WarningAction SilentlyContinue

Si existe algún buzón al que nunca se ha accedido se mostrará un mensaje de advertencia como el que aparece en la imagen de abajo. Esta puede ser una forma de obtener los buzones que no están siendo usado por los usuarios.

MailBoxSize

[PowerShell Office 365] Extensiones de archivos adjuntos permitidas en OWA

Una de las directivas de los buzones de correo cuando se accede desde Outlook Web App (OWA) es  las extensiones permitidas de los ficheros adjuntos. Usando el cmdlet Get-OwaMailboxPolicy podemos acceder a esa política concreta y listar los ficheros permitidos.

# Listar extensiones permitidas en OWA
Get-OwaMailboxPolicy | select AllowedFileTypes –ExpandProperty AllowedFileTypes

Por otro lado usando Set-OwaMailboxPolicy seremos capaces de modificar la directiva, bien añadiendo extensiones permitidas, bien eliminándolas.

# Insertar una extensión permitida
Set-OwaMailboxPolicy OwaMailboxPolicy-Default -AllowedFileTypes @{add = '.rar'}

# Insertar varias extensiones permitidas
Set-OwaMailboxPolicy OwaMailboxPolicy-Default -AllowedFileTypes @{add = '.rar', '.pdf', '.psd'}

# Quitar una extensiones permitida
Set-OwaMailboxPolicy OwaMailboxPolicy-Default -AllowedFileTypes @{remove = '.rar'}

# Quitar varias extensiones permitidas
Set-OwaMailboxPolicy OwaMailboxPolicy-Default -AllowedFileTypes @{remove = '.rar', '.pdf', '.psd'}

[SQL server] Localizar registros duplicados

Algunas veces nos encontramos con la necesidad de ver si en un campo o conjunto de campos existen valores repetidos, por ejemplo cuando queremos convertir ese campo o campos en clave primaria. Os dejo una sencilla consulta que nos devuelve los valores duplicados, si los hubiera.

-- Localizar registros duplicados en un único campo.
SELECT Campo1 FROM Tabla GROUP BY Campo1 HAVING COUNT(1) >1

-- Localizar registros duplicados en varios campo.
SELECT Campo1, Campo2, Campo3
FROM Tabla
GROUP BY Campo1, Campo2, Campo3
HAVING COUNT(1) >1

[PowerShell Office 365] Get-Recipient, obtener el tipo de un objeto

En el post anterior vimos los cmdlets que había que utilizar para obtener información de los tipos de objetos más relevantes de Office 365 (usuarios, buzones, grupos, contactos,…). Pero si tenemos una dirección de correo de nuestra organización y no sabemos que tipo de objeto es ¿debemos ir probando con cada comando hasta averiguar de cuál se trata? No es necesario, existe un comando, Get-Recipient, que es capaz de acceder a todos los objetos de Office 365.

Get-Recipient unknown@sqlbull.com

El parámetro RecipientType especifica el tipo y dependiendo de cual se trate usaremos un comando u otro.

RecipientType cmdlets
DynamicDistributionGroup Get-DynamicDistributionGroup
UserMailbox Get-Mailbox, Get-MsolUser, Get-user
MailUser Get-MsolUser, Get-user
MailContact Get-Contact, Get-MailContact
MailUniversalDistributionGroup Get-DistributionGroup, Get-MsolGroup, Get-Group
MailUniversalSecurityGroup Get-DistributionGroup, Get-MsolGroup, Get-Group