Todas las entradas de: mmarin

Azure Service Bus Topics

Otro servicio que ofrece el Service Bus de Azure, junto con las ‘Queues’, ‘Relays’ e ‘Event Hub’ son los ‘Topics’. A diferencia de las queues, donde sólo hay un receptor, en los topics puede haber múltiples. Esto es así debido al sistema que emplea basado en suscripciones, en el cual un topic  puede tener registradas múltiples suscripciones, estando cada una asociada a un receptor. Dicho receptor solo recibirá los mensajes que hayan sido previamente filtrados por la propia suscripción, lo que permite controlar la información que llega a cada receptor atendiendo, por ejemplo, al perfil del mismo.

Instalación

El proceso de instalación o creación es el mismo que el de una Azure Service Bus Queue. Unicamente tener en cuenta que ‘Messaging Tier’ debe estar establecido como mínimo en ‘Standard’, a diferencia de las queues.
La cadena de conexión se recupera de manera análoga.

Funcionamiento

El funcionamiento es muy similar al visto para las ‘queues’, con lo que todo lo comentado para estas se aplican aquí. De esta manera, este servicio es susceptible de ser empleado con diferentes lenguajes (Java, Node.js, .NET, PHP, Ruby o Python). Para los ejemplos se empleará Python.
La gestión de los topics, así como de las suscripciones pueden hacerse asimismo desde el propio portal.

Un código de ejemplo con las operaciones básicas sería el siguiente:

Conclusiones

Como se ha visto, el funcionamiento es muy similar a las colas de Services Bus, con la diferencia fundamental del número de receptores del mensaje. Esta característica, unida a la posibilidad de establecer filtros en cada suscripción, permite un grado de versatilidad con que la anterior estructura de datos no contaba.

Herramientas Útiles

Me gustaría hablar de dos herramientas muy útiles en el día a día, que pese a su sencillez no por ello dejan de ser útiles.
Una de ellas de un emulador de terminal llamado cmder. Si bien Carlos habló en este post de otro llamado ConEmu, esta otra alternativa también resulta bastante interesante.
La otra herramienta se llama PingInfoView, y su cometido es el de realizar un ping a las máquinas que establezcamos, con lo cual se sabrá en todo momento si éstas están en línea o no.

cmder

Como se ha dicho, el cmder es un emulador de consola, lo que significa que actúa a modo de intermediario con el intérprete. Esto vendría a decir que se puede personalizar y adecuar más a las necesidades y gustos del usuario (siempre dentro de un límite). La configuración es bastante completa, permitiendo alterar diversos aspectos, desde el grado de opacidad, el tipo de fuente a emplear, pasando por la integración de diversas aplicaciones en las múltiples pestañas que se pueden desplegar, etc.
Sin duda, el grado de configruación es lo que le confiere potencia y versatilidad a este emulador de consola, si bien al principio puede resultar algo engorroso debido a la cantidad de opciones.

2016-06-19 20_34_57-Cmder

PingInfoView

Esta aplicación nos permite realizar ping a una serie de máquinas establecidas en una lista a introducir de forma manual o bien desde un archivo externo. El programa permite establecer alarmas visuales y sonoras en el caso de fallos, así como exportar informes en HTML, establecer la frecuencia de los pings, etc.

2016-06-19 20_32_00-PingInfoView

Un programa sencillo pero que cumple su cometido a la perfección.

Azure Service Bus Queues

Qué es

El Azure Service Bus Queues (ASBQ), al igual que el servicio Azure Queue Storage (se habló de el en este post) hace uso de una estructura de datos basada en cola para el envío de mensajes. A diferencia de este último, el ASBQ no requiere de una Storage Account para su funcionamiento.

Instalación

La instalación es bastante directa y sencilla. Hay que llevarla a cabo desde el portal clásico (ya que desde el portal nuevo, nos redirigirá al primero).

De este modo, en el portal clásico, hay que situarse en “Service Bus” y pinchar en “Create”. Hecho esto, aparecerá una pantalla donde se indicarán los datos del servicio.

Creando ASB 1

Se dará un namespace, el tipo será ‘messaging’, se elegirá el nivel acorde a las necesidades, así como la región (el rendimiento será mejor cuanto más cerca). Una vez creado el servicio, aparecerá en el panel.

ASB creado

Lo último que quedaría por hacer sería anotar la cadena de conexión que posteriormente se empleará en el entorno de desarrollo elegido. Para ello, hay que pinchar en el icono “Connection information”, proporcionando dicha información.

ASB connection info

Funcionamiento

Este servicio puede utilizarse mediante diversos lenguajes (Java, Node.js, .NET, etc), a modo de ejemplo se hará en Python.
La instalación de Python y su correspondiente SDK no presenta complicaciones, habiendo versión para Windows, Linux y MacOS.
Una vez instalado el SDK, ya se está en disposición de crear y eliminar colas, así como introducir mensajes y extraerlos. Cabe señalar que en el propio portal clásico se pueden crear y eliminar colas.

Un código de ejemplo en Python sería el siguiente:

Conclusiones

La modalidad que se ha visto aquí es la más simple (paso de mensajes), pero también presenta otras más elaboradas. Comparándola con la Azure Storage Queue, su utilización es si cabe más sencilla y directa, pero no tan potente y versátil. Todo depende en realidad del uso que se le dé.

Transferencia de datos utilizando Azcopy y Azure CLI

Una operación bastante común en la gestión de una cuenta de almacenamiento o Storage account en Azure es la copia de datos (se trate de un blob, fichero, etc) ya sea entre una cuenta y otra , o bien carga / descarga en local a Azure.
Estas operaciones pueden llevarse a cabo de diferentes maneras, pero aquí voy a centrarme en dos de ellas: AzCopy y Azure CLI. Decir que para los ejemplos sobre este último, se va a emplear el modo ARM, el cual se activa con:

Hay que resaltar que AzCopy resulta mucho más versátil y potente que Azure CLI, lo cual es lógico ya que es una herramienta creada específicamente para este fin, con lo cual contempla más situaciones y cuenta con más parámetros, permitiendo así una configuración mas específica. No obstante, AzCopy solo está disponible para Windows, mientras que Azure CLI es multiplataforma.

Sintaxis básica

Tanto AzCopy como Azure CLI pueden llevar a cabo la copia de blobs y ficheros.
Así, para subir un fichero a un blob y descargar todos los archivos de un blob de un container en Azure CLI en local:

Las opciones disponibles se pueden consultar acudiendo a la ayuda de Azure CLI:

Ayuda storage download Azure CLI

Por su parte, en AzCopy, para la descarga, se admiten más combinaciones más allá de la única descarga de un blob:

Y para la carga de archivos:

Respecto a la copia de blobs entre cuentas, en Azure CLI:

En AzCopy, esta misma operación puede realizarse de forma síncrona (se descarga una copia en local y esta se sube) o asíncrona (por defecto):

Llegados a este punto, a pesar de que Azure CLI también soporta la copia de archivos, al igual que AzCopy, sin embargo, este último también contempla además, otras características, por ejemplo, entre otras:

  • Importación / exportación de tablas en formato CSV o JSON.
  • Uso de un archivo de respuesta: en dicho archivo se permite especificar los parámetros al comando AzCopy, de modo que este los procesa como si hubieran indicado directamente:
  • Carpeta de archivo de diario: esta interesante funcionalidad permite reanudar operaciones inconclusas si detecta la existencia de este archivo.
  • Posibilidad de especificar el número de operaciones simultáneas a iniciar: por defecto, solo se puede llevar a cabo una operación en un mismo equipo. Esto es así para optimizar el uso de los recursos. Para realizar más de una simultáneamente, se emplearía el parámetro ‘/NC’

Conclusiones

Como se dijo al principio, AzCopy es mucho más versátil y potente a la hora de realizar copias. No hay que olvidar que el alcance de Azure CLI es la gestión de los recursos. Aún así, es perfectamente válida para las operaciones de copia habituales debido a su sencillez.

Uso y gestión de Azure IoT Hub

Introducción al Azure IoT Hub

El Azure IoT (Internet of Things) Hub es un servicio que permite gestionar, controlar y monitorizar dispositivos o unidades mediante el uso de mensajes. Cada dispositivo puede tener conectados multitud de sensores, los cuales a su vez son objeto de monitorización. Este servicio por lo tanto centraliza toda esa información, y permite su posterior tratamiento o gestión.

Creación del recurso en el portal de Azure

La creación del Azure IoT Hub es bastante sencilla y directa. Basta con seleccionar la app del menú (New > Internet of Things > Azure IoT Hub). Se rellenan los datos, y se selecciona el nivel de servicio.

