This event has ended. Visit the official site or create your own event on Sched.
We urge you to download the event brochure, which is full of useful information and details!

PowerShell + DevOps Global Summit is the gathering of PowerShell + DevOps professionals and enthusiasts. More than just a conference, it’s a true in-person gathering of a vibrant commuity - we learn from each other, we develop practices and standards, we share challenges and solutions, and we drive our industry forward. If you’re working with PowerShell, Desired State Configuration, and related technologies, and especially if you’re moving your organization toward a DevOps footing, then this is the 400+ level event you’ve been looking for. Be sure to grab our event app for your iOS or Android device!

Once you’re registered (use the Tickets tab, below), you’ll be authorized to this site, and be able to build and maintain your personal agenda for the event. Check back often as the event draws near, as this is where we’ll publish any last-minute session changes or other agenda updates. If you already registered and didn’t receive your invite email to Sched.com, just go here and use your registered email address and EventBrite order number to gain access.

DOWNLOADS: Event brochure | Sponsorship information

Log in to bookmark your favorites and sync them to your phone or calendar.

Breakout: Development [clear filter]
Tuesday, April 10

9:00am PDT

Become a PowerShell Debugging Ninja
   You've written PowerShell scripts or functions, and maybe packaged them up in a module. Then suddenly, when you least expect it, it shows up. It's red, and it's scary. You've hit a bug. But fear not! You, too, can become a PowerShell Debugging Ninja! Come to this session to learn how! Hi-yaaaaaaaah!
    You will learn:
1. "Soft" debugging skills that reduce or eliminate the need to work with a PowerShell debugger when it's not necessary.
2. "Hard" debugging skills that will help you get the most value for the least effort when working with the PowerShell debugger.
3.  Best practices and tips and tricks that increase reliability and efficiency when writing and debugging PowerShell scripts and modules.

avatar for Kirk Munro

Kirk Munro

Senior Product Manager, Learn on Demand Systems
Kirk Munro has been a PowerShell MVP since 2007 and spends almost all his time figuring out how to best help others learn technology.

Tuesday April 10, 2018 9:00am - 10:45am PDT
406 - Meydenbauer Center

11:00am PDT

Building cmdlets for a REST API with PowerShell classes, Azure-based integration tests and continuous deployment
    This talk will cover a project to write a set of cmdlets for an Infoblox dns appliance.  Code is split between cmdlets for the interface and parameter validation, and classes for modeling all the REST calls.  Will also cover the CD pipeline via appveyor with tests against an Azure appliance.
    Classes, the new feature in PowerShell 5.0, was added just for writing DSC resources right?  Not so!  Come see how classes can be used as part of a PowerShell cmdlet, providing code separation, easier parameter validation, and more.  This session will cover a working module that uses class definitions alongside standard PowerShell cmdlets to integrate with a REST API.  Learn how using defined classes makes integration between get and set cmdlets easier and potentially safer. It will also cover the release pipeline for testing and deployment, with a little Azure Resource Manager template design thrown in for fun.  All code for this session will be available on GitHub.
   This session will cover:
    - How to build a REST Uri and payload from user-provided parameter values
    - How to model objects and build class definitions and methods to reflect actions on those objects
    - How to build cmdlets that interface with both the user and the class definitions, isolating code for improved readability
    - How to build a test environment in Azure for running Pester tests and deploy to the PS Gallery with Appveyor
     This has been an amazing side project that I've been working on for over a year.  I've learned a ton about classes, github, appveyor, azure, etc. and I'm eager to share all that. Current project code can be found here:  https://github.com/murrahjm/Infoblox-Classy

avatar for Jeremy Murrah

Jeremy Murrah

Lead Server Engineer, Enterprise Products Partners
Jeremy Murrah is an old OPS guy from the dark ages of computing. He started automating NT 4.0 installations and hasn't looked back. Classically trained as an Active Directory Administrator and Windows Engineer, he is currently engrossed in all things Powershell and is eagerly awaiting... Read More →

Tuesday April 10, 2018 11:00am - 12:45pm PDT
404 - Meydenbauer Center

11:00am PDT

