PowerShell Summit 2014 Recap – Day 3

If you missed the Day 2 Recap, you can find it here.

Session #1
Using PowerShell to Configure Secure Environments and Delegated Administration
Mark Gray and Someone (Schedule says Kenneth Hansen but he couldn’t make it and someone else came, and I forget their name)

This was the most amazing demo I saw all week.  This presentation focused on creating a “Safe Harbor” inside a corporate domain using PowerShell Desired State Configuration and the JEA Toolkit.  In about 30 minutes, the presenters were able to:

  • Create a new domain with a one way trust back to the corporate domain
  • Create and configure a DC in this domain
  • Create and configure a DSC Pull Server
  • Create a JEA Management Server (Jump Box)
  • Create 3 File Servers that pulled their Configurations from the Pull Servers and configured themselves
  • Part of that Configuration was the creation of secure remote endpoints using JEA and the configuration of the local admin accounts

Other Notes:

  • Blog post on securing credentials in Desired State Configuration is here.
  • All the scripts and things in the demo they used they are planning to release in 2-3 weeks (hopefully) once they get the script cleaned up
  • They used a DomainTrust resource which is not yet available (might have said that it was created for this demo only)
  • For every server they used the same .VHD that had WMF 5.0 and Server 2012 R2 with all the latest updates
  • Using endpoint configurations you can restrict parameters of commands (ie, when someone uses the ComputerName parameter you can restrict the Computer Names they can put in there)

Session #2
PowerShell and the Web – Leveraging Web Services with PowerShell
Trond Hindenes

This was another really interesting session.  Most of which was way over my head and out of my realm of expertise (by a lot) so I don’t have a lot to say about it other than that.  It was funny listening to him go on a mini rant about using JSON vs XML.

Session #3
Monitoring Using PowerShell
Josh Swenson

This was a session full of nothing but PowerShell scripts he uses to help monitor his environment.  He also talked about how those scripts came to be, what he used them for, and a basic run down of how they were used.  There was some good discussion at the end about how people use PowerShell to monitor their own environments.

You can find all the scripts he used for the presentation here.

Session #4
Detailing Your Objects
Kirk Freiheit

This was yet another super awesome presentation.  This presentation was about how to format your objects using the PowerShell and the formatting files.  Kirk went into a lot of examples and offered great detail and explanation into how the formatting process works.  Really, really good session.


  • If you have 4 or less properties, you are going to get a table
  • If you have 5 or more properties, you are going to get a list
  • Kirk was using a Start-Demo PS Module to give his presentation.  It was really slick and I will definitely be using that.  You can find it here.
  • He also mentioned the EZ Out Module to help you write your own PS Format Files.  This is something I will also be trying out.  You can find it here.
  • There is a hidden property  (this came from an audience member) that will allow you to get all the PSTypeNames at once for an object.  You use it by doing something like ( Get-Computer | Select Blah, Blah2, Blah3).PSTypesName

Session #5
Scripting Best Practices
Ed Wilson

Another excellent presentation full of laughs.  Light on the PowerPoint slides, he talked about what he considers to be Best Practices for working with PowerShell Scripts.


  • Best practices are situational
  • Ask yourself, what is the point of the script?  Will I ever use this again?  If the answer is no, consider whether a true script is really needed.
  • Key to writing scripts is readability.  Saves everyone time.
  • Tip:  Add Start-Transcript to your profile
  • Avoid using backticks ( ` ) whenever possible
  • Ed uses lots of variables in his scripts to keep his lines short
  • Learn how to use the Debugger!  Scripting Guy blog post on this can be found here.
  • Write Functions.  They are the fundamental building blocks for re-using code
  • Don’t write Templates, create Snippets instead
  • Advanced Functions act like cmdlets
  • Regular functions should return objects and be simple (perform one task)
  • Dude, modules are key!  Modules can be shared and re-used.
  • Should use versioning and source control with Modules.

Session #6
Monad Manifesto Revisted
Jeffrey Snover

It’s amazing how much of what Jeffrey originally envisioned all those years ago came to be.  I have never heard any of the stories about how it got started, so it was really cool to hear him talk about the challenges they had getting PowerShell off the ground and how long it took.  Amazing to think how far it has come in such a short time.


  • Originally founded as a way to kick start development in India.  This didn’t end up working well.
  • Manifesto was specific enough to give direction, vague enough to empower innovation
  • Focus is on “glue language” and empowering people
  • The number of “click next” admins is very large still, DSC is their last hope
  • Pay attention to OneGet at TechEd.  Something is coming.
  • How do we get developers to start using PowerShell?
  • Microsoft’s overall GUI strategy is an exercise in incoherence

Future of PowerShell:

  • Faster Cycles -> Cloud Cycles
  • More Community Engagement
  • Developers and DevOps
  • Business value increases with an increase in the consumption of computing
  • Minimize effort and risk to consume tons of computing
  • Prediction:  Open Source PowerShell (some day in the future)