Master: Devel: Last Build (Any branch):
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.
An interpreted language created by Microsoft that is built on and taps into the .NET framework.
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.
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.
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.
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