Azure IoT nuevo Hub

Para este ejemplo, se ha empleado el nivel F1 Free, que sólo contempla la monitorización de una unidad y un máximo de 8000 mensajes al día.

Desde el panel de control, se muestran los datos del servicio, como el grupo de recurso al que pertenece, el hostname, el nivel de servicio contratado, etc. También se pueden ver el uso de las unidades así como su monitorización.

Azure IoH dashboard

Por otra parte, otro dato esencial para llevar a cabo la conexión desde la aplicación que se desarrolle con el Hub es la cadena de conexión, la cual se puede consultar en el icono de la llave del panel de control.

Azure IoT Keys

Aplicaciones y uso

El objetivo principal de este servicio es el control y monitorización de dispositivos o unidades mediante el uso de mensajes. Para llevar a cabo dicha tarea, existen una serie de herramientas:

  • Windows: la herramienta Device Explorer permite monitorizar todas las unidades, así como enviar y recibir mensajes desde y hacia los dispositivos. Para su configuración solo requiere indicar la cadena de conexión y la clave principal del Azure IoT Hub creado.

Device Explorer

  • Linux: en este caso se dispone del iothub-explorer, herramienta de tipo CLI que requiere de Node.js para su funcionamiento.

iothub_explorer

Ejemplo

Para ilustrar todo lo anterior, se propone un ejemplo, bajo Windows, donde un programa simula un anemómetro (representa el dispositivo), el cual envia mensajes periódicamente al IoT Hub. Con el Device Explorer se monitorizan dichos mensajes, en forma de eventos.

El código del simulador en C# es el siguiente:

Y al ejecutarse, el Device Explorer recoge los mensajes enviados del dispositivo al Hub:

Simulador anemometro 2

Conclusiones

Evidentemente, las posibilidades del Azure IoT Hub van mucho más allá de lo expuesto aquí. Supone el punto de partida para otros servicios IoT, como por ejemplo el Event Hub, el cual permite la telemetría de datos (de una manera más específica) provenientes de apps, websites o dispositivos.

Esto es todo por mi parte. Hasta el próximo post.

Gestión, uso y aplicación de Azure Storage Queue

El Azure Queue storage es un servicio cuyo objetivo consiste en el almacenamiento de un gran número de mensajes, los cuales pueden ser accedidos desde cualquier lugar a través de llamadas autenticadas mediante HTTP o HTTPS. Para llevar a cabo este almacenamiento se emplea una estructura de datos basada en la cola.

Creación de una cola en Azure

El primer paso para poder utilizar una cola de empieza por la creación de una storage account. Este proceso no conlleva dificultad alguna y es bastante dirigido. Lo primero que hay que hacer es entrar en el portal de azure, y después pulsar en New > Data + Storage > Storage Account

azure storage account 1

A continuación nos solicitarán los diversos datos de la storage account, nombre, tipo de localización, etc. Un punto muy importante a tener en cuenta es la selección del modo de creación de la cuenta: modo clásico o modo RM (resource manager), ya que la gestión y uso de las colas de momento no es posible hacerla en Powershell en modo RM, pero sí en modo clásico.

Una vez creada la cuenta, aparte de las colas, contamos con servicios de ficheros, tablas y blobs.

azure storage account 2Y entre la información que nos ofrece el panel de nuestra storage account creada sobre las colas, todo lo necesario (nombre de la cuenta, claves de acceso y cadenas de conexión) para poder acceder a este recurso externamente.

azure storage account 3

Gestión de la storage account en Powershell

Hay que diferenciar aquí lo que se puede hacer en modo clásico o modo RM. En ambos modos, se pueden llevar a cabo las siguientes operaciones sobre la cuenta:

  • Creación.
  • Eliminación.

El modo RM permite además de otras cosas, por ejemplo, regenerar la storage key de una cuenta

Uso de las colas

En lo que se refiere al uso del servicio de las colas (creación, eliminación), así como las operaciones típicas sobre estas (inserción de un mensaje, extracción…), solo es posible hacerlo en modo clásico, puesto que en el modo RM no hay cmdlet disponibles de momento para ello. En los ejemplo se muestran los mismos.

Ejemplos

Como ejemplos sencillos de creación, inserción de un elemento, extracción del mismo y eliminación de una cola, tendríamos los siguientes:

En .NET, puede actuar indistintamente sobre una storage account creada en modo clásico o RM:

