Creando usuarios con Power Shell

Se abre el telón, salgo yo en jueves santo con media empresa de vacaciones. En eso que entra un ticket mas o menos urgente que hay que resolver de un cliente con el que más o menos no trabajo habitualmente. Me conecto al entorno de desarrollo, hago el cambio y cuando voy a probarlo… ZAS! En toda la boca. Mi usuario no está creado en la base de datos. Soy administrador del servidor, del SQL, puedo tocar objetos, etc. Pero como mi usuario no esta creado en la base de datos y no tiene roles activos… en definitiva, no puedo ni llegar a listar las empresas que hay en la base de datos.

Entonces viene CMD se mete en una cabina de teléfonos, se quita las gafas de pasta y sale Power Shell! Guapooo! Salaooo! (Creo que me estoy creando un problema de la ostia si algún día decido traducir este blog).

Aquí vienen los pasos que he seguido para crear un usuario en NAV sin entrar en NAV:

  • Ponte el antifaz de malo: Un gorro de lana negro combina a la perfección. Vas a darte acceso a algo a lo que no tienes acceso. Es lo más cerca que has estado o vas a estar nunca de ser un hacker así que disfrútalo.
  • Abre Power Shell en modo Administrador: Que te voy a contar. Te vas al servidor donde tengas instalado el servicio de NAV, Botón derecho en el icono de Power Shell y ejecutar como administrador.
  • Cargar la librería de funciones de NAV: Esto es algo que se les olvida explicar a muchos blogs o manuales de ayuda de Microsoft. El primer comando que tenemos que picar sirve para agregar funciones en la sesión de Power Shell que nos permitan interactuar con NAV:

    Import-Module 'C:Program FilesMicrosoft Dynamics NAV71ServiceNavAdminTool.ps1'

    Actualización: Si este paso ta da problemas, es posible que primero tengas que permitirte usar scripts de PowerShell. He encontrado por ahí que se hace metiendo este comando:

    Set-ExecutionPolicy RemoteSigned

    Hijos míos, no hace falta que os diga que esa ruta es dónde yo he encontrado el fichero y que necesitaréis adaptarla a vuestro servidor.

  • Crea tu usuario en NAV: Con este comando estarás creando un usuario sin permisos en NAV:

    New-NAVServerUser NOMBRE_DE_LA_INSTANCIA_DE_NAV -WindowsAccount DOMINIOUSUARIO_NUEVO

    Felicidades. Ya estás en Matrix.

  • Dáte permisos: Tienes barra libre y te pides un agua del grifo? Nos vamos a dar permisos de SUPER usando este comando:

    New-NAVServerUserPermissionSet

    Verás que Power Shell te empieza a pedir los parámetros básicos como usuario, rol e Instancia.

Ya está. Seguramente ya puedes entrar. Si no, siempre puedes usar esta herramienta. No os olvidéis de sacaros el antifaz y el gorro. A la empresas no les suele gustar tener gente con antifaz junto a la máquina del café.

La importancia del nombre

Hoy he tenido una batalla con la instalación de los servicios de tercera capa de NAV 2009. Resulta que había que replicar un entorno real de aplicación con acceso a NAV a través de Microsoft Dynamics NAV Business Web Services. Después de restaurar una copia de la BBDD, replicar la aplicación y cambiar el puerto de la ruta de acceso al Web Service, me he dispuesto a crear una nueva instancia del servicio Microsoft Dynamics NAV Business Web Services. En varios foros he encontrado que la forma rápida de hacerlo consistía en duplicar la carpeta donde se encuentran los servicios de tercera capa de NAV, modificar el archivo *.config para indicarle los nuevos puertos que se van a utilizar e instalar nuevos servicios. El problema ha venido cuando, después de instalar los nuevos servicios y arrancarlos, el que en teoría tenía que ser el servicio Microsoft Dynamics NAV Business Web Services se arrancaba como un Microsoft Dynamics NAV Server. Con lo cual las dos instancias que se estaban creando eran de Microsoft Dynamics NAV Server y al arrancar la segunda daba error pues decía que el puerto utilizado ya estaba siendo utilizado. Después de muchas, muchas pruebas he dado con la siguiente página que me ha resuelto todas las dudas. En ella se explica las 4 ó 5 claves que hay que tener en cuenta a la hora de instalar los servicios y da 2 ejemplos perfectos para copiar y pegar. Después de esto, todo ha ido como la seda. En resumen lo que viene a decir la página es:

  • Lo que define si el servicio que se está creando es “Microsoft Dynamics NAV Server” o “Microsoft Dynamics NAV Business Web Services” es el nombre del servicio. Si el servicio empieza por “MicrosoftDynamicsNAVWS” estaremos instalando una instancia de “Microsoft Dynamics NAV Business Web Services”. Cualquier otra cosa, se tratará de uns instancia de “Microsoft Dynamics NAV Server”.
  • Ofrece dos ejemplos de lo que tiene que ser la línea de comandos idónea para instalar los servicios:
  1. SC CREATE “MicrosoftDynamicsNAV$Svr2” binpath= “C:Program FilesMicrosoft Dynamics NAV60Service2Microsoft.Dynamics.Nav.Server.exe” DisplayName= “MSSvr2”
  2. SC CREATE “MicrosoftDynamicsNAVWS$Svr2″ binpath= “C:Program FilesMicrosoft Dynamics NAV60Service2Microsoft.Dynamics.Nav.Server.exe $Svr2” DisplayName= “MSWSSvr2” type= share