Aplicación Azure Functions y módulos personalizados de PowerShell

Azure Functions es un servicio que permite a los desarrolladores escribir código sin tener que preocuparse por la infraestructura de la aplicación. El uso de la aplicación de características de Azure tiene dos ventajas principales:

Debido a que Microsoft proporciona la infraestructura subyacente como parte del servicio de la aplicación Azure Functions, los desarrolladores solo tienen que diseñar el código sin tener que implementar o administrar explícitamente la infraestructura subyacente. Puede ejecutar su código como un script de PowerShell e implementarlo en las tareas programadas. Sin embargo, todavía dependen de la máquina virtual o del lugar donde se ejecuta la tarea programada.

Además de ejecutar C #, Java y otros lenguajes compatibles, el servicio de la aplicación Azure Functions también admite la ejecución de cmdlets de PowerShell. Puede crear su script de PowerShell y ejecutarlo como parte de la aplicación Azure Functions. Sin embargo, los desarrolladores tienen el desafío de ejecutar el código que desean. Por ejemplo, si diseñó un script de PowerShell que utiliza módulos personalizados que se desarrollaron internamente, la aplicación Azure Functions no puede importar e instalar automáticamente módulos personalizados para usted.

Hay algunas cosas a tener en cuenta al usar la aplicación Azure Functions para PowerShell:

Funciones estándar de script de PowerShell

Cuando crea una aplicación Azure Functions, se crea un script estándar de PowerShell llamado Run.PS1 y un archivo JSON llamado Function.JSON. Su código está en "Run.PS1". Se ejecuta cuando se produce un desencadenante o cuando alguien llama a la API REST mediante llamadas a la API REST o el cmdlet de PowerShell "Invoke-RestMethod". La configuración predeterminada "Run.PS1" se encuentra en el directorio de trabajo D: \ Home \ Site \ wwwroot \ {FunctionName}.

Directorio estándar para funciones

Solo puede trabajar con el directorio para el que tiene derechos. Cuando crea características de Azure con el servicio de la aplicación Características de Azure, el proceso crea un directorio en D: \ Home \ Site \ wwwroot \ {nombre de característica}. Como puede ver en la captura de pantalla a continuación, creé una función llamada HttpTriggerPowerShell y la aplicación Azure Functions creó una carpeta donde puedo trabajar.

Características de Azure

Todos sus archivos, como los archivos Run.PS1 y Function.JSON, están en el directorio {Nombre de la función} como se muestra en la captura de pantalla a continuación. También puede crear archivos personalizados si es necesario. Como puede ver en la captura de pantalla a continuación, creé un archivo llamado "ss.txt" con el comando "Echo Test> SS.txt".

Además del directorio D: \ Home \ Site \ wwwroot \ {function name}, también tiene acceso al directorio D: \ Local \ Temp. La aplicación Azure Functions usa este directorio para almacenar archivos temporales durante el proceso de ejecución.

Módulos estándar de PowerShell

De manera predeterminada, la aplicación Azure Functions viene con módulos PowerShell estándar para los servicios de Azure, incluidos los módulos de Azure Resource Manager, Azure Site Recovery y sitios web de Azure, y módulos estándar de Windows PowerShell como App Locker, Appx y BitsTransfer. Si desea ver los módulos de PowerShell que vienen con la aplicación Azure Functions, simplemente ejecute el comando "PowerShell.exe Get-Module -ListAvailable" en la pestaña "Consola" como se muestra en la siguiente captura de pantalla:

Características de Azure

Sin consola PowerShell

Tenga en cuenta que la aplicación Azure Functions no proporciona una ventana de consola de PowerShell en la que los comandos de PowerShell se pueden ejecutar directamente como en su computadora de escritorio. El Run.PS1 siempre lo ejecuta PowerShell.exe, que está disponible como parte de la función. Si necesita ejecutar un comando de PowerShell, debe usar PowerShell.exe. Por ejemplo, para ejecutar un comando de PowerShell para enumerar los módulos de PowerShell, ejecute PowerShell.exe Get-Module -ListAvailable. Si desea ejecutar otro comando de PowerShell que ya está cargado como parte de los módulos estándar, use "PowerShell.exe" antes del comando.