En Powershell, sólo se puede utilizar una cola creada de una storage account creada en modo clásico:

Y esto es todo por mi parte. Espero haber mostrado un poco este servicio y las posibilidades del mismo.

Gestión de Azure Storage con Azure CLI

Siguiendo un poco la estela de este otro post, me gustaría hablar del tratamiento que ofrece Azure CLI respecto al almacenamiento o Storage.

Con el conjunto de comandos que Azure CLI destina a este apartado, se podrá llevar a cabo una gestión de los diferentes elementos de almacenamiento, los cuales serían los siguientes:

  • Blobs: datos no estructurados, por ejemplo archivos multimedia.
  • Colas: almacenamiento fiable de mensajes.
  • Tablas: datos NoSQL estructurados.
  • Ficheros: compartición de archivos y datos comunes, basado en el protocolo SMB.

Al igual que cuando se introdujo el Azure CLI en el anterior post, la ayuda continua todos los comandos relativos al almacenamiento. Para mostrar dicha ayuda especificando los comandos relativos al almacenamiento, bastaría con escribir:

Azure CLI storage help

Puesto que es bastante extensa, puede ser conveniente refinar más especificando con más detalle el asunto. Así, si por ejemplo se quiere mostrar la ayuda solo referente al elemento blob, entonces:

Hay dos variables importantes que hay que establecer para poder acceder a los elementos: AZURE_STORAGE_ACCOUNT y AZURE_STORAGE_ACCESS_KEY. Esta asignación se puede realizar directamente en un script o en el bash:

La clave de la cuenta (storage access key) se puede descargar desde el portal de Azure. Una vez conectados, para ver las cuentas de almacenamiento de la subscripción seleccionada basta con indicar:

con lo que mostrará todas las cuentas de almacenamiento con que cuenta esa subscripción.

Azure CLI storage account list

Para no ser demasiado exhaustivo, y puesto que la ayuda es autodescriptiva, pondré como ejemplo a los blobs y algunas de sus operaciones.

Los blobs se almacenan en contenedores. La instrucción que crea un contenedor es la siguiente:

Si se quieren ver todos los blobs que hay en un contenedor determinado, la consulta sería la siguiente:

Azure CLI blob list

Por otro lado, para descargar un blob o subirlo, las órdenes respectivas serían la siguientes:

O si se quieren copiar blobs de diferentes cuentas de almacenamiento de forma asíncrona:

y para comprobar el estado de la copia:

Finalmente, para eliminar un blob:

Con respecto a los comandos relativos a los ficheros, tablas y colas, es posible realizar las típicas operaciones sobre estos tipos de elementos (crear, eliminar, mostrar). En la ayuda de Azure CLI se muestra con detalle dichas operaciones, aparte de otras como la gestión de la políticas de acceso de ficheros, tablas y colas, por lo que no es necesario repetirlas.

Y esto es todo por ahora. Espero haber contribuido un poco al conocimiento de esta versátil herramienta.

Administración de servicios de Azure mediante CLI

Hoy voy a a hablar de la interfaz de línea de comandos de Azure, o CLI de Azure. Dicha CLI provee al usuario de una serie de comandos de código abierto basados en shell que permiten crear y administrar recursos de Azure. Esto supone la gestión de servicios y aplicaciones utilizando scripts desde la línea de comandos.

La CLI de Azure está escrita en javascript y necesita de Node.js, tecnología que permite trabajar con javascript desde el lado del servidor, empleando un modelo asíncrono y controlado por eventos.

Cabe destacar que una de las cosas hacen interesante a esta herramienta es su carácter multiplataforma. De esta forma, existen instaladores para cada una de las tres plataformas soportadas:

  • Windows
  • Mac
  • Linux

Otras dos métodos de instalación serían las siguientes:

  • Instalación previa de Node.js y npm, para posteriormente instalar Azure CLI.
  • Ejecución de la CLI de Azure como contenedor de Docker. Consistiría simplemente en ejecutar en un host de Docker ‘docker run -it microsoft/azure-cli’.

Ahondando más en la segunda forma de instalación y tomando como referencia para este post la versión para Linux, (en concreto, Xubuntu 14.04), la misma vendría dada con la instalación de tres paquetes:

Instalados estos tres paquetes, Azure CLI ya estará disponible en el sistema.
Por lo tanto, desde una ventana de consola, escribiendo ‘azure help’ mostrará información de ayuda diversa:

