El Blog de Gualtrysoft

Windows 2000/2003/2008, Active Directory, VBScript, Hyper-V, PowerShell y todo aquello interesante a la hora de usar, configurar y administrar Windows Server. También tenemos longanizas…

Exchange 2010 Tip: Administrar con PowerShell desde un equipo sin herramientas de Exchange

Posted by urpiano en Lunes 21 \21\UTC mayo \21\UTC 2012

Gracias a la administración remota incluída con el marco de administración de Windows (incluye PowerShell 2.0 y administración remota de Windows), es posible conectar desde tu equipo con una consola de PowerShell a un servidor de Exchange 2010 y administrarlo, sin tener instaladas las herramientas de administración de Exchange en tu equipo (eso sí, no con la consola de administración GUI, sólo desde PowerShell). Veamos cómo se hace esto.

Es necesaria una tarea previa: habilitar la administración remota de Exchange al usuario con el que queremos conectar. Esto se tiene que hacer desde un servidor de Exchange con el shell de administración de Exchange, usando el comando Set-User <nombre_usuario> -RemotePowerShellEnabled $True; por ejemplo:

PS P:\> Set-User TIA\Bacterio -RemotePowerShellEnabled $True

Ya en el equipo desde el que conectar a Exchange, no en un servidor Exchange, cuando queremos administrar de forma remota, sin tener las herramientas de administración de Exchange instaladas, lo primero es crear una variable en la que almacenar las credenciales del usuario con el que nos conectaremos al servidor de Exchange 2010:

PS P:\> $Usuario = Get-Credential TIA\Bacterio

Esto hace que se abra un cuadro de diálogo en el que tendremos que poner la contraseña del usuario:

Señalar que si el usuario con el que estamos logados, o el usuario con el que abrimos la consola de PowerShell mediante Ejecutar como…, tiene permisos de administración de Exchange, no es necesario este paso de obtener un objeto PsCredential, pues se podrá conectar por impersonación.

A continuación deberemos crear un objeto PSSession. Empezaremos por definir el nombre de la configuración a utilizar. Deberemos crearlo con la configuración de Exchange, que obtendremos desde el repositorio de esquemas de Microsoft (cuando al parámetro ConfigurationName del Cmdlet New-PsSession se le pasa como configuración un nombre de configuración en lugar de una URI, éste le antepone “http://schemas.microsoft.com/powershell/&#8221;, para así construir la URI):

PS P:\> $NombreConfiguracion = "Microsoft.Exchange"

Ahora definiremos la URI de conexión. Como URI de conexión deberemos poner <protocolo>://<servidor>[:puerto]/<Aplicación>[?<deserialización>], siendo:

  • <protocolo> (requerido): http o https.
  • <servidor> (requerido): nombre NetBios, FQDN o IP del servidor Exchange al que queremos conectar.
  • :puerto (opcional): número de puerto donde está el sitio de la administración remota; si se omite será 80 para http y 443 para https.
  • <Aplicación>: nombre de aplicación a la que se conecta la sesión. En nuestro caso powershell.
  • ?<deserialización> (opcional): la deserialización puede ser Low o Full; si se omite será Low. La forma de escribir este campo es ?serializationLevel=[Low|Full].

Así pues en nuestro ejemplo, estableceremos una URI de configuración que conecte al servidor bacterio-exch por http, puerto 80 y deserialización Full:

PS P:\> $UriConfiguracion = "http://bacterio-exch/powershell?serializationLevel=Full"

Otra forma de hacer esto es utilizando los parámetros:

  • ComputerName: nombre NetBios, FQDN o IP del servidor Exchange al que queremos conectar. En nuestro ejemplo pasaríamos a este parámetro bacterio-exch.
  • ApplicationName: especifica el segmento del nombre de aplicación del identificador URI de la conexión. En nuestro ejemplo pasaríamos a este parámetro powershell.
  • Port: especifica el puerto de red del equipo remoto que se utiliza para este comando. En nuestro caso o pasamos 80 a este parámetro o, sencillamente, lo omitimos.
  • UseSSL: si se pasa este modificador, se utilizará HTTPS, si no se pasa se utilizará HTTP. En nuestro ejemplo omitiríamos este parámetro.

Señalar que si se pasa cualquiera de estos parámetros y también el parámetro ConfigurationUri se producirá un error, pues o se hace de una forma o de la otra. Como se puede ver, si se utiliza esta segunda manera, no se puede especificar la deserialización.

Con todo esto, ya podemos crear el objeto PSSession:

PS P:\> $Sesion = New-PsSession -ConfigurationName $NombreConfiguracion `
>> -ConfigurationUri $UriConfiguracion -Credential $Usuario

Si no necesitaramos pasar credenciales, por estar abierta la consola de PowerShell con un usuario administrador de Exchange con permiso de administración remota, se omitiría el pasar credenciales (no se pasaría el parámetro -Credential), con lo que se crearía el objeto PSSession de esta manera:

PS P:\> $Sesion = New-PsSession -ConfigurationName $NombreConfiguracion `
>> -ConfigurationUri $UriConfiguracion

Una vez creado el objeto PSSession con la información de la sesión, credenciales de usuario usuario incluídas (ya sea por haber pasado un objeto PsCredential al crear la sesión o por haberla creado con credenciales por impersonación), el siguiente paso es importar la parte servidor de la sesión de PowerShell a la parte cliente. Esto se realiza con Import-PsSession:

PS P:\> Import-PsSession $Sesion

Al ejecutar esta linea, veremos que se tarda un tiempo, pues en este momento se está trayendo la PsSnapin de Exchange al equipo local:

Terminada la importación, podremos ya utilizar los Cmdlets de Exchange desde nuestro equipo:

Para terminar la sesión se utiliza el Cmdlet Remove-PsSession:

PS P:\> Remove-PsSession $Sesion

Ladrillo terminado :oP

7 comentarios to “Exchange 2010 Tip: Administrar con PowerShell desde un equipo sin herramientas de Exchange”

  1. Monica Rivera said

    Hola Fernando, por favor, te podrías comunicar conmigo a la dirección electrónica que te envío? Gracias

  2. When I originally commented I seem to have clicked on the -Notify me when
    new comments are added- checkbox and from
    now on every time a comment is added I recieve 4 emails with
    the exact same comment. Is there a way you are able to remove me from that service?
    Thanks!

  3. Patsy said

    always i used to read smaller posts which also clear their motive, and that is also happening with this piece of writing which I am reading at
    this time.

  4. Good day! Would you mind if I share your blog with my myspace group?
    There’s a lot of people that I think would really enjoy your content. Please let me know. Cheers

  5. Your mode of telling all in this paragraph is actually pleasant, all be capable of simply know it,
    Thanks a lot.

  6. Thanks for the marvelous posting! I certainly enjoyed reading
    it, you’re a great author.I will be sure to bookmark your
    blog and will often come back later on. I want to encourage you continue your great
    job, have a nice holiday weekend!

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

 
A %d blogueros les gusta esto: