Introducción al Scripting con PowerShell en Exchange Server 2007 Rubén Loma-Osorio Ingeniero de Soporte rubenlo@microsoft.com David Cervigón IT Pro Evangelist David.Cervigon@microsoft.com http://blogs.technet.com/davidcervigon 1
¿Qué vamos a ver? Uso de comandos básicos de la Shell de Gestión de Exchange Cómo crear scripts para automatizar tareas Cómo generar informes
Agenda Introducción a la Shell de Gestión de Exchange Trabajando con la Shell Automatización de tareas Generación de informes
Modelo de administración Interfaz gráfica Línea de comandos WinForms PowerShell Data Provider PowerShell Engine Exchange cmdlets Frontera entre procesos E2007 Store AD Registro
Introducción a la Shell Lenguaje de script robusto para automatizar tareas de administración Está construida en base a la tecnología PowerShell de Windows. Extiende la funcionalidad de la consola de Administración de Exchange Posibilidad de automatizar tareas y realizar operaciones masivas. Permite a los administradores escribir scripts seguros.
Introducción a la Shell Orientada a objetos Uso de espacio de nombres para agrupar comandos y objetos Concatenación de comandos Acceso a los comandos de la consola CMD Protección ante scripts que no son de confianza
¿Por qué usar la Shell? Comandos completos en una línea Acceso a todas las propiedades de los objetos Validación de comandos con “Whatif” También es interactivo
Agenda Introducción a la Shell de Gestión de Exchange Trabajando con la Shell Automatización de tareas Generación de informes
Estructura de la Shell MSH> get-mailbox –server “smbex01” Nombre Valor Verbo Nombre MSH> get-mailbox –server “smbex01” Comando Parámetro Nombre de las propiedades Valor de las propiedades Name Alias Server StorageQuota ---- ---- ------ ------------ Bob Kelly bobk smbex01 unlimited Kim Akers kima smbex01 unlimited
Ayuda get-help get-help get-mailbox get-excommand
Concatenación de comandos get-mailbox | where-object {$_.name -ilike "a*" }
Operadores ilike / inotlike eq / ne gt / lt
Whatif get-mailbox | where-object {$_.servername -eq “smbex01"} | move-mailbox –targetdatabase "smbex02\Mailbox Store" -whatif
Demo Demo Usando la Shell Obtener ayuda Comandos básicos Uso de operadores
Dando formato al resultado de la ejecución de un comando Sort-Object Format-List Format-Table sort-object name, alias format-list name, alias format-table name, alias
Demo Demo Formato de salida Ordenar objetos Tablas y listas Formato avanzado
Agenda Introducción a la Shell de Gestión de Exchange Trabajando con la Shell Automatización de tareas Generación de informes
Comparación con Exchange 2003 Exchange 2003 (VBScript) E12 (PoweShell Script) Estadísticas de buzones Set listExchange_Mailboxs = GetObject("winmgmts:{impersonationLevel=impersonate}!\\COMPUTERNAME\ROOT\MicrosoftExchangeV2").InstancesOf("Exchange_Mailbox") For Each objExchange_Mailbox in listExchange_Mailboxs WScript.echo "AssocContentCount =” + objExchange_Mailbox.AssocContentCount WScript.echo " DateDiscoveredAbsentInDS =” + objExchange_Mailbox.DateDiscoveredAbsentInDS WScript.echo " DeletedMessageSizeExtended =” + objExchange_Mailbox. DeletedMessageSizeExtended WScript.echo " LastLoggedOnUserAccount =” + objExchange_Mailbox. LastLoggedOnUserAccount WScript.echo " LastLogoffTime =” + objExchange_Mailbox. LastLogoffTime WScript.echo " LastLogonTime =” + objExchange_Mailbox. LastLogonTime WScript.echo " LegacyDN =” + objExchange_Mailbox. LegacyDN WScript.echo " MailboxDisplayName =” + objExchange_Mailbox. MailboxDisplayName WScript.echo " MailboxGUID =” + objExchange_Mailbox. MailboxGUID WScript.echo " ServerName =” + objExchange_Mailbox. ServerName WScript.echo " Size =” + objExchange_Mailbox. Size WScript.echo " StorageGroupName =” + objExchange_Mailbox. StorageGroupName WScript.echo " StorageLimitInfo =” + objExchange_Mailbox. StorageLimitInfo WScript.echo " StoreName =” + objExchange_Mailbox. StoreName WScript.echo " TotalItems =” + objExchange_Mailbox. TotalItems Next get-mailboxstatistics –server $servername Gestión BBDD Dim StorGroup as New CDOEXM.StorageGroup StorGroup.DataSource.Open "LDAP://" + DCServer + "/ CN=First Storage Group,CN=InformationStore,CN=" + Server + ",CN=Servers,CN=First Administrative Group, CN=Administrative Groups,CN=First Organization, CN=Microsoft Exchange,CN=Services, CN=Configuration," + DomainName StorGroup.MoveLogFiles("C:\newlogPath", 0) move-storagegrouppath -identity “First Storage Group“ –log "C:\newlogPath” Gestión buzones Dim objMailbox As CDOEXM.IMailboxStore Set objMailbox = GetObject("LDAP://" + DCServer + "CN=FOO,CN=users," + DomainName) objMailbox.CreateMailbox "LDAP://" + DCServer + "/CN=Private MDB,CN=First Storage Group,CN=InformationStore,CN=" + Server + ",CN=Servers,CN=First Administrative Group, CN=Administrative Groups,CN=First Organization, CN=Microsoft Exchange,CN=Services, CN=Configuration," + DomainName enable-mailbox -identity domain\FOO –database “First Storage Group\Private MDB”
Automatizando la gestión Los scripts pueden ser llamados desde código manejado en .NET como VB o C# (por ej. GUI) Scripts de aprovisionamiento automático para Exchange: Creación de Grupos de Almacenamiento Utilización de ficheros .csv como entrada para crear usuarios en el DA Activar buzones de los usuarios Fichero .csv de salida con usuarios y passwords generados Ejemplos disponibles en Script Center
Demo Demo Tareas administrativas Crear y mover buzones Crear y gestionar almacenes
Cambios masivos mediante programación Resultados de un comando como parámetro del siguiente comando: Lista todos los buzones de una BD y muévelos a otra Creación de objetos similares con bucles: Crea 5 BBDD con un nombre = Prefijo + n Cambiar la configuración de múltiples objetos: Incrementa la cuota de los usuarios afectados por las políticas de retención de información Integración en el Directorio Activo: Activar el auto copiado de mensajes a todos los usuarios del Edificio 34 (propiedad en DA)
Script para mover buzones 1 param( [string]$server = $(read-host “Servidor de Destino")) new-storagegroup GrupoAlmac1 -server $server | out-null new-mailboxdatabase BaseDatos1 –storagegroup $server\GrupoAlmac1 | mount-database new-mailboxdatabase BaseDatos2 –storagegroup $server\GrupoAlmac1 | mount-database write-host “Bases datos creadas y montadas" 22
Script para mover buzones 2 # obtenemos los buzones con más elementos $mbxset = (get-mailboxstatistics –server mbx-1 | sort TotalItemCount -desc)[0..49] $mbxset | foreach{get-mailbox $_.LegacyDN} | where {$_.Database -like “Finanzas*"} | move-mailbox -targetdatabase server\BaseDatos1 | out-null write-host “Buzones de finanzas movidos" 23
Script para mover buzones 3 $mbxset | foreach{ get-mailbox $_.LegacyDN } | where {$_.Database -like “Marketing*"} | move-mailbox –targetdatabase $server\BaseDatos2 | out-null write-host “Buzones de marketing movidos" 24
Entorno de scripting seguro Existen tres niveles de seguridad Nivel por defecto: solo se ejecutan scripts creados y firmados localmente Ficheros.msh no se ejecutan automáticamente
Demo Demo Bucles Foreach
Demo Demo Scripts Script de aprovisionamiento
Agenda Introducción a la Shell de Gestión de Exchange Trabajando con la Shell Automatización de tareas Generación de informes
Informes Los objetos de scripting de Exchange son exportables a ficheros .csv: Utilizables para generar informes Utilizables para manipular e importar información de nuevo hacia Exchange Resultados de los comandos se pueden visualizar en distintos formatos: .csv html gráficos tipo chart Comandos para verificar el estado del sistema
Demo Demo Informes sobre el sistema Verificación de estado del sistema Generación de informes
Resumen de la sesión Introducción a la Shell de gestión de Exchange Trabajando con la Shell Automatización de las tareas de administración Generación de informes
Para más información: Exchange Server 2007 Beta 2 Technical Library: http://www.microsoft.com/technet/prodtechnol/exchange/2007/library/default.mspx Nuestra serie de Webcasts sobre Exchange Server 2007 Subscríbete a nuestro RSS de próximas Webcasts que encontraras en: http://www.microsoft.com/spain/technet/jornadas/default.mspx Nuestros Eventos de lanzamiento de Vista, Exchange 2007 y Office System 2007: Subscríbete a nuestro RSS para ver las fechas y ciudades que visitaremos: http://www.microsoft.com/spain/technet/jornadas/default.mspx Suscríbete a la Newsletter de Technet para estar al tanto de nuestras actividades: http://www.microsoft.com/spain/technet/boletines/default.mspx Mi blog: http://blogs.technet.com/davidcervigon
Disponibilidad de las Betas Públicas de Exchange 2007 http://www.microsoft.com/technet/prodtechnol/beta/default.mspx http://www.microsoft.com/technet/prodtechnol/exchange/2007/downloads/es/beta.mspx Y por supuesto.... Todos los productos y Betas disponibles a través de la suscripción a TechNet Plus: http://www.microsoft.com/spain/technet/recursos/cd/default.mspx
Rubén Loma-Osorio David Cervigón 3/24/2017 3:58 PM Ingeniero de Soporte rubenlo@microsoft.com David Cervigón IT Pro Evangelist David.Cervigon@microsoft.com http://blogs.technet.com/davidcervigon © 2006 Microsoft Corporation. All rights reserved. Microsoft, Windows, Windows Vista and other product names are or may be registered trademarks and/or trademarks in the U.S. and/or other countries. The information herein is for informational purposes only and represents the current view of Microsoft Corporation as of the date of this presentation. Because Microsoft must respond to changing market conditions, it should not be interpreted to be a commitment on the part of Microsoft, and Microsoft cannot guarantee the accuracy of any information provided after the date of this presentation. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.