PLATAFORMA

Vuestro PowerShell, convertido en autoservicio con permisos.

RealmJoin sincroniza una biblioteca revisada de 175 runbooks con vuestra propia cuenta de Azure Automation, construye un formulario para cada script y decide quién puede ejecutar qué. Cada trabajo deja un registro.

  • 175 runbooks, de código abierto
  • Se ejecutan en vuestra suscripción de Azure
  • Permisos hasta el nivel del grupo de destino
  • Nuevos runbooks cada mes
Report sent to it-licensing@contoso.com. Example data.

175 runbooks que no tenéis que escribir

La biblioteca es de código abierto en GitHub. RealmJoin la sincroniza con vuestra cuenta de Automation, la mantiene al día a medida que cada mes salen nuevas versiones y ejecuta vuestros propios runbooks junto a ella.

Runbooks de la biblioteca, por ámbito
Runbook
PlanificadoCleanup Autopilot devices
PlanificadoDelete stale devices
PlanificadoAuto-approve driver updates
PlanificadoNotify users about low disk space
PlanificadoReport devices without primary user
PlanificadoReport expiring application credentials
PlanificadoMonitor pending EPM requests
PlanificadoSync MFA-secure users to group
Backup Conditional Access policies
Notify changed CA policies
List inactive users
Invite external guest users
Add shared mailbox
Export all Intune devices
Check SharePoint and OneDrive status
Offboard user permanently
Offboard user temporarily
Create temporary access pass
Reset MFA
Revoke or restore access
Confirm or dismiss risky user
Convert to shared mailbox
Delegate full access
Set out of office
Set Teams Phone
Assign Windows 365
Resize Windows 365
Check Intune enrollment readiness
Assign groups by template
List sign-in events
Wipe device
Outphase device
Rename device
Set primary user
Wipe managed app data
Check device compliance
Isolate or release device
Restrict or release code execution
Check Defender status
Show BitLocker recovery key
Show FileVault recovery key
Show LAPS password
Reset mobile device PIN
Toggle drain mode
Restart host
Add or remove user
Add or remove owner
Add or remove nested group
Rename group
Change visibility
List all members
List user devices
Remove group
Enable or disable external mail
Show or hide in address book
Archive team
PlanificadoUnenroll updatable assets

Algunos runbooks de cada ámbito. Organización, 96 runbooks: General 39, Dispositivos 19, Seguridad 15, Correo 10, Aplicaciones 9, Colaboración 3, Telefonía 1.
Usuario, 43 runbooks: Correo 13, General 12, Seguridad 9, Telefonía 5, Información de usuario 3, AVD 1.
Dispositivo, 22 runbooks: General 12, Seguridad 8, AVD 2.
Grupo, 14 runbooks: General 9, Correo 2, Dispositivos 2, Teams 1.

  • Sincronizados desde GitHub

    Desde la rama production de forma predeterminada, con el prefijo rjgit-, y se añaden, actualizan y eliminan para reflejar la biblioteca.

  • Módulos resueltos

    Los módulos necesarios se leen de cada script y se instalan desde la PowerShell Gallery, con sus dependencias.

  • Entorno de ejecución gestionado

    Un entorno de PowerShell 7.4 con Az y Azure CLI, en vuestra cuenta de Automation.

El formulario se escribe solo

RealmJoin lee el bloque de parámetros y la ayuda basada en comentarios de cada script. Las anotaciones Use-RJInterface convierten los parámetros en selectores de usuarios, grupos y dispositivos respaldados por Microsoft Graph, en campos numéricos, de fecha y de texto, o en ajustes del tenant. ValidateSet se convierte en una lista desplegable.

  • Los campos obligatorios se comprueban antes de que empiece un trabajo
  • Por tenant, podéis ocultar, renombrar, reordenar o predefinir cualquier campo
  • Reglas condicionales: al elegir una opción, otros campos cambian
  • El nombre de quien lo ejecuta se transmite para la traza de auditoría

Lo que RealmJoin genera a partir del script. Parámetros combinados de dos runbooks de la biblioteca a modo de ejemplo.

offboard-user-permanently.ps1extracto
param (  [Parameter(Mandatory = $true)]  [ValidateScript( { Use-RJInterface -Type Graph -Entity User -DisplayName "User" } )]  [String] $UserName,  [ValidateScript( { Use-RJInterface -Type Graph -Entity User -DisplayName "Who should step in as group/resource owner?" } )]  [String] $ReplacementOwnerName,  [bool] $ReplaceManagerReferences = $false,  [ValidateSet("WhatIf (report only)", "Delete")]  [string] $DeleteMode = "WhatIf (report only)")
UserMMMaren Müller
Who should step in as group/resource owner?LBLukas Brandt
Replace manager referencesOff
Delete modeWhatIf (report only)

Quién puede ejecutar qué, hasta el objetivo concreto

