POWERSHELL AND THE WEB PowerShell Summit 2014 Trond Hindenes, Crayon AS (@trondhindenes)

Post on 28-Mar-2015

214 views 0 download

Tags:

Transcript of POWERSHELL AND THE WEB PowerShell Summit 2014 Trond Hindenes, Crayon AS (@trondhindenes)

POWERSHELL AND THE WEBPowerShell Summit 2014

Trond Hindenes, Crayon AS (@trondhindenes)

THE IT AUTOMATION PYRAMID

Integratio

n

Orchestration

Automation

POWERSHELL INTEGRATION MATURITY

HTTP API (rest)

.Net wrapper

(dll)

PS Module

WHY STEP TO THE LEFT?

•Low quality vendor-supplied CmdLets•Lack of functionality

TYPES OF WEB SERVICES

•Generation 1: XML Web Services (SOAP)•Stateful (or, acting like they are stateful)

•Generation 2: RESTful services (JSON/XML)•Stateless

•Good overview at:http://www.developingthefuture.net/web-services-overview/

TYPES OF WEB SERVICES (2)

•SOAP: Access api through methods on the proxy object$citynames = $proxy.LatLonListCityNames(1)•REST: Each operation has a URL:•http://server/api/customers/fred/orders•HTTP DELETE to http://server/api/products/orange

AUTHENTICATION GOTCHA’S

•The life of a http request•Authentication types:•Unauthenticated or IP based•Basic/NTLM•Token based

VISUAL STUDIO LIGHTSWITCH

•Rapid development of Data-driven applications•Can be self-hosted or built as a Sharepoint 2013 “app”•The backend data is served using WCF OData

PATTERNS FOR LIGHTSWITCH + POWERSHELL

•Develop the app•Deploy it somewhere•Generate proxy dll•Use the proxy to interact with the service endpoint

EXAMINING THE PROXY DLL

•Use the VS Object Browser to inspect the dll•Or use Ilspy (http://ilspy.net/)

POWERSHELL AND RESTFUL SERVICES WITH JSON AKA INVOKE-RESTMETHOD

• JSON – Javascript Object Notation•“Human readable objects”•Similar to XML, but lighter weight (XML is wire-heavy)

Construct Object

Convert to Json

Send to server

Get stuff back

REST GOTCHAS

• Everything is a PsCustomObject• No “.gettype()”

• Each request is atomic• No “state”

• API examples often use curl• Important differences between PowerShell and curl (authentication)

• Be mindful of JSON syntax• You'll often end up with lots of "nested" objects

GENERATING “PROPER” OBJECTS

•New-Struct to the rescue• (http://powershellcommunity.poshcode.org/3146)

ASP.NET MVC/WEB API

•General-purpose web app framework for building “stuff”•Scott Guthrie’s brainchild•Web API is a flexible framework for building (among others) RESTful web services•Natively supports both JSON and xml

CASE: HOSTED MAIL FLOW MONITORING

IaaS hMail

Azure Web Site Web API

Operations Manager

FUN WITH WEB

•SpamTitan (super-simple XML/Rest)•Geckoboard (complex json)•PagerDuty (simple json)

THANK YOU!