Building PowerShell applications that operate on a Planetary scale
Powershell is quickly taking over the IT world. With the new releases of PowerShell being platform agnostic you can now build Apps that can manage ANYTHING and run ANYWHERE! Combining PowerShell with open source web platforms allows you to build custom Apps to manage heterogeneous infrastructures.
    There is no ‘out of the box’ perfect solution available on the market today that can help you manage your infrastructure your way. It costs too much, it's too complex, there is no way to customize it... we can always find things wrong, or have a better way of doing things... it's human nature. So, I say put your money where your mouth is, and build one yourself! You know your requirements better than anyone else! And, if you know PowerShell you are in luck! Let's continue this journey together.
    I have worked with many tools in the past, and they have never been quite right. I’ve always wanted more information, and extra button, remove some piece of data that I didn't care about, but the problem is that I didn’t understand the language it was written in, or didn’t have access to the source code. So I quit. I quit waiting for someone to do what I needed done, and I started building PowerShell applications to help manage my Information systems. 
    The concept is simple, use powershell to collect data to be stored in a central location, a lightweight web application to display the data, and some business logic to apply relevant changes to the specific environments. The individual components break down into manageable pieces to include; A Queue Manager, Task Manager, Database, Web Application, and a Management service. A Task Manager can be deployed into any environment and is the workhorse of the application. It communicates with the database to input data and to get data to perform the specific workflows you have designed. All log files and related artifacts are securely stored on a CIFS share available for viewing in the User Interface.
With great success, comes more challenges! Having this great distributed system was great when starting, but quickly became a pain to manage! Manually updating scripts on VM’s halfway across the world is not fun, so I wrote a management service to keep all of my systems in sync. Runtime environments needed to be managed as well as source control on the executable files. Insert Docker to resolve the runtime environment, it’s a bit overkill, but does a fantastic job at creating an exact, repeatable workspace to execute scripts.
What other product will let you build and manage your complex environment of on premise, and cloud infrastructure across product lines like VMware, Active Directory, custom REST API’s, security scanning tools, and more?
  In this talk I plan to break down all of the components that are used to construct a scaleable PowerShell application, as well as describe their roles. I will review some of the problems I have encountered as I have built my custom solution for my environment, as well as lead the audience to a path where they can get started. My hope is to have an engaging audience so we can discuss the importance of the CI/CD pipeline when managing this type of system, as well as the risks of introducing this level of automation into their environment.

avatar for Justin Sider

Justin Sider

Chief Information Officer, Belay Technologies
I really enjoy talking about automation experiences, specifically those edge cases where you walk away saying 'Holy cow, I cannot believe that worked'. And Golf! Any Good Golf courses in the Bellevue area?

Tuesday April 10, 2018 11:00am - 12:45pm PDT
406 - Meydenbauer Center

2:00pm PDT

Developing with PowerShell Classes: Here be Dragons

Classes are a powerful capability in PowerShell and are meant to provide a more familiar developing experience to more traditional programmers. You will not experience calm skies and quiet seas though. This talk will show you where the dragons lurk and help you navigate the stormy seas.

    Classes were introduced in PowerShell 5 and mainly to aid in writing DSC resources but can be used with non-DSC modules as well. This talk will go over some of the hidden gotchas when developing with classes including:

* Importing issues

* Verbose / Debug oddities

* Sharing classes between modules

     I've developed and released a large PowerShell project (PoshBot) that primarily consists of PowerShell classes. While I could have written the module using traditional functions and cmdlets, I wanted an excuse to try classes out on a new project. Using classes was not a smooth experience and I want to share some of my challenges.

avatar for Brandon Olin

Brandon Olin

Cloud Enterprise Architect, Columbia Sportswear
Brandon is a Cloud Enterprise Architect at Columbia Sportswear focusing on automation, configuration management, Azure, and monitoring. He spends much of his time exploring new technologies to drive the business forward and loves to apply ideas pioneered in the DevOps community to... Read More →

Tuesday April 10, 2018 2:00pm - 2:45pm PDT
406 - Meydenbauer Center
Wednesday, April 11

9:00am PDT

PlatyPS: PowerShell Help meets Markdown
  PlatyPS solves a long standing pain of writing PowerShell external help xmls. Now you can write help in markdown and verify that it reflects the code. PlatyPS brings modern markdown-based workflows to the PowerShell help authoring. We will take a deep dive in the PowerShell help engine and platyPS.
  PlatyPS solves a long standing pain of writing PowerShell external help xmls.It provides a way to
* Write PowerShell External Help in Markdown
* Generate markdown help for your existing modules
* Keep markdown help up-to-date with your code
* Generate help artifacts (maml xmls and online help archives) from markdown and ship them with your modules
  Traditionally PowerShell external help files have been authored by hand or using complex tool chains and rendered as MAML XML for use as console help.
  MAML is cumbersome to edit by hand, and common tools and editors don't provide good support for working with it.
