Skip to content
PowerBGInfo

Desktop and lock-screen wallpapers from PowerShell

Every machine, labelled on its own desktop.

PowerBGInfo draws a machine's facts, health and charts onto its wallpaper and lock screen. You describe the layout in PowerShell or JSON, and it renders the same way on every machine you deploy it to.

Install-Module PowerBGInfo -Scope CurrentUser
Invoke-BGInfo -Path .\helpdesk.json
# Desktop, lock screen and every monitor

Supported Windows desktops and servers. PowerShell 5.1 and 7, desktop and lock screen, every monitor, every profile.

Three tools for the same desktop

PowerBGInfo shows what a machine is and how it is doing. InformationBox lets the person at the desk act on it. DesktopManager controls the desktop itself. Use one, or let them work together.

  • Show

    PowerBGInfo

    Facts and health drawn onto the wallpaper and lock screen. Everyone at the machine sees them without clicking anything, and you deploy it to whole fleets.

    For
    Admins, helpdesks, labs, servers, signage
    Ships as
    PowerShell module, CLI, JSON layouts
    Runs on
    Windows; macOS and Linux in preview
  • Ask and fix

    InformationBox

    A self-service window for the person at the desk. Check status, copy an IP address, open a ticket or run an approved fix without calling the helpdesk.

    For
    End users and the helpdesk behind them
    Ships as
    Portable Windows app, white-label
    Runs on
    Windows
  • Control

    DesktopManager

    Monitors, windows, wallpaper, audio, power, devices and input. Use the app with hotkeys and rules, or automate it from PowerShell, C#, a CLI or an AI agent.

    For
    Power users, admins, automation, AI agents
    Ships as
    App, 133 cmdlets, NuGet package, CLI, MCP server
    Runs on
    Windows; display and wallpaper API on macOS and Linux

Get started

Install the module from the PowerShell Gallery and render to a file first, so you can check the layout before anything changes on a desktop.

Install the module

Install-Module PowerBGInfo -Scope CurrentUser

The module works in Windows PowerShell 5.1 and in PowerShell 7.4 or later. It needs no separate helper modules; run the same command again to update.

Render a preview to a file

New-BGInfo -Theme Aurora -ThemeMode Dark -Target File {
    New-BGInfoValue -BuiltinValue HostName -Name 'Computer'
    New-BGInfoValue -BuiltinValue FullUserName -Name 'User'
    New-BGInfoValue -BuiltinValue OSName -Name 'Windows'
    New-BGInfoValue -BuiltinValue IPv4Address -Name 'IP address'
    New-BGInfoValue -BuiltinValue Uptime -Name 'Up for'
    New-BGInfoChart -Region Right -Kind Gauge -Metric MemoryPercent `
        -Title 'Memory used' -Maximum 100 -ValueSuffix ' %'
} -ConfigurationDirectory C:\Temp\PowerBGInfo -OutputFileName preview.png

-Target File writes preview.png and leaves the desktop alone. The built-in values read the machine the script runs on, so every machine gets its own wallpaper from the same script.

Set it as the wallpaper

New-BGInfo -Theme Aurora {
    New-BGInfoValue -BuiltinValue HostName -Name 'Computer'
    New-BGInfoValue -BuiltinValue OSName -Name 'Windows'
} -ConfigurationDirectory C:\ProgramData\PowerBGInfo -WallpaperFit Fill

Without -Target, New-BGInfo sets the wallpaper for the account that runs it. On Windows, -AllUsers stages it for every profile, and -Target LogonScreen or -Target Both sets the lock screen too; those need an elevated session. One run applies one image; run it again to refresh the values.

Run it in production

PowerBGInfo has no refresh schedule of its own: each run renders the image, applies it once and exits. To keep the values current, run it again at sign-in, at unlock or on a timer, from the tool that already manages the machines.

RouteWhen to use itGuide
Task SchedulerStandalone machines and labs, or any fleet where another tool runs the registration script once. The most direct way to refresh at sign-in, at unlock and on a timer, in the user's own session.Task Scheduler guide
Group PolicyActive Directory domain-joined PCs and session hosts. A Group Policy Preferences task runs it for each user, and the same GPO can carry the execution policy and, on Enterprise and Education, the lock screen policy.Group Policy guide
IntuneMicrosoft Entra joined or hybrid joined devices. A Win32 app installs the module and the script and registers the per-user task; platform scripts, Remediations and the Personalization CSP cover the cases around it.Intune guide
Configuration ManagerDevices managed by Configuration Manager, including co-managed devices where the apps workload stays with it. An application installs the module and registers the same task.Configuration Manager guide
Remote Desktop, AVD, Windows 365Session hosts and AVD multi-session run the task in every session, with a per-user output folder and a fresh render on reconnect; LoggedOnUser names the user of the session being rendered. AVD personal desktops and Cloud PCs work like a physical PC.Remote Desktop, AVD, Windows 365 guide

Where it runs

Windows is supported today. macOS, Linux and headless rendering are in preview and ship with the next release. Each platform states what it can and cannot do, so a render never pretends a desktop accepted it.

  • Windows Supported Windows desktops and servers. PowerShell 5.1 and 7, desktop and lock screen, every monitor, every profile.
  • macOS Preview The current user's wallpaper through AppKit on each reported screen. The lock screen is not available.
  • Linux Preview GNOME through GSettings and KDE Plasma through D-Bus. Other desktops render to a file.
  • Servers and CI Preview Render a PNG without a desktop, for documentation, signage or a VM template. Set the width and height yourself.

What works on each platform