azure help

  • Versión de la herramienta. En este caso, la versión es 0.9.12
  • Comandos disponibles, agrupados según temática. Así, por ejemplo, para ver todos los comandos relacionados con la gestión de máquinas virtuales y las opciones aplicables, habría que indicarlo mediante el siguiente comando:

azure help vm

  • Modo de implementación seleccionado actualmente. Azure cuenta con dos modelos de implementación distintos para crear y gestionar recursos: el Administrador de Recursos (‘Azure Resource Management‘) y el Administrador de Servicios (‘Azure Service Management‘) o módo clásico. Por defecto, está seleccionado el modo clásico. Para cambiar de un modo a otro, se emplea el comando ‘azure config mode <arm|asm>’. Ambos modos son excluyentes entre sí, de manera que los recursos creados en un modo no se pueden administrar desde el otro. Entonces, si se quiere cambiar al modo de Administrador de Recursos, el comando sería:

El primer paso que hay que llevar a cabo para poder gestionar los recursos es poder acceder a los mismos. Para ello, se cuenta con tres formas de acceder a una cuenta y sus subscripciones:

  1. Accediendo a una subscripción, utilizando para ello el Directorio Activo (AD) o una Cuenta Microsoft (Microsoft Account).
  2. Mediante un archivo ‘publishsettings‘ de una subscripción descargado del portal de Azure.
  3. Mediante un certificado.

Tomando como ejemplo la segunda forma, habría que descargar el archivo publishsettings con un navegador e importarlo. Para llevar a cabo esto, se ejecutaría lo siguiente:

Con lo que se abriría la página del navegador (si no lo hiciera, basta con seguir el enlace que se indica), se introducirían las credenciales de la cuenta y se descargaría el archivo. A continuación, se importaría con el comando:

Una vez importado, el archivo se puede eliminar. Si hay otros archivos publishsettings que importar, los pasos a seguir son los mismos. Para ver todas las subscripciones que han sido importadas:

donde se mostrarán el nombre de la subscripción, su id, si está o no actualmente seleccionada, y el estado.

Para seleccionar una subscripción determinada y así poder gestionarla:

Y a partir de este momento, ya se pueden administrar los recursos de esa subscripción seleccionada. Por ejemplo, para ver una lista de las máquinas virtuales:

O se quiere crear un regla de firewall para una base de datos:

Por supuesto, todos los comandos de Azure CLI son susceptibles de ser incluidos en un script, con lo cual posibilita la automatización de ciertas tareas que pueden resultar pesadas, sobre todo si no se tiene acceso a Powershell.

Y esto es todo por ahora. Espero que este post haya servido para, por lo menos, dar una rápida visión de esta interesante herramienta.

Comandos útiles en Powershell

Me gustaría hablar en este post de algunos comandos que, ya sea por necesidad o simplemente por curiosidad, uno se va encontrando por el camino. Son los siguientes:

Envío de mensajes de correo con archivos adjuntos (solo para Powershell v5)
Una funcionalidad interesante es la posibilidad de que un script pueda enviar un mensaje de correo electrónico con uno o más archivos adjuntos.
Cabe destacar que este cmdlet solo está disponible para Powershell v5. Los parámetros básicos que hay que indicarle son bastante intuitivos:

 

Creación de un trabajo o job en el planificador de tareas
Si bien esto se puede realizar directamente con el interfaz gráfico del propio planificador de tareas, la posibilidad de creación o eliminación dinámica de un job mediante Powershell puede ser bastante útil, sobre todo en el caso de integrarla en un script.
La ejecución de un job requiere de cuatro elementos principales:
a) El elemento que se va a lanzar, que puede ser un ejecutable, un batch o un script.
b) Los argumentos que empleará dicho elemento, separados por comas.
c) El disparador o ‘trigger’, evento que actúa de detonante en la ejecución del job. Por ejemplo, una hora concreta de un dia determinado.
d) Las opciones adicionales del propio job.

Algo a señalar es que, si hay que eliminar un job existente y éste ha sido creado con el anterior comando, es recomendable hacerlo con este otro:

ya que si bien es posible hacerlo con el interfaz gráfico del planificador de tareas, posteriormente al utilizar comandos Powershell relacionados con esto, por ejemplo Get-ScheduledJob, se puede producir un mensaje de error.

