Entradas Etiquetadas ‘powershell’

Get subscription managed by Office365 Partner

sábado, 13 de abril de 2013 Sin comentarios



It´s a lot of time i haven´t published anything about Office365 with the use of PowerShell, so today i will not just write about it, but also be writing about helping partners with the Office365 client management.

Actually there are many partners that use some PowerShell commands to manage their client subscriptions to be able to apply changes massively, but not much know about two commands:

Get-MsolPartnerContract and Get-MsolPartnerInformation

So let´s get what these return to us:

  • First of all (of course) will be to get our environment prepared for PoweShell and Online services.
  • Second thing we´ll do is to start the Microsoft Online Services for Windows PowerShell Module (we´ll find it on the installed program list)
  • Once it´s started, run the Connection chain and use your admin credentials as a partner:

$LIveCred = Get-Credential $Session = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri -Credential $LIveCred -Authentication Basic -AllowRedirection Import-PSSession $Session

  • Then connect to the MSOL service with the Partner admin credentials once more:


  • Once we´re inside the system, run the following command to get a list of the subscription we manage as a Partner:


The only problem here is that it doesn´t give us a clear output because the only value it returns is the Tenant Id:


So here´s where the other command will help us:

  • The Following command will let us obtain the Info associated to a Tenant Id:

Get-MsolPartnerInformation -TenantId <id>

This would be the result:


The only problema is that we would have to run two commands to get the Info we want and it´s a bit messy, so lets use the functionality and power that PowerShell gives us like the chained commands and use the next command::

Get-MsolPartnerContract | Get-MsolPartnerInformation

This way we will get the Info without the need to investigate about the id that is linked to it.

Hope you Partners find it useful.

Obtener suscripciones asociadas al partner en Office365 via PowerShell

sábado, 13 de abril de 2013 Sin comentarios


Hace mucho que no publico nada sobre Office365 con el uso de PowerShell, asi que hoy no solo escribiré sobre la gestión de Office365 con PowerShell, sino que además aportaré algo sobre la gestión de clientes como Partners.

Actualmente hay muchos partners que utilizan comandos de PowerShell para gestionar las suscripciones de clientes, sobretodo a nivel empresarial y poder aplicar cambios en masa, pero lo que no muchos saben es de la existencia de dos comandos:

Get-MsolPartnerContract y Get-MsolPartnerInformation

Así que pongamos en practica y demostremos lo que hace cada uno de estos comandos:

  • Lo primero (por supuesto) será disponer de nuestro entorno preparado para PowerShell y Office365.
  • Lo segundo será iniciar el Módulo de Microsoft Online Services Para Windows PowerShell (lo encontraremos en la lista de programas instalados)
  • Una vez iniciado el modulo, lanzamos la cadena de conexión e introducimos las credenciales de administrador como Partner:

$LIveCred = Get-Credential
$Session = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri -Credential $LIveCred -Authentication Basic -AllowRedirection
Import-PSSession $Session

  • Después conectamos al servicio de MSOL con el siguiente comando e introducimos las credenciales de administrador como Partner nuevamente:


  • Ya introducidas las credenciales y logados dentro del sistema, ejecutamos el siguiente comando para obtener una lista de las suscripciones que gestionamos como partners:


El único problema de este comando es que no nos desvela mucha información que digamos, ya que lo que obtenemos es un identificador de Tenant:


Asi que aquí entra el siguiente comando:

  • El siguiente comando nos permitirá obtener la información del id de tenant adquirido:

Get-MsolPartnerInformation -TenantId <id>

Este seria el resultado:


El problema de todo esto es que son dos comandos diferentes y no nos proporciona una gran utilidad si tenemos que ir una por una, asi que aprovechemos la funcionalidad de PowerShell que nos permite encadenar comandos y lancemos el siguiente comando:

Get-MsolPartnerContract | Get-MsolPartnerInformation

De esta manera nos devolverá la información que queremos sin necesidad de estar averiguando que id corresponde a que.

Espero que sea de utilidad para los partners.

Restrict access to Exchange Online

martes, 26 de marzo de 2013 Sin comentarios




Some days ago, i found myself with a client petition, where they wanted to restrict the access to Exchange Online on a few users only to be able to access their e-mail via OWA. Well after i bit of investigation i found out how to do it via PowerShell, so here are some CmdLets to do so:

Of course, we need to have our environment ready for Office365 administration via PowerShell.

Once we have our system logged on to Office365 via PowerShell with our admin credentials, we can run the following commands as needed:

Disable OWA Access

set-CASmailbox -OWAEnabled $false

