en-us/Pipeworks_Quickstart.walkthru.help.txt
<#
### PowerShell Pipeworks is a framework for putting it all together with PowerShell. Pipeworks provides powerful tools to help you: * Publish your PowerShell Modules * Write websites in a Snap * Connect Cloud Services * Join Windows and Web It significantly simplifies the process of creating Software as a Service, and is great for scripting quick sites. This quickstart will cover a few ways to use Pipeworks. Our first simple example will be creating a page containing a quickstart video. #> (ConvertFrom-Markdown -Markdown '# Getting Started with Pipeworks ') + (Write-Link 'http://www.youtube.com/watch?v=cR2koin9QNA') | New-Region -LayerId PlayerRegion -Style @{ "Margin-Left" = '16%' "Margin-Right" = '16%' "Margin-Top" = '12%' 'Text-Align' = "center" } | New-WebPage -Title 'Pipeworks Quickstart' -Css @{ Body = @{ 'Background-color' = '#fafafa' 'Font-Family' = 'Segoe UI' } } <# There's a lot to pick up on in our first sample: * You can make pages in Pipeworks with minimal understanding HTML * Pipeworks makes it simple to embed rich media, like a YouTube video, in a page * Pipeworks supports [Markdown](http://powershellpipeworks.com/ConvertFrom-Markdown) * Pipeworks provides many tools to generate HTML In our next example, we'll make a quick module into a software service. #> # In Pipeworks, you need 3 files to make a module. # The Script Module ( ModuleName.PSM1), # The Module Manifest ( ModuleName.PSD1) # The Pipeworks Manifest (ModuleName.Pipeworks.psd1) # This will check for the module directory and create it if it doesn't exist. $modulePath = "$home\Documents\WindowsPowerShell\Modules\SayHello" if (-not (Test-Path $modulePath)) { New-Item -ItemType Directory -Path $ModulePath | Out-Null } # Our module will be simple. It will have one command, Show-HelloMessage. # We'll include it inside of the .PSM1 @' function Show-HelloMessage { <# .Synopsis Shows a hello message .Description Shows a personalized hello message #> param( # What is your name? [Parameter(Mandatory=$true)] [string] $YourName ) "Hello $YourName" } '@ | Set-Content "$modulePath\SayHello.psm1" # The Module Manifest File is pretty simple. # It includes a version, a description, and it refers to the .PSM1 @' @{ ModuleVersion = '1.0' ModuleToProcess = 'SayHello.psm1' Description = 'Say Hello, Wave Goodbye' } '@ | Set-Content "$modulePath\SayHello.psd1" # The Pipeworks Manifest describes how the module will turn into a web service, and what it can do. # You can create a Pipeworks Manifest by hand, or you can use the New-PipeworksManifest command New-PipeworksManifest -Name SayHello -WebCommand @{ "Show-HelloMessage" = @{ FriendlyName = 'Say Hello' } } | Set-Content "$modulePath\SayHello.Pipeworks.psd1" # To create your web service, run the following command: Import-Module SayHello -Force -PassThru | ConvertTo-ModuleService -Force # You can now navigate to http://localhost/SayHello and make it greet you <# The second sample shows some of the Powers of Pipeworks: * You can create a software service in seconds out of any PowerShell command * You can convert PowerShell to a web experience without really thinking about it We'll get a little more complex by creating a service that lets you log in. #> # This module is also very simple, and requires the same few files. # It's called "ShowMe", and it simply shows the currently logged on user. $modulePath = "$home\Documents\WindowsPowerShell\Modules\ShowMe" if (-not (Test-Path $modulePath)) { New-Item -ItemType Directory -Path $ModulePath | Out-Null } # The Module Manifest File is pretty simple. # It includes a version and it refers to the .PSM1 @' @{ ModuleVersion = '1.0' ModuleToProcess = 'ShowMe.psm1' } '@ | Set-Content "$modulePath\ShowMe.psd1" # Our .PSM1 contains the Show-Me function @' function Show-Me { <# .Synopsis Shows me .Description Shows information about the currently logged in user .Example Show-Me #> if (-not ($request -and $response -and $session)) { Get-Person -Alias $env:USERNAME } else { if ($session["User"]) { # If there's a user, just output them return $session["User"] } else { throw "Not logged in" } } } '@ | Set-Content "$modulePath\ShowMe.psm1" # Our pipeworks manifest is pretty simple. # We provide the name of the module, and a hashtable containing what commands we want to turn into services: # Each value in this table should be another hashtable containing parameters for the command [Invoke-WebCommand](http://powershellpipeworks.com/) New-PipeworksManifest -Name ShowMe -WebCommand @{ "Show-Me" = @{ RequireLogin = $true RunWithoutInput = $true FriendlyName = 'Show Me' } } | Set-Content "$ModulePath\ShowMe.Pipeworks.psd1" # To let us log into the module service, we'll publish it as an Intranet site: Import-Module ShowMe -Force -PassThru | ConvertTo-ModuleService -AsIntranetSite -Port 222 -Force Start-Process http://localhost:222/ |