Markdown is a very easy markup language which became a standard for writing documentation.
  We will take a look at existing big projects that are using it (like Azure and PowerShell-Docs) and some smaller projects (like PSReadLine). We will go through a (very easy!) bootstrap process for using platyPS in an existing project. We will also cover how to make sure that documentation is up to date and even add tests to your CI pipeline to make sure that documentation is always updated.
  In the second part of the talk, we will take a deep dive into platyPS internals. We will talk about markdown schema, quirks of PowerShell help engine and tool limitations. We will also cover advanced topics, like combining few different versions of your module help into a single markdown document.
  Every part of the talk will be accompanied by hands on live demos.


platyPS pptx

Wednesday April 11, 2018 9:00am - 10:45am PDT
404 - Meydenbauer Center

12:00pm PDT

Parameter Classes: Making parameter-binding user friendly
Asking for a specific data type as input can be very unintuitive and limiting for the user. Accepting anything and parsing in script however is hard to maintain. Enter Parameter Classes, introducing a flexible data adapter that can dynamically convert input as part of the parameter binding process.

avatar for Friedrich Weinmann

Friedrich Weinmann

Freelance Consultant
Generalist IT Administrator / PowerShell developer with broad IT interests and a penchant for good Science Fiction and mixing cocktails.

Wednesday April 11, 2018 12:00pm - 12:45pm PDT
406 - Meydenbauer Center

3:00pm PDT

Creating PowerShell Projects and more with Plaster
Have you often sat staring off at all the other languages having fun scaffolding their projects with tools like Yeoman, dotnet CLI, or Visual Studio wishing you had something that cool in PowerShell? Wait no longer! With Plaster you can scaffold scripts, functions modules, anything!!!

avatar for Rob Pleau

Rob Pleau

Automation Engineer, FM Global

Wednesday April 11, 2018 3:00pm - 3:45pm PDT
406 - Meydenbauer Center
Thursday, April 12

10:00am PDT

A Crash Course in Writing Your Own PSScriptAnalyzer Rules
PSScriptAnalyzer is great. You use it to check all your code to make sure it follows PowerShell best practices, right? In this session, I'll show you how to take your PSScriptAnalyzer skills to the next level by showing you how to write your own custom rules, and make PSSA check your code for them.

avatar for Thomas Rayner

Thomas Rayner

Microsoft MVP, workingsysadmin.com
I'm a Microsoft Most Valuable Professional (MVP) and Honorary Scripting Guy with many years of experience in IT. My background is in Cloud and Datacenter Management, specializing in DevOps, systems and process automation, public, private and hybrid could, and PowerShell. I write books... Read More →

Thursday April 12, 2018 10:00am - 10:45am PDT
406 - Meydenbauer Center

11:00am PDT

Writing a DSL (Domain Specific Language) for PowerShell
Creating a Domain Specific Language can often address specific problem domains better then generic coding or scripting alone. Join me as I break down what it takes to create a DSL in Powershell and show you how to approach common design patterns

avatar for Kevin Marquette

Kevin Marquette

Principal DevOps Engineer, loanDepot
2018 PowerShell Community Hero, Microsoft MVP, SoCal PowerShell User Group organizer, module author and I run PowerShellExplained.com. And I have stickers, so stop me and say hello.

Thursday April 12, 2018 11:00am - 11:45am PDT
404 - Meydenbauer Center

12:00pm PDT

Building Cross Platform PowerShell Modules
This session will be a deep dive into the steps necessary to develop, package and distribute a cross platform binary PowerShell module that runs on Windows PowerShell and PowerShell Core.

avatar for Adam Driscoll

Adam Driscoll

Microsoft MVP, STEALTHbits
Adam Driscoll is a software architect, business owner and a Cloud and Datacenter MVP based out of Hailey, ID, USA. He develops and architects threat analytic solutions for STEALTHbits Technologies during the day and runs his own PowerShell tooling business by night. He is a published author, open-source contributor and speaker... Read More →

Thursday April 12, 2018 12:00pm - 12:45pm PDT
406 - Meydenbauer Center

2:00pm PDT

Setting Up Your Own Private, Secured Package Repository - Why and How
Security and availability are good defensive reasons to curate public packages into a private repository, but there are many positive reasons as well! We will cover the benefits of a dedicated, private repository, as well as enabling secure, global reach and an analysis of repository options.

avatar for Darwin Sanoy

Darwin Sanoy

Senior Cloud Architect, Team Lead DevOps Tooling, Infor

Thursday April 12, 2018 2:00pm - 2:45pm PDT
404 - Meydenbauer Center