Por Demián Gomez / Reviewed by Viviane Lopes and Daniel Seveso

Problema

Hace unos días recibí un caso de una cliente con problemas al ejecutar el cmdlet Export-Mailbox en un equipo Windows Vista de 32 bits que tenía instaladas las Exchange Management Tools para Exchange Server 2007 SP1. En este caso la cliente estaba usando la herramienta Exchange Management Shell y el cmdlet ya mencionado.

La sentencia del comando era algo así como:

[PS] C:\Windows\System32>Export-Mailbox "Demian Gomez" -TargetFolder ESLA -TargetMailbox "Mailbox Destino"

El problema en sí era que el proceso Powershell.exe hacía un crash y se cerraba abruptamente, logueando un evento en el Event Log de Application similar al siguiente:

Log Name: Application
Source: Application Error
Date: 06/11/2008 1:52:54 PM
Event ID: 1000
Task Category: (100)
Level: Error
Keywords: Classic
User: N/A
Computer: DEGOMEZ
Description:

Faulting application powershell.exe, version 6.0.6000.16386, time stamp 0x45a7fb9d,faulting module migbase.dll, version 8.1.240.5, time stamp 0x484cd1cc, exception code 0xc0000005, fault offset 0x00076a0a, process id 0x%9, application start time 0x%10.

Event Xml:

<Event xmlns=">http://schemas.microsoft.com/win/2004/08/events/event>
<System>
<Provider Name="Application Error" />
<EventID Qualifiers="0">1000</EventID>
<Level>2</Level>
<Task>100</Task>
<Keywords>0x80000000000000</Keywords>
<TimeCreated SystemTime="2008-11-6T18:52:54.000Z" />
<EventRecordID>701</EventRecordID>
<Channel>Application</Channel>
<Computer>DEGOMEZ</Computer>
<Security />
</System>
<EventData>
<Data>powershell.exe</Data>
<Data>6.0.6000.16386</Data>
<Data>45a7fb9d</Data>
<Data>migbase.dll</Data>
<Data>8.1.240.5</Data>
<Data>47427a49</Data>
<Data>c0000005</Data>
<Data>0007653c</Data>
</EventData>
</Event>

El problema también ocurría si poniamos como destinatario un archivo .pst, resultando el comando en algo similar a:

[PS] C:\Windows\System32>Export-Mailbox "Demian Gomez" –PSTFolderPath C:\PSTs\degomez.pst

Análisis del problema y resolución

Antes que nada verifiqué que estuviéramos en un entorno donde los permisos necesarios para hacer un Export-Mailbox en Exchange 2007 sean los correctos para la cuenta que estaba ejecutando Exchange Management Shell, los mismos son:

  • Rol de Exchange Server Administrator y miembro del grupo local Administrators para el servidor desde el que se exporta el mailbox y hacia el que se importa el mismo.
  • Permiso de Full access en el mailbox a exportar y en el que se importa.

Pero los permisos en este caso estaban correctamente seteados, así que tomamos un dump del proceso Powershell.exe al momento del crash y en el debugging de ese dump se verificó que el problema era causado por la característica de seguridad de Windows Vista, User Account Control, la cual estaba bloqueando el acceso a una llave de Registro necesaria para el proceso de Export-Mailbox, la clave es:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Exchange\Exchange Migration

Así que la solución a este problema tiene 2 posibilidades:

  1. Deshabilitar User Account Control en el equipo. (No recomendado)
  2. Dar permisos de Full Control en la clave de Registro mencionada al usuario que ejecuta Exchange Management Shell (Recomendado).

Espero que este post les haya servido, pronto saldrá un artículo de Knowledge Base documentando este comportamiento.

Saludos!