PLATFORM

Your PowerShell, turned into guarded self-service.

RealmJoin syncs a curated library of 175 runbooks into your own Azure Automation account, builds a form for each script, and decides who may run what. Every job leaves a log.

  • 175 runbooks, open source
  • Runs in your Azure subscription
  • Permissions down to the target group
  • New runbooks every month
Report sent to it-licensing@contoso.com. Example data.

175 runbooks you don't have to write

The library is open source on GitHub. RealmJoin syncs it into your Automation account, keeps it current as new releases ship every month, and runs your own runbooks right next to it.

Runbooks from the library, by scope
Runbook
ScheduledCleanup Autopilot devices
ScheduledDelete stale devices
ScheduledAuto-approve driver updates
ScheduledNotify users about low disk space
ScheduledReport devices without primary user
ScheduledReport expiring application credentials
ScheduledMonitor pending EPM requests
ScheduledSync 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
ScheduledUnenroll updatable assets

A few runbooks from each scope. Organization, 96 runbooks: General 39, Devices 19, Security 15, Mail 10, Applications 9, Collaboration 3, Phone 1.
User, 43 runbooks: Mail 13, General 12, Security 9, Phone 5, User info 3, AVD 1.
Device, 22 runbooks: General 12, Security 8, AVD 2.
Group, 14 runbooks: General 9, Mail 2, Devices 2, Teams 1.

  • Synced from GitHub

    From the production branch by default, prefixed rjgit-, added, updated and removed to match the library.

  • Modules handled

    Required modules are read from each script and installed from the PowerShell Gallery, dependencies included.

  • Managed runtime

    A PowerShell 7.4 environment with Az and Azure CLI, in your Automation account.

The form writes itself

RealmJoin reads the parameter block and comment-based help of every script. Use-RJInterface annotations turn parameters into user, group and device pickers backed by Microsoft Graph, into number, date and text fields, or into tenant settings. ValidateSet becomes a dropdown.

  • Mandatory fields are checked before a job starts
  • Per tenant, hide, rename, reorder or preset any field
  • Conditional rules: pick an option, other fields change
  • The caller's name is passed in for the audit trail

What RealmJoin renders from the script. Parameters combined from two library runbooks for illustration.

offboard-user-permanently.ps1excerpt
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)

Who may run what, down to the target

Runbook permissions are one JSON document per tenant. Roles map to Entra groups and allow runbooks by name pattern. Target groups can restrict a role further, so first-level support may show local admin passwords for Sweden, but nowhere else. Scheduling gets its own allow and deny patterns.

  • Enable or disable whole families with wildcards
  • Restrict roles per target group, not just per runbook
  • Comments and trailing commas allowed, so it stays readable
Settings / Runbook permissionsexcerpt of the shipped example
{  "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_*" ]}
  • Schedules in your time zone

    Hourly, daily, weekly and monthly schedules come ready, all in your tenant's time zone, and you can add your own.

    • Scheduled jobs listed next to manual ones
    • Allow or block scheduling per runbook pattern
  • Built to run unattended

    34 library runbooks are built for it: cleanup, reporting and monitoring that nobody should have to start by hand.

    • Reports by email or as a time-limited download link
    • Every scheduled run in the job history and your Log Analytics workspace

On-premises too Preview

Some jobs still live on-premises: a file share, an Active Directory attribute, a legacy app. Runbooks whose names end in _hybrid can run on a Hybrid Runbook Worker group in your network. When you start one, you pick the worker group; everything else stays the same.

Available on the RealmJoin staging portal while in preview.

RealmJoin portal

Form, permissions, schedule

Your Azure Automation

Job, logs, schedules

Your Hybrid Worker

Runs *_hybrid runbooks on-premises

A remediation library, staged and measured

RealmJoin syncs curated Intune remediation scripts from its public GitHub repository every night. Subscribe to one, stage it, deploy it to managed groups on a schedule, then watch detection and remediation results per device. Need it now on one machine? Run it from the device page.

  • Unmanaged, managed, staged, deployed and deprecated at a glance
  • Detection and remediation source side by side
  • Scripts removed upstream are kept while you still use them
Example data.

Forms for everyone else

Not every request is a runbook. Self-service forms are built from a JSON schema with a translation file, show up for employees as corporate forms, and send each submission by email or to a webhook, for example your ITSM tool or a Teams flow. Every response is kept in a history.

  • Multilingual through a translation file
  • Email recipient and optional webhook per form
  • Form history for admins, responses on the user page
Example data.

Start runbooks from anywhere

The Customer API runs runbooks synchronously or in the background and returns job status, output text, output streams and exceptions. Your ITSM can offboard a leaver from the ticket that asked for it.

  • Run and wait

    Synchronous call that returns when the job ends, for jobs up to an hour.

  • Start in the background

    Returns a job ID at once; poll status when you need it.

  • Job status

    Queued, running, completed or failed.

  • Output

    Plain output text or all output streams.

  • Exceptions

    The exception text when a job fails.

  • Nightly log export

    Finished jobs land in your Log Analytics workspace at 23:00. Customer API reference

Retire the scripts folder.

Connect Azure Automation, sync the library, and hand the first runbook to helpdesk with the right guardrails.