Enable OWA Access

set-CASmailbox -OWAEnabled $false

Disable IMAP Access

set-CASMailbox -ImapEnabled $false

Enable IMAP Access

set-CASMailbox -ImapEnabled $true

Disable POP Access

set-CASMailbox -PopEnabled $false

Enable POP Access

set-CASMailbox -PopEnabled $true

Disable Exchange ActiveSync use with mobile devices

set-CASMailbox -ActiveSyncEnabled $false

Enable Exchange ActiveSync use with mobile devices

set-CASMailbox -ActiveSyncEnabled $true

Disable SMS for all the organization

Set-OwaMailboxPolicy Default -TextMessagingEnabled $false

Enable SMS for all the organization

Set-OwaMailboxPolicy Default -TextMessagingEnabled $true

Disable Outlook Access

Set-CASmailbox –mapienabled $false

Enable Outlook Access

Set-CASmailbox –mapienabled $true


I hope you find them useful…

Inactive mailboxes on Exchange Online

domingo, 24 de marzo de 2013 Sin comentarios




Today we´ll cover something new in Office365 Exchange Online and Exchange 2013, it´s about Inactive Mailboxes. These mailboxes let you keep the contents of a mailbox you´re about to delete indefinitely without the need of a license.

The only requisites we must have in order to get this feature working are:

  • Have an Exchange Online Plan 2 or the Online Archive feature.
  • Activate the «In-Place Hold» function on every mailbox before the deletion. If we´ve already deleted the mailbox without activating this function, we can bring it back during 30 days from it´s deletion and actívate the function.

So, how do we do it?.

  1. First of all will be create/convert a mailbox into inactive. To do so, we must define an undefined retention or a time based retention:
    1. Via GUI:
      1. Access the Exchange Administration Console (EAC)
      2. Click on Compliance Management
      3. Click on the “In-Place eDiscovery & Hold“ tab.
      4. Click on the “+” button.
      5. Give a name and a description to the retention policy and click on “next
      6. Select the mailboxes you want to include on the retention policyand click on “next
      7. Click once again on “next” and mark the checkbox that says “place content matching….” and select the time we want to hold the content, indefinitely or by days.
      8. Click on “Finish
    2. Via PowerShell:
      1. Prepare our environment to run with PowerShell
      2. Run the following command:New-MailboxSearch “Retention_Name” -SourceMailboxes -InPlaceHoldEnabled $true
  2. The second thing will be to delete the mailbox we want to retain via the Office365 Administration portal or with the PowerShell command “Remove-Mailbox”

Well, we now have our mailbox archived and hold indefinitely (or the days we want to), so how do we access that content?, via PowerShell:

  1. Run the following command on PowerShell:

    New-MailboxSearch “Search_Name” -SourceMailboxes “Source_mailbox” -TargetMailbox “Discovery Search Mailbox” -IncludeUnsearchableItems -LogLevel Full

We´ll get the results on our discovery mailbox

Until next time!

Solution to the winmail.dat and Exchange Online Problem

sábado, 23 de marzo de 2013 Sin comentarios




Sometimes when we send an E-mail to a recipient with an attachment (i.e, a pdf file), and that recipient uses Outlook Express as an e-mail client, instead of receiving the pdf file, it will receive a file named winmail.dat as an attachment. Well stop looking no more on the recipients server, antivirus software or even the antispam because the problem is in your Exchange server and it can be easily solved.

This situation is due to the encapsulation format that the Exchange servers uses by default and that Microsoft is propietary named TNEF or  Transport Neutral Encapsulation Format. This encapsulates the MAPI properties of the message.

When we send the message with an attachment, and leaves our Exchange Organization but it arrives on an E-mail client that is not compatible with Outlook´s rich text format, the attachment will be replaced for another one named  winmail.dat.

To avoid this situation, whe must simply login to our Office365 subscription using PowerShell with our admin credentials (of course we must have our environment ready for it), and run the following command:

Set-RemoteDomain Default -TNEFEnabled $false

This way all the outgoing messages sent outside our organization wont be using this encapsulation format. Hope many of you find it useful.

Buzones inactivos indefinidos en Exchange Online

domingo, 17 de marzo de 2013 Sin comentarios




Hoy nos encontramos con una novedad en Office365 Exchange Online y Exchange 2013, se trata de los buzones inactivos. Estos buzones son aquellos que dejan de tener una licencia y que a pesar de eliminar el usuario, mantienen los datos incluso de forma indefinida.