Alerta sonora
Un complemento a una alerta visual (como un mensaje o aviso), puede ser la emisión de algún tipo de sonido. Esto puede ser interesante a la hora de introducir algún tipo de alerta sonora para indicar algún evento relevante, como por ejemplo que se ha encontrado algo o la misma finalización de un script.

En su forma más simple, se puede indicar el código de control correspondiente a la alerta, mediante el siguiente comando:

Esto puede servir para indicar un tipo de evento, pero es bastante limitado. Sin embargo, es posible reproducir sonidos del sistema o incluso archivos con extensión .wav. No hace falta decir que esta última forma es que la que gana en versatilidad al resto

 

Uso de un puerto serie
Aunque de por sí el puerto serie en sí puede estar en desuso, sin embargo nunca ha dejado de utilizarse. Así, por ejemplo, se emplea para comunicarse con microcontroladores diversos. La conexión se puede llevar a cabo mediante una conexión física y empleando, al menos, las tres señales mínimas (TxD, RxD, GND) sin control de flujo, o incluso una conexión inalámbrica empleando Bluetooth. Bluetooth suporta múltiples perfiles, y uno de ellos es el SPP (Serial Profile Port), el cual a efectos prácticos lo hace comportarse como un puerto serie estándar.

 

Y esto es todo por ahora. Espero que alguien pueda sacar provecho de alguno de estos cmdlet para dotar de más funcionalidad a algún script de Powershell.

Uso de la API administrada de Exchange Web Services

En este artículo me gustaría hablar de la API administrada de Exchange Web Services.
La API gestionada o administrada de Exchange Web Services (EWS) permite el desarrollo, de una manera simple y completa, de aplicaciones cliente que hagan uso de los EWS. De este modo, gracias a esta API, se pueden acceder a los EWS en Office365, Exchange Online y las versiones de Exchange a partir de Exchange Server 2007 Service Pack 1.
Dicha API se puede utilizar mediante lenguaje de programación C# o directamente con Powershell.

Alguna de las cosas que se pueden hacer con esta API son:

  • Crear, enviar o responder mensajes de correo.
  • Buscar carpetas, mensajes, reuniones y tareas.
  • Gestionar elementos del calendario.
  • Utilizar el servicio de Autodiscover para una cuenta de correo, y obtener así la configuración del usuario y dominio inherentes a la misma, necesaria para establecer una conexión con el servidor Exchange.

Otros usos más avanzados incluirían sincronización, tratamiento de listas de distribución o conversaciones.

A modo de esbozo, cabe destacar que todos los métodos y tipos empleados en la API se enmarcan en tres namespaces:

  1. Microsoft.Exchange.WebServices.Auth.Validation: contiene tipos y métodos empleados para validar los tokens de identidad del usuario enviados desde un servidor Exchange. Solo aplicables a Exchange Online o Exchange Server 2013 en adelante. Este namespace está incluido en la API Microsoft.Exchange.WebServices.Auth.dll.
  2. Microsoft.Exchange.WebServices.Autodiscover: incluye tipos empleados en la comunicación con el servicio Autodiscover alojado en un servidor Exchange. Proporciona básicamente información de configuración a los clientes EWS, lo que habilita a estos a dirigirse al servicio URL apropiado. Al igual que el otro namespace, está incluido en la API Microsoft.Exchange.WebServices.dll.
  3. Microsoft.Exchange.WebServices.Data: proporciona la base de la funcionalidad de la API. Contiene tipos usados en la comunicación con un servidor Exchange a través de EWS.

Para utilizar la API se necesita de lo siguiente:

  • Una versión de dicha API. Se utilizará la versión 2.2 (última versión disponible en el momento de escribir este artículo). Requiere una instalación.
  • Un cuenta de correo en un servidor Exchange (cualquiera de las versiones anteriormente nombradas) con sus correspondientes credenciales.
  • La versión de .NET Framework debe ser igual o superior a la 3.5.

Para dar un pequeño sentido práctico a lo dicho, se muestra a continuación como se llevaría cabo la activación/desactivación del mensaje Out Of Office (OOF) tanto en Powershell como en C# utilizando la API (aquí se explicó como realizarlo en Powershell mediante cmdlet directo):

Y empleando C#, el modo de hacerlo sería el siguiente:

Como puede verse,  el uso de la API es directo en ambos casos.
Y esto es todo por ahora. Espero que este ejemplo, aunque sencillo, sirva para ilustrar la sencillez de uso de esta versátil e interesante API.