Los módulos de PowerShell no se pueden instalar usando el módulo de instalación

Tenga en cuenta que no puede instalar módulos PowerShell como en su computadora de escritorio con "Install-Modules". Por ejemplo, si intenta instalar un módulo de PowerShell que no está disponible como parte de la lista estándar de módulos de PowerShell, aparece el siguiente mensaje de error:

Como puede ver en la captura de pantalla anterior, estoy tratando de instalar módulos PowerShell para Azure Windows Virtual Desktop. Sin embargo, el comando devuelve el error "Se requieren derechos de administrador para instalar módulos". Esto se debe a que, de forma predeterminada, Install-Modules se dirige al directorio de entorno de PowerShell que se instalará en los módulos. Como se indicó anteriormente, no tiene acceso al directorio de entorno de PowerShell que no sea D: \ Home \ site \ wwwroot \ {nombre de función} y D: \ Local \ Temp directorios. Incluso si intenta instalar módulos PowerShell o guardar paquetes como parte de Run.PS1, verá un mensaje similar al que se muestra en la captura de pantalla anterior.

Agregue módulos personalizados en la aplicación Azure Functions

Si desea agregar módulos de PowerShell personalizados que su script utiliza para realizar varias comprobaciones, debe cargar los módulos desde FTP. No hay otra forma de cargar módulos personalizados que cargar módulos accediendo al FTP de la aplicación Function. Para cargar los módulos personalizados en una función de Azure, debe configurar una cuenta de servicio para acceder a FTP para las funciones de Azure y luego cargar los módulos en D: \ Home \ Site \ wwwroot \ {nombre de la función}.

Debido a que la aplicación de características de Azure se creó con el servicio de aplicaciones web de Azure, todas las opciones, como B. Opciones de implementación disponibles. Por ejemplo, puede configurar las credenciales de implementación, que a su vez se pueden usar para cargar módulos al FTP de la aplicación Function.

Para configurar las credenciales para la implementación, haga clic en "Configuración de funciones" (vea el cuadrado rojo en la siguiente captura de pantalla):

Características de Azure

A continuación, vaya a Configuración del Servicio de aplicaciones para configurar las credenciales de implementación. En el cuadro de diálogo Nombre de usuario y contraseña de FTP, ingrese el nombre de usuario y la contraseña de FTP y guarde la configuración. Una vez que se guardan las configuraciones de FTP, puede conectarse al FTP de la aplicación de funciones y cargar sus módulos PowerShell.

Asegúrese de cargar los módulos de PowerShell en el directorio D: \ Home \ Site \ wwwroot \ {function name}. Al probar la carga de módulos PowerShell a la aplicación de función, creé una carpeta bajo {nombre de función} con el nombre "RDSModules" y luego cargué módulos RDS a través de FTP. Cargué módulos RDS PowerShell en D: \ Home \ Site \ wwwroot \ HttpTriggerFunction \ RDSModules.

Cargue módulos personalizados desde la aplicación Azure Functions

Después de cargar los módulos de PowerShell accediendo al FTP de la aplicación de función en D: \ Home \ Site \ wwwroot \ {function name}, vaya a Azure Portal> expanda la función y escriba los siguientes comandos en su Run.PS1 -Presentar un:

Módulo de importación D: \ Inicio \ Sitio \ wwwroot \ HttpTriggerFunction \ {RDSModules}

Debe reemplazar el directorio "RDSModules" con el nombre de la carpeta del directorio de su módulo en el comando anterior.

Debería poder importar módulos con el comando anterior y usar los cmdlets de PowerShell que vienen con los módulos RDS.

Imagen seleccionada: Shutterstock

La aplicación de características Post-Azure y los módulos PowerShell personalizados aparecieron por primera vez en TechGenix.

Comentarios