Los únicos requisitos que debemos tener en cuenta para poder conseguir esta funcionalidad son los siguientes:

  • Disponer de Exchange Online Plan 2 o de la funcionalidad adicional de Archivado Online.
  • Activar en cada buzón con antelación la función de «In-Place Hold»
  • Si hemos eliminado el usuario o el buzón sin activar la función, tendremos 30 días para recuperarlo y activar la función para posteriormente activar la función y proceder a su eliminación.

Asi que como se hace?.

  1. Lo primero será crear/convertir un buzón en inactivo, para ello tenemos que definir una retención indefinida o basada en tiempo
    1. Via GUI:
      1. Accedemos a la Exchange Administration Console (EAC)
      2. Pinchamos en Administracion de Cumplimiento
      3. Pinchamos en la pestaña «Suspensión y Exhibición de documentos electrónicos local«
      4. Pinchamos en el símbolo «+»
      5. Damos un nombre y una descripción a la directiva de retención y pinchamos en «siguiente«
      6. Seleccionamos los buzones que queremos incluir en la retención y pinchamos en «siguiente«
      7. Pinchamos nuevamente en «Siguiente» y Marcamos la casilla que pone «pausar….» y a continuación seleccionamos si queremos retener el contenido de manera indefinida o por cuanto tiempo en días queremos retenerlo.
      8. Pinchamos en «Finalizar«
    2. Via PowerShell:
      1. Preparamos nuestro entorno para usar powershell con Office365
      2. Ejecutamos el siguiente comando:

        New-MailboxSearch «Nombre_de_Retencion» -SourceMailboxes -InPlaceHoldEnabled $true

  2. Lo segundo será eliminar el buzon que queremos mantener via el portal de administración de Office365 o bien ejecutando el comando de PowerShell «Remove-Mailbox»

