Survey
* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
POWERSHELL AND THE WEB PowerShell Summit 2014 Trond Hindenes, Crayon AS (@trondhindenes) THE IT AUTOMATION PYRAMID Integration Automation Orchestration 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/webservices-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!