Skip to content
A micro web framework for Windows PowerShell
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
nancy
tests
.gitignore
LICENSE.txt
README.md
appveyor.yml
example.ps1
flancy.psd1
flancy.psm1
index.html
maketest.ps1

README.md

Master: Build status Devel: Build status Last Build (Any branch): Build status

Flancy - A web microframework for Windows PowerShell

Flancy comes from combing Flask (python web microframework) and Nancy (the .NET microframework libraries used by this module). Flask + Nancy = Flancy!

Flancy creates a standalone web server in PowerShell code. The code is routed based on the path and verb used by the client. Each path-verb is routed to a piece of PowerShell code that serves up the data requested.

What is PowerShell?

An interpreted language created by Microsoft that is built on and taps into the .NET framework.

Why?

PowerShell is a development language and one day it will be treated as such. Alternatively, even as a non-dev automation language for sysadmins, often times a sysadmin just wants to expose PowerShell commands as easily as possible through a web request. The aim of this project is to provide the easiest possible way to spin up an in-code web server that can be backed by PowerShell.

Getting Started

The example script is the best way to start. Writing a web server is sooooo ridiculously easy. Here's the meat of how it's done:

import-module flancy
$url = "http://localhost:8001"

new-flancy -url $url -webschema @(
    Get '/' { "Welcome to Flancy!" }
    Get '/processes' {
        $processes = Get-Process
        $processes |select name, id |convertto-json
    }
)

One thing to note: Because of the way that Nancy works, I cannot create new custom types on subsequent New-Flancy requests. This means that in order to make a change to your service, you'll need to restart your PowerShell session. Another option is to start them in jobs in order to get clean sessions without restarting.

What's Next

A ton - I know there's a ton of bugs and things to think about. Start logging issues and feel free to contribute (including writing tests) via pull request.

Contribute

In order to contribute, please create a Pull Request against the devel branch. Please include the following with each pull request:

  • In the commits, if it resolves an issue, say "Fixes #xx" where xx is the issue number or at least refer to the Issue # by specifying "#xx" somewhere in your commit.
  • If there is no test for what you have done, please try to write one
  • Ensure that all tests pass prior to submitting - tests are run by calling maketest.ps1. You cannot run invoke-pester by itself or the tests will fail.
  • Update any relevant documentation or the example.ps1 file
You can’t perform that action at this time.