Bien, ya tenemos nuestro buzón archivado y retenido de forma indefinida (o durante los días que hayamos especificado, asi que, como accedemos a este contenido?, via PowerShell:

  1. Ejecutamos el siguiente comando en PowerShell:

    New-MailboxSearch «Nombre_de_busqueda» -SourceMailboxes «Buzon_de_origen» -TargetMailbox «Discovery Search Mailbox» -IncludeUnsearchableItems -LogLevel Full

Tendremos los resultados en nuestro buzón de descubrimiento o «Discovery Mailbox»

Hasta la próxima!

Add or Remove Office365 users via PowerShell

miércoles, 13 de marzo de 2013 Sin comentarios




In order to Add or Remove Office365 users using PowerShell, we must hace our environment ready to use with PowerShell and connect with Office365.

Once this is done, we can proceed…

Add Users:

We must have available licenses on our subscription if we want to assign one, if this is not the case, then we must Access to our Office365 Administration portal and buy some.

  • Log in to our office365 using powershell.
  • Run the following command to create the user:

New-MsolUser -UserPrincipalName -DisplayName “Antonio Lopez – Contoso Ltd.” -FirstName “Antonio” -LastName “Lopez

  • Specify the location of the user (in this case, Spain)

Set-MSOLUser –UserPrincipalName –UsageLocation ES

  • Assign a license to the recently created user with the following Cmdlet

Set-MsolUserLicense -UserPrincipalName -AddLicenses “tenantname:AccountSKUId”

Where “tenantname” will be in our case “contoso” and “AccountSKUId” will be the plan we wish to assign. The available AccountSKUId are:








Besides, we can run the following cmdlet to determine the AccountSKUId used on our Office365

Get-MsolAccountSku | Format-Table AccountSkuId, SkuPartNumber

Note: if we want to do a license upgrade to a selected user, we must first remove the assigned license and then assign the new one.

To remove a license to a user, run the following:

Set-MsolUserLicense -UserPrincipalName -RemoveLicenses “tenantname:AccountSKUId

Remove a User:

Simply run the following Cmdlet:

Remove-MsolUser -UserPrincipalName

This will move the user to the «Deleted Mailboxes» área because it´s not a HardDelete…

Until next post….

Restringir acceso a Exchange Online via Powershell

domingo, 3 de marzo de 2013 Sin comentarios




Hace poco, me encontré con que una empresa quería restringir el acceso a ciertos usuarios para que únicamente pudiesen revisar el correo por medio de OWA.  Bien pues aquí os pongo unos cuantos CmdLets de PowerShell para gestionar los permisos de acceso de los usuarios de Exchange Online.

Por supuesto es necesario tener configurado nuestro entorno para poder utilizar PowerShell con Office365.

Una vez iniciada la sesión de PowerShell con nuestras credenciales de Administrador de la suscripción de Office365, podremos ejecutar los siguientes comandos:

Deshabilitar el acceso a OWA

set-CASmailbox -OWAEnabled $false

Habilitar el acceso a OWA

set-CASmailbox -OWAEnabled $false

Deshabilitar el acceso al buzón via IMAP

set-CASMailbox -ImapEnabled $false

Habilitar el acceso al buzón via IMAP

set-CASMailbox -ImapEnabled $true

Deshabilitar el acceso al buzón via POP

set-CASMailbox -PopEnabled $false

Habilitar el acceso al buzón via POP

set-CASMailbox -PopEnabled $true

Deshabilitar el acceso desde dispositivos móviles con Exchange ActiveSync

set-CASMailbox -ActiveSyncEnabled $false

Habilitar el acceso desde dispositivos móviles con Exchange ActiveSync

set-CASMailbox -ActiveSyncEnabled $true

Deshabilitar SMS para toda la organización

Set-OwaMailboxPolicy Default -TextMessagingEnabled $false

Habilitar SMS para toda la organización

Set-OwaMailboxPolicy Default -TextMessagingEnabled $true

Deshabilitar el acceso al buzón desde Outlook

Set-CASmailbox –mapienabled $false

Habilitar el acceso al buzón desde Outlook

Set-CASmailbox –mapienabled $true

Hasta aquí el post de hoy, espero que sea de utilidad.


Configurar horario en buzones de sala de Office365

domingo, 10 de febrero de 2013 Sin comentarios


Hace unos días Publicaba una serie de posts sobre buzones de recursos:


Hoy explicare como establecer el horario en los buzones de sala via GUI y PowerShell. Este contenido no esta reunido en la serie anterior debido a que terminaría siendo demasiado larga y debe tener su propio post individual debido a su importancia.

Las organizaciones a menudo tienden a dar de alta buzones de sala para administrar la ocupación de dichas salas y para no tener mayores responsabilidades configuran dichas salas como autoadministradas para que acepten las peticiones siempre y cuando haya aforo disponible y no este ocupada; sin embargo, eso no evita que se ocupen salas fuera de horario y a veces eso no es admisible.

Comencemos como configurar el horario de los buzones de sala a través de la ECP (Exchange Control Panel).

  • Lo primero será acceder a nuestra suscripción via
  • Después iremos a Administrar otro buzon en la parte superior izquierda y seleccionaremos el buzon de sala que queramos.
  • Una vez dentro de la configuración del buzon de sala, nos vamos a Configuración – Calendario

  • En este apartado podremos especificar el horario del buzon de sala.


A pesar de lo fácil que resulta esta forma, termina siendo un poco engorroso a la hora de asignar el horario en multiples salas o simplemente a la hora de modificarlos, por lo que es mejor hacerlo via PowerShell de la siguiente manera:

Set-MailboxCalendarConfiguration -WorkingHoursStartTime 07:00:00 -WorkingHoursEndTime 15:00:00

Tened en cuenta que el formato de horas debe ser HH:MM:SS siempre en formato de hora militar.


Hasta el siguiente post!

Compartir Contactos y Calendarios en Exchange Online con PowerShell

lunes, 4 de febrero de 2013 Sin comentarios



Buenas a todos, en el post de hoy explicare como compartir calendarios y contactos en Office365 Exchange Online con PowerShell.

Para esto, es necesario que el entorno este preparado para administrar Office365 con Powershell e inciar sesion con nuestras credenciales.

A continuacion ejecutar el siguiente comando para compartir la libreta de contactos llamada «Contactos»:

Add-MailboxFolderPermission\Contactos -AccessRights PublishingEditor -User

Lo mismo si queremos compartir un calendario concreto con otro usuario:

Add-MailboxFolderPermission\Calendario -AccessRights PublishingEditor -User

Los permisos que podemos aplicar son:

  • None
  • Owner
  • PublishingEditor
  • Editor
  • PublishingAuthor
  • Author
  • NonEditingAuthor
  • Reviewer
  • Contributor


Adicionalmente para el Calendario podemos aplicar los otros dos permisos:

  • AvailabilityOnly
  • LimitedDetails

Si por el contrario lo que queremos es modificar los permisos ya aplicados a un usuario en concreto con el que compartimos los contactos o calendario, ejecutaremos el siguiente comando:

Para el Calendario

Set-MailboxFolderPermission\Calendario -AccessRights PublishingEditor -User

Para los contactos:

Set-MailboxFolderPermission\Contactos -AccessRights PublishingEditor -User

Y finalmente para ver los permisos aplicados:

Para el Calendario


Para los contactos



Hasta Otra!