PowerShell Para La Administración Automática De Dynamics AX 2012 (PS-II)
Table of Contents
En la primera entrega de esta serie sobre PowerShell y DevOps para Microsoft Dynamics AX 2012 hablábamos sobre los principios más básicos de PowerShell y su sintaxis. También vimos en post anteriores como PowerShell se puede usar de formas bastante creativas.
Esta vez vamos a ver los comandlets específicos para la administración de Microsoft Dynamics AX 2012, que podemos separar en varias familias:
Gestión de Modelos y la Model Store
Estos comandlets son muy importantes y van a ser la base de nuestra estrategia DevOps, combinada con los procesos builds automáticos que tendremos configurados en nuestro TFS, si es que los utilizamos.
La combinación de estos componentes va a permitirnos diseñar procesos que actualicen automáticamente nuestros entornos, orientando nuestros procesos hacia la integración o el despliegue continuo de nuestros entornos, especialmente entornos de desarrollo y/o pruebas. Hablaremos sobre esto en los siguientes posts de esta serie.
Estos son los que normalmente utilizamos para estas tareas, aunque vale la pena echar un vistazo a la referencia completa porque todos pueden ser útiles para tareas concretas o para scripts que automaticen tareas más completas:
Modelos
Comando | Descripción |
---|---|
New-AXModel | Crea un nuevo modelo en la Model Store |
Uninstall-AXModel | Elimina un modelo de la Model Store |
Install-AXModel | Importa un modelo (desde un fichero) en la Model Store |
Export-AXModel | Exporta un model de la Model Store a un fichero .axmodel |
Move-AXModel | Mueve los objetos de un modelo a otro modelo, combinando todos los objetos en este último. |
Model Store
Comando | Descripción |
---|---|
Import-AXModelStore | Importa una Model Store (desde un fichero) |
Export-AXModelStore | Exporta una Model Store a un fichero fichero .axmodelstore |
Initialize-AXModelStore | Inicializa una model store para ser utilizada. Es recomendable utilizar este comando después de algunas tareas de mantenimiento. |
Optimize-AXModelStore | Optimiza y reindexa la model store para mejorar su rendimiento. Es recomendable utilizar este comando después de algunas tareas de mantenimiento. |
Set-AXModelStore | Asigna a la Model Store ciertos flags que indican las acciones que se han realizado sobre ella. Estos flags van a influir, por ejemplo, en si se muestra o no la cabina de actualización de modelo al iniciar un cliente, y son: -InstallMode (mostrar cabina) o -NoInstallMode (no mostrar cabina) |
- Referencia: Model and model store cmdlets
Gestión y despliegue de informes y Reporting Services
La gestión de informes es otra de las tareas que podemos automatizar dentro de nuestras builds o scripts de despliegue. Aquí dejo los comandos más utilizados pero hay muchos más, consultad la referencia completa para verlos todos:
Comando | Descripción |
---|---|
Publish-AXReport | Publica un informe desde el AOS hacia el Report Rerver de SSRS. Es recomendable revisar la documentación de este comando porque tiene varios parámetros muy interesantes para desplegar informes de manera optimizada. |
Test-AXReportServerConfiguration | Comprueba la configuración y la conectividad entre el AOS y el Report Server. Este comando es útil si tenemos problemas con el despliegue o la impresión de informes, para detectar posibles configuraciones erróneas o qué partes del sistema pueden estar fallando. |
Get-AXReportServerConfiguration | Muestra la configuración actual, incluyendo la mostrada en el formulario correspondiente en Dynamics AX 2012 y algunos parámetros extra. |
Get-AXReport | Muestra información sobre el informe como la fecha de creación/modificación, el usuario que lo ha modificado, la lista de diseños, el correspondiente proyecto de Visual Studio en el AOT, etc. Este comando es muy útil sobre todo cuando se usa en scripts de despliegue pero a veces es útil también utilizado directamente en la consola para obtener información de cualquier informe que esté dando problemas. |
- Referencia: Report server management cmdlets
Gestión de usuarios y artefactos de seguridad
Otra tarea que es muy propia de su utilización tanto en consola como en scripts de automatización de tareas es la gestión de usuarios, y en el caso de AX, también de roles de seguridad.
Cabe recordar que como veremos, PowerShell no se limita al manejo de AX sino que incluye todas las funcionalidades de Windows, con lo que estos comandos se pueden utilizar junto a los propios de la gestión de Active Directory para la creación, mantenimiento y supervisión automática de los usuarios en AX en base a los cambios en el dominio.
Usuarios
Comando | Descripción |
---|---|
New-AXUser | Crea un nuevo Usuario |
Disable-AXUser | Desactiva un Usuario |
Get-AXUser | Devuelve una lista con todos los Usuarios Este comando devuelve, entre otras informaciones útiles sobre cada usuario, su SID en Active Directory, por lo que resulta el punto de enlace ideal entre la seguridad de Dynamics AX y los usuarios del dominio. |
Roles
Comando | Descripción |
---|---|
New-AXSecurityRole | Crea un Rol de seguridad |
Remove-AXSecurityRole | Elimina un Rol de seguridad |
Add-AXSecurityRoleMember | Añade un Usuario a un Rol |
Get-AXSecurityRole | Devuelve una lista con los Roles que tiene asignado un Usuario |
Get-AXSecurityRoleMember | Devuelve una lista con los Usuarios asignados a un Rol |
Get-AXSecurityRoleInfo | Devuelve información sobre todos los Roles existentes en el sistema |
- Referencia: User and role-based security cmdlets
Debo insistir en revisar la referencia completa, no tiene sentido reproducir aquí la toda la lista de comandos disponibles por eso he puesto sólo los más relevantes, pero hay muchos más y es interesante conocerlos:
No sólo de AX vive el hombre
Hasta aquí he hablado sólo de los comandlets disponibles dentro de las herramientas de administración de Dynamics AX 2012. Pero no debemos limitarnos a esto. Para realizar tareas de automatización complejas vamos a necesitar integrarnos con el resto del sistema y utilizar no sólo los comandos genéricos de PowerShell sino los que vienen con el resto de productos que utilicemos como Analysis Services, Sharepoint, Active Directory, SQL Server, servicios de Azure, … cualquier producto de Microsoft tiene su correspondiente módulo de PowerShell para interactuar con sus componentes.
Por ejemplo, hace un tiempo mostré como obtener información la información de los usuario susuarios en Active Directory desde X++, esto mismo se puede hacer desde PowerShell para ser reutilizado rápidamente por los administradores sin necesidad de abrir AX; También mostré hace tiempo cómo utilizar PowerShell para asignar nuestro usuario activo a una base de datos de AX que hemos restaurado desde otro dominio para hacernos administradores, como ejemplo de uso del módulo de SQL Server. Y así podríamos seguir…
Ejemplos de módulos que vamos a utilizar:
- Active Directory Domain Services Administration Cmdlets in Windows PowerShell
- SQL Server with Windows PowerShell Cmdlets
- Windows Azure Pack for Windows Server Automation with Windows PowerShell
El uso de estos módulos es bastante intuitivo, tras importar el módulo correspondiente con Import-Module podemos utilizar los comandlets que ya vimos en nuestra introducción a PowerShell tales como Get-Command y Get-Help para obtener cuales son los comandos disponibles y cómo utilizarlos.
Reutilizar es la clave
Como sucede con el resto de consolas y lenguajes de script, siempre hay que intentar evitar reinventar la rueda desarrollando scripts que muy probablemente alguien haya hecho antes que nosotros. Buscando en internet se pueden encontrar scripts para realizar prácticamente cualquier tarea de administración usando PowerShell.
Además, hay varias iniciativas para publicar scripts específicos para el uso con Microsoft Dynamics AX 2012, el más notable creo yo es el paquete de scripts publicado por Martin Dráb en codeplex y que incluye acciones para casi todas las fases de un despliegue automático. Prácticamente podemos montar un sistema de builds y actualización de entornos utilizando sólo PowerShell.
Puede que este paquete te sirva o puede que no, pero en cualquier caso se puede aprender mucho de ese código y es una buena base para desarrollar los tuyos propios, ya que incluye buenas ideas específicas para conectar a servidores AX. Se puede descargar aquí:
- [DynamicsAxCommunity](https://dynamicsaxbuild.codeplex.com/SourceControl/latest#Build Process/MartinDrab/PowerShell Modules/DynamicsAxCommunity/DynamicsAxCommunity.psm1) by Martin Dráb
Extra
Como nota final voy a comentar un artículo que, más que por su utilidad real, vale la pena revisar por sus posibilidades. Recordemos que desde PowerShell se pueden utilizar ensamblados de .NET y eso incluye por supuesto el .NET Business Connector de AX. En este artículo nos enseñan un ejemplo de esta utilización, tenga sentido o no ;)
Y hasta aquí esta segunda parte, que tras la primera introducción va a ser el punto de partida para desarrollar nuestros scripts de ¡DevOps para AX 2012!
Posts in this series
- PowerShell Y Los Comandos De Inicio en Dynamics AX 2012 (PS-III)
- PowerShell Para La Administración Automática De Dynamics AX 2012 (PS-II)
- Introducción a PowerShell Para Desarrolladores Dynamics AX 2012 (PS-I)