Distributed Automation

Remote Device Automation Platform

A lightweight remote-task system that allowed approved PowerShell automation to be assigned to distributed Windows devices, executed locally, and reported through a centralized administrative workflow.

The platform connected a PowerShell endpoint agent with Google Apps Script and Google Sheets, giving technicians one place to manage device records, task assignments, completion status, execution notes, and remote-support information.

PowerShellGoogle Apps ScriptGoogle SheetsJSONRESTScheduled TasksTeamViewerWindows

Remote Automation Dashboard

Sanitized conceptual interface

Agent service active

Registered devices

100+

Tasks completed

Tracked

Agent check-in

Scheduled

DeviceAssigned taskStatus
FIELD-014Network RepairComplete
FIELD-027Update SettingsReady
FIELD-041Diagnostic CheckComplete

GET task → parse JSON → download approved script → execute locally → report status

Centralized

Remote task assignment

Automated

Device check-in workflow

Tracked

Execution state and history

Production

Designed for field-device support

The Problem

Distributed maintenance depended on repetitive remote sessions

Field devices were distributed across customer locations and regularly required configuration updates, repairs, or maintenance scripts.

Even when the technical action was repeatable, a technician often had to connect to each system individually, transfer or recreate the necessary script, execute it, and document the result.

This approach consumed support time, made large-scale changes difficult to coordinate, and provided limited centralized visibility into what had run on each endpoint.

The Solution

A lightweight agent connected each device to a central task queue

I designed a PowerShell agent that identified the local device, checked a central endpoint for an assigned task, and processed the returned JSON response.

When an approved task was available, the agent retrieved the corresponding script, executed it locally, and reported the result through the same central workflow.

Google Sheets served as the technician-facing administrative layer, while Google Apps Script handled the exchange of task and status data between the spreadsheet and field devices.

Core Capabilities

One workflow for assigning, executing, and reviewing remote tasks

The platform combined endpoint automation with a practical administrative interface that technicians could use without managing a separate server application.

Centralized Task Assignment

Administrators can associate approved automation tasks with specific field systems through a centralized management sheet.

Device Check-In

A lightweight PowerShell agent checks the central service for tasks associated with the local device identity.

Dynamic Script Retrieval

When a task is available, the agent retrieves the approved script from a defined source and prepares it for local execution.

Status Reporting

The agent reports completion state, last-run information, and execution notes back to the administrative workflow.

Script History

Execution history is retained so administrators can see which automation was assigned and when it last ran.

Remote Support Integration

Device records include the identifiers technicians need to launch remote support sessions when hands-on troubleshooting is required.

System Architecture

A pull-based endpoint workflow with centralized reporting

Each field device initiated its own task check, processed the returned instruction, and sent execution information back to the central management layer.

Administrator

Assigns an approved task

Google Sheet

Stores devices, tasks, state, and history

Apps Script API

Returns task data as JSON

PowerShell Agent

Checks, downloads, and executes

Field Device

Runs the approved local automation

Status Update

Reports completion, notes, and last run

Task assignment

The central record associates a device identity with a script location and current task state.

Endpoint execution

The local agent retrieves the task response, downloads the approved script, and invokes it on the field system.

Administrative feedback

Execution details are written back so technicians can review status, timing, notes, and history.

Engineering Decisions

A practical architecture shaped by distributed support constraints

The system emphasized simplicity, accessibility, and observable execution rather than introducing unnecessary infrastructure.

Why use a pull-based agent?

The field systems could initiate their own outbound checks without requiring administrators to establish inbound connectivity to each device. This simplified communication across varied remote network environments.

Why use JSON as the data format?

JSON provided a lightweight and language-independent structure that could be generated by Google Apps Script and consumed directly by PowerShell.

Why use Google Sheets as the administrative layer?

The organization already used Google Workspace extensively. A spreadsheet provided an accessible interface for device records, task assignments, status, notes, and execution history without requiring a separate administrative application.

Why separate task assignment from script storage?

The management layer only needed to identify which approved task a device should run. Keeping script location and assignment as separate concerns made the workflow easier to update and reduced unnecessary duplication.

Why include remote-support identifiers?

Automation addressed repeatable maintenance tasks, but some issues still required interactive support. Keeping remote-session information alongside the device record gave technicians one place to begin either workflow.

Why preserve task history?

A visible history reduced uncertainty about what had already been attempted and helped technicians avoid rerunning the same remediation without context.

Technical Challenges

Coordinating identity, execution, and state across remote devices

Identifying the correct endpoint

Each device needed a stable identity that could be matched with its administrative record. The workflow used device-specific identifiers to ensure tasks were delivered to the intended field system.

Coordinating two different technology environments

The local agent ran in Windows PowerShell while the central workflow used Google Apps Script and Google Sheets. The systems needed a simple, predictable data contract that both environments could process reliably.

Reporting meaningful execution state

A task being downloaded did not necessarily mean that it completed successfully. The system needed to distinguish assignment, retrieval, execution, completion, and failure information.

Keeping the agent lightweight

Field devices needed a small, low-maintenance agent rather than a large management application. The local component focused only on identity, task retrieval, execution, and reporting.

Development Process

Built iteratively from a working endpoint agent

01

Define the minimum endpoint workflow

The first goal was to prove that a device could identify itself, retrieve a task response, download a script, execute it, and report a result.

02

Create the central task record

I established a structured sheet containing device aliases, remote-support identifiers, script locations, status, last-run information, notes, and script history.

03

Connect the environments with JSON

Google Apps Script converted the administrative record into a predictable JSON response that PowerShell could consume.

04

Add completion and history reporting

The workflow was expanded beyond task delivery so technicians could determine what had run and whether the device reported completion.

05

Integrate with existing support practices

Remote-session identifiers remained available in the same device record so technicians could move from automation to interactive support when needed.

Results

Repeatable remote maintenance with better operational visibility

The platform established a reusable method for coordinating automation across distributed Windows systems. It reduced the number of repetitive steps technicians needed to perform manually and created a clearer record of device activity.

Just as importantly, the project demonstrated how existing tools could be combined into a functioning internal product without requiring a large infrastructure investment.

Primary outcomes

  • Created a centralized method for assigning approved automation tasks
  • Reduced the need to perform repetitive maintenance through interactive remote sessions
  • Improved visibility into device activity and task completion
  • Connected field-device records with remote support information
  • Established a reusable pattern for future endpoint automation
  • Made distributed maintenance easier to coordinate from one interface

Lessons Learned

What this project taught me

  • Use a simple data contract when integrating different scripting environments.
  • Design distributed automation around observable states, not assumptions.
  • Keep endpoint agents focused on a small number of responsibilities.
  • Provide a manual support path alongside automated remediation.
  • Store enough execution history to make later troubleshooting possible.

Project confidentiality

This project was developed for an internal production environment. Company identifiers, credentials, private endpoints, device records, script URLs, network information, and operationally sensitive code have been intentionally excluded. This case study focuses on the architecture, development process, technical decisions, and operational value of the platform.

Return to the portfolio to view additional automation projects.

View all projects