Los permisos de los runbooks son un único documento JSON por tenant. Los roles se asignan a grupos de Entra y autorizan runbooks por patrón de nombre. Los grupos de destino pueden restringir aún más un rol, de modo que el soporte de primer nivel muestre las contraseñas de administrador local de Suecia y de ningún otro sitio. La planificación tiene sus propios patrones de permiso y denegación.

  • Activad o desactivad familias enteras con comodines
  • Restringid los roles por grupo de destino, no solo por runbook
  • Se admiten comentarios y comas finales, así que sigue siendo legible
Settings / Runbook permissionsextracto del ejemplo incluido
{  "EnabledRunbookPatterns": [ "rjgit-*_mail_*", "rjgit-*_security_*" ],  "DisabledRunbookPatterns": [ "*password*" ],  "Roles": {    "LAPSAdmin": {      "Groups": [ /* CFG - RealmJoin Admin */ "724c288d-…" ],      "AllowedRunbookPatterns": [ "rjgit-*_security_*" ]    },    "DeviceAdmin": {      "Groups": [ /* Sweden Supporters */ "52fcd199-…" ],      "AllowedRunbookPatterns": [ "rjgit-device_*" ]    }  },  "TargetEntityGroups": {    /* Sweden Users: LAPS only for Sweden Supporters */    "ca03f227-…": { "RestrictRoles": { "LAPSAdmin": [ "52fcd199-…" ] } }  },  "SchedulingDisabledRunbookPatterns": [ "rjgit-device_*" ]}
  • Planificaciones en vuestra zona horaria

    Las planificaciones horaria, diaria, semanal y mensual vienen listas, todas en la zona horaria de vuestro tenant, y podéis añadir las vuestras.

    • Los trabajos planificados se listan junto a los manuales
    • Permitid o bloquead la planificación por patrón de runbook
  • Pensados para ejecutarse sin supervisión

    34 runbooks de la biblioteca están hechos para eso: limpieza, informes y supervisión que nadie debería tener que iniciar a mano.

    • Informes por correo o como enlace de descarga con caducidad
    • Cada ejecución planificada queda en el historial de trabajos y en vuestro workspace de Log Analytics

También en local Preview

Algunas tareas siguen viviendo en local: un recurso compartido de archivos, un atributo de Active Directory, una aplicación heredada. Los runbooks cuyo nombre termina en _hybrid pueden ejecutarse en un grupo de Hybrid Runbook Worker de vuestra red. Al iniciar uno, elegís el grupo de workers; todo lo demás no cambia.

Disponible en el portal de staging de RealmJoin mientras está en preview.

Portal de RealmJoin

Formulario, permisos y planificación

Vuestro Azure Automation

Trabajo, registros y planificaciones

Vuestro Hybrid Worker

Ejecuta los runbooks *_hybrid en local

Una biblioteca de correcciones, por fases y con medición

RealmJoin sincroniza cada noche los scripts de corrección de Intune revisados desde su repositorio público de GitHub. Os suscribís a uno, lo preparáis, lo desplegáis en grupos gestionados según una planificación y después veis los resultados de detección y de corrección por dispositivo. Si lo necesitáis ya en un equipo concreto, lo ejecutáis desde la página del dispositivo.

  • Sin gestionar, gestionado, preparado, desplegado y obsoleto de un vistazo
  • El código de detección y el de corrección, uno al lado del otro
  • Los scripts eliminados en el origen se conservan mientras sigáis usándolos
Example data.

Formularios para todos los demás

No toda petición es un runbook. Los formularios de autoservicio se construyen a partir de un esquema JSON con un archivo de traducción, aparecen para los empleados como formularios corporativos y remiten cada envío por correo o a un webhook, por ejemplo vuestra herramienta de ITSM o un flujo de Teams. Cada respuesta se conserva en un historial.

  • Multilingües mediante un archivo de traducción
  • Destinatario de correo y webhook opcional por formulario
  • Historial de formularios para los administradores y respuestas en la página del usuario
Example data.

Iniciad runbooks desde cualquier sitio

La Customer API ejecuta runbooks de forma síncrona o en segundo plano y devuelve el estado del trabajo, el texto de salida, los flujos de salida y las excepciones. Vuestro ITSM puede dar de baja a quien se marcha desde el propio ticket que lo pidió.

  • Ejecutar y esperar

    Llamada síncrona que responde cuando el trabajo termina, para trabajos de hasta una hora.

  • Iniciar en segundo plano

    Devuelve un ID de trabajo de inmediato; consultáis el estado cuando os haga falta.

  • Estado del trabajo

    En cola, en ejecución, completado o fallido.

  • Salida

    Texto de salida simple o todos los flujos de salida.

  • Excepciones

    El texto de la excepción cuando un trabajo falla.

  • Exportación nocturna de registros

    Los trabajos terminados llegan a vuestro workspace de Log Analytics a las 23:00. Referencia de la Customer API

Jubilad la carpeta de scripts.

Conectad Azure Automation, sincronizad la biblioteca y entregad el primer runbook al helpdesk con los límites adecuados.