Exchange Server 2007

lunes, 4 de diciembre de 2006

Introducción al Power Shell de Exchange 2007

Introducción

Hoy veremos una de las funcionalidades mas esperadas (sobre todo para los desarrolladores y programadores) el power shell de Exchange 2007.
En versiones anteriores, por ejemplo para crear un buzón teníamos que recurrir a Visual Basic Script con llamadas a componentes COM o complejos procedimientos para realizar esta tarea. Ahora disponemos de un conjunto de nuevos comandos que nos facilitaran su manipulación por línea de comandos sobre todo cuando tenemos que realizar una tarea repetitiva varias veces.



Manos a la obra

Cuando instalamos exchange 2007, uno de los requisitos que tendremos que instalar previamente es el Microsoft Command Shell (MSH):



Para instalarlo, previamente tendremos que descargarlo:

Cuando iniciamos el shell vemos lo siguiente:

Tal indica, podemos ver el listado completo de comandos ejecutando get-command y los comandos específicos de Exchange con el comando get-excommand.

Ejecutamos get-excommand y nos muestra el listado completo:
CommandType Name Definition
----------- ---- ----------

Cmdlet Add-ADPermission Add-ADPermission [-Identity]...
Cmdlet Add-AttachmentFilterEntry Add-AttachmentFilterEntry [-...
Cmdlet Add-AvailabilityAddressSpace Add-AvailabilityAddressSpace...
Cmdlet Add-ContentFilterPhrase Add-ContentFilterPhrase [-Ph...
Cmdlet Add-DistributionGroupMember Add-DistributionGroupMember ...
Cmdlet Add-ExchangeAdministrator Add-ExchangeAdministrator [-...
Cmdlet Add-IPAllowListEntry Add-IPAllowListEntry -IPRang...
Cmdlet Add-IPAllowListProvider Add-IPAllowListProvider [-Na...
Cmdlet Add-IPBlockListEntry Add-IPBlockListEntry -IPRang...
Cmdlet Add-IPBlockListProvider Add-IPBlockListProvider [-Na...
Cmdlet Add-MailboxPermission Add-MailboxPermission [-Iden...
Cmdlet Add-PublicFolderPermission Add-PublicFolderPermission [...


Si queremos obtener ayuda de un comando en concreto lo haremos a través del comando help:

Vale todo esto está muy bien pero ¿como creo por línea de comandos un buzón por ejemplo?
Lo primero que debemos saber es en que base de datos de buzones vamos a crear nuestro buzón. Lo sabremos con el comando Get-MailboxDatabase:


[MSH] C:\>Get-MailboxDatabase
Name Server StorageGroup RestoreDatabase
---- ------ ------------ ---------------
Mailbox Database DCEX2007 First Storage Group False
Mailbox Database DCEX2007 Recovery Storage ... True
Podemos ver que nuestra base de datos es First Storage Group\MailBox Database
Por lo tanto crearemos un buzón de la siguiente forma:
new-Mailbox -alias "kenmyer" -name KenMyer –userprincipalname kenmyer@fabrikam.com -database " First Storage Group\MailBox Database"
Listo! En este caso el usuario debe existir pero no necesariamente. También podemos crear el buzón y el usuario a la vez:


[MSH] C:\>New-Mailbox
cmdlet New-Mailbox at command pipeline position 1
Supply values for the following parameters:
Password: ************
Database: First Storage Group\Mailbox Database
UserPrincipalName: kenmyer@fabrikam.com
Name: KenMyer
OrganizationalUnit: Users
Name Alias Server ProhibitSendQuota
---- ----- ------ ---------------
Julian Julian dcex2007 unlimited
También lo podréis automatizar pero ya será necesario crear un script de varias líneas para ello.
Crearemos un fichero llamado CrearBuzon.msh que contendrá las siguientes líneas:


function New-SecureString([string] $plainText)
{
$secureString = new-object System.Security.SecureString
foreach($char in $plainText.ToCharArray())
{
$secureString.AppendChar($char)
}
$secureString
}
$ss = new-securestring "Exchange2007"

$upn = "Alvaro@nwtraders.msft"

new-mailbox -Password $ss -Database "First Storage Group\Mailbox Database" -UserPrincipalName $upn -Name "Alvaro" -OrganizationalUnit "Users


Lo ejecuraremos desde la shell de la siguiente forma:

Vemos que nos ha creado correctamente el usuario Alvaro y además nos ha creado un buzón en el servidor DCEX2007.
Os preguntareis ¿Para que es necesaria la funcion New-SecureString?
La necesitamos para pasarle como parámetro al comando New-Mailbox la password del usuario de forma cifrada. Sino la función no lo acepta directamente. Veamos lo que sucede si no se la mandamos cifrada:

[MSH] C:\ >New-Mailbox -Password "Pepito2007" -Database "First Storage Group\Mailbox Database" -UserPrincipalName Julian@nwtraders.msft -Name Julian -OrganizationalUnit Users

New-Mailbox : Cannot bind parameter 'Password'. Cannot convert value "Exchange2007" to type "System.Security.SecureString". Error: "Invalid cast from 'System.

String' to 'System.Security.SecureString'."
At line:1 char:22

+ New-Mailbox -Password <<<< Exchange2007 -Database "First Storage Group\Mailbox Database" -UserPrincipalName Julian@nwtraders.msft -Name Julian -OrganizationalUnit Users

Por el momento esto es todo. Próximamente veremos muchos mas comandos sobre este potentísimo shell. Hasta pronto!

No hay comentarios.: