Archivos de la categoría: Powershell

Error al usar el cmdlet Uninstall-CSDatabase

Hola Mundo:

Cualquier proceso de migración va en la recta final cuando te pones a quitar por completo la antigua
versión.

En el caso de Lync, en una migración de la versión 2010 a la versión 2013, ya los últimos pasos son cuando migras el Central Management Store y desinstalas la base de datos antigua.
Hay un comando que sirve justamente para este propósito. El cmdlet (de Powershell) es Uninstall-CsDatabase.

El cmdlet tiene un montón de parámetros que no los tocaremos ahora. Siempre Technet lo explica mejor que yo: http://technet.microsoft.com/en-us/library/gg412922.aspx

Lo normal, es que siempre que se ejecute la herramienta, termine con un mensaje parecido a este para indicar que todo terminó de forma correcta:

Pero hay veces que termina así:

—————
Exit code: ERROR_ALLOW_DATABASE_ACCESS (-22)
—————
Ok. Que no cunda el pánico. Si esto ocurre es porque:

  1. La cuenta que estás usando no es administrador del SQL Server
  2. La cuenta que estás usando no es administrador local de la máquina de Lync
  3. La cuenta que estás usando no es una cuenta de dominio.
Cumpliendo los 3 puntos, la cosa funcionará.
Chau

Agregar direcciones a una casilla en Exchange 2013 a través de Powershell

Hola Mundo:

Cada casilla de correo, en cualquier plataforma, puede tener distintas direcciones de correo

electrónico.

Exchange 2013 incluye esta característica y, además, es configurable a través de la interfaz web. Es bastante cómodo cuando es para un solo usuario y solo un par de direcciones y no lo es para cuando son 700 y debe hacerse a través de un script.
Para completar esta acción se debe hacer a través de la consola Powershell para Exchange 2013.

Bien. Supongamos que tenemos un CSV (llamado archivo.csv) con la información que se requiere y se tiene en el siguiente formato:

alias, emailaddresses 
usuario1,”usuario1@midominio1.com,usuario1@midominio2.com” 
usuario2,”usuario2@midominio1.com,usuario2@midominio2.com” 
usuario3,”usuario3@midominio1.com,usuario3@midominio2.com” 
usuario4,”usuario4@midominio1.com, usuario4@midominio2.com”

Se tiene 4 usuarios y cada usuario tiene 3 direcciones de email asociadas a su casilla. Es importante que las cuentas estén creadas antes de poder asociar más direcciones de correo electrónico  a las casillas. Entonces si las cuentas ya están creadas, no queda más que modificarlas usando el cmdlet Set-Mailbox

El cmdlet Set-Mailbox tiene un parámetro -EmailAddresses donde se indican todas las direcciones de correo electrónico que están asociadas a la casilla. Tiene un tipo de datos especial, por lo que hay que trabajarlo en el script para que pueda convertirlo de forma simple el valor (o los valores) que le entreguemos.

Entonces el script quedaría así:

Import-Csv "archivo.csv" | ForEach-Object {

$correos = $_."emailaddresses" -split ','

Set-Mailbox -Identity $_."alias" -EmailAddresses @{add=$correos}


}

De esta forma, le estaría diciendo al sistema que tengo un set de direcciones de correos electrónicos, separados por una coma, para la casilla identificada con el alias.

¡Chau!

Tips de Powershell para Exchange 2013

Hola Mundo:

¡Que maravilloso que los productos tengan su consola de Powershell! Es muy bueno como se puede automatizar y administrar a través de estas herramientas. Ahora, no es nuevo. Desde la versiones anteriores de Windows y los productos que se puede hace scripting con VBScript y en los derivados de Unix se tiene la poderosa Shell.
¿Cuál es la ventaja de Powershell? La orientación a objetos y la integración con .NET.
De todas formas, no pretendo hablar largo de los lindo que es Powershell. El objetivo es dejar anotados ciertas líneas muy útiles  y que las he usado harto estos días en el trabajo. 

Eliminar todos los usuarios

$mailbox = Get-Mailbox
Foreach($cuenta in $mailbox){Remove-Mailbox -Identity $cuenta.Alias -Permanent $true -Confirm:$Y}

Eliminar todos los contacto

$contactos = Get-MailContact
Foreach($contacto in $contactos){Remove-MailContact -Identity $contacto.Alias -Confirm:$Y}

Eliminar todos los grupos

$grupos = Get-DistributionGroup
Foreach($grupo in $grupos){Remove-DistributionGroup -Identity $grupo.Alias -Confirm:$Y}

Nada más copiar y pegar.

Chau!