powershell and the web powershell summit 2014 trond hindenes, crayon as (@trondhindenes)
TRANSCRIPT
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!