Build a Serverless REST API with PowerShell

By Brian Bunke

Elevator Pitch

You’re a PowerShell expert, able to gather and sanitize data at will. How do you provide that info to others in a secure, on-demand, language-agnostic, and observable manner?

This session will use both Azure and AWS to run serverless PowerShell code, tied together in fully-featured REST APIs.


In the modern world of IT operations, we expect REST APIs from products we consume. A public API allows us to consume the info we want, with the tool we choose (PowerShell), in an automated and repeatable fashion.

Why, then, do we not provide the same for our customers?

You can offload PowerShell code to serverless functions in Azure or AWS, solving the need to provision a new server, maintain the OS, and securely expose it. Each cloud can then wrap your set of serverless endpoints within a fully-featured API portal.

In this model, you’re still providing the data you know how to gather and normalize, while now embracing self-service and your coworkers’ varying needs. Does this data need to be retrievable from Python or Ruby? A web form? PowerBI? A mobile app? No problem…HTTPS endpoints make the world go ‘round. Additionally, whether you prefer Azure or AWS, each cloud provides mature API services that support API keys and developer portals, allowing quick answers to security and observability questions.

You will leave this session with an idea of why you would introduce a new API at $Job, an overview of writing PowerShell code in Azure Functions and AWS Lambda, how to tie multiple serverless functions into a cohesive API, and fully functional code samples if you’re interested in diving deeper.


I spent about a month learning how to make this happen in Azure, because I was really motivated to bring this idea to fruition. That effort turned into this blog series from early 2018:

With the recent announcement of PS support in AWS Lambda, I would love to present both Azure and AWS solutions to attendees, hopefully making this concept more broadly applicable.

If this submission partially overlaps with another – or if you’re somehow dying for longer sessions – I’m happy to work with you to adapt. Just let me know. Thank you!