PSConf EU Summary Day 1

This week I attended the PowerShell Conference EU in Hannover in Germany and it was one of the best PowerShell conferences I attended until now. It started with the Agenda Competition for which I created an VSCode extension.

How cool is that? Smile psconfeuvscodeextension

I attended the following sessions during the 3 days at the PSConfEU conference:


Title Speaker List Tracks List Description
Opening Ceremony Tobias Weltner Automation Conference organizer Dr. Tobias Weltner kicks off the event and provides all delegates with last minute information and guidance.
Keynote: State of the Union Jeffrey Snover PowerShell Team PowerShell inventor and Technical Fellow Jeffrey Snover gives an overview where the PowerShell ecosystem stands and what to expect next
PowerShell Warm-Up: Quiz & Quirks Tobias Weltner PowerShell Start the day with an interactive code review session where we look at really stupid questions asked by true PowerShell experts. Would you have been able to solve these puzzles?
Catch Me If You Can - PowerShell Red vs. Blue Will Schroeder Security Attackers love for PowerShell is now no longer a secret, with 2016 producing an explosion in offensive PowerShell toolsets. Unfortunately, the offensive community often fails to research or share relevant mitigations with their defensive counterparts. This leaves many defenders without the information they need to protect themselves and their networks from these attacks. This talk will demonstrate several commonly used malicious techniques and toolsets, including PowerPick (running PowerShell without powershell.exe), subversive PowerShell profiles and ps1xml’s, malicious ACL downgrades, and more. I will then cover current mitigations and/or detections for each offensive technique or tool, demonstrating how to best handle this new offensive reality. Offensive PowerShell isn’t unstoppable- come learn how to defend your network from the bad guys.
Hell freezing over: PowerShell on Linux and GitHub Bartosz Bielawski Cross-Platform and Open Source PowerShell was always bound to the single operating system and for quite some time it was one of the core elements of Windows. It was hard to imagine it running on any other OS. Also, as a core element of Microsoft’s flagship it didn’t seem like a perfect candidate for an open source project. Last year both things changed. Join this session to see PowerShell running on Linux and to learn how important this change is to the entire PowerShell ecosystem. Learn how you can participate to make PowerShell better for everybody!
Getting started with Windows Server Containers Flynn Bundy NanoServer and PowerShell as a Service In this session I want take the audience on the journey of why, what and how Windows Server Containers. This session will cover real life scenario's that traditional teams run into and how to overcome these in a very modern agile approach. This session will contain numerous demo's such as introducing the concept of Docker for Windows Server, Creating a highly available web application and some of the major advantages of virtual machines. This is aimed at people who may have little to no knowledge in Docker and or Containers on Nano Server.
Auto-generated User Interfaces with Phosphor David Wilson PowerShell In this session we’ll be discussing a new PowerShell module project codenamed “Phosphor” which aims to provide desktop and web user interfaces generated from PowerShell modules. We’ll discuss the overall goals and approach with an early demo of what we’ve accomplished so far. We’ll also discuss how you can get involved in the code!
The Release Pipeline in Practice Matt Hitchcock DSC and DevOps More Organizations are beginning to evaluate or make the move to DevOps as technology has made it more practical. Microsoft have released a Release Pipeline whitepaper and demo guide to get you set up in TFS, but what does it mean to actually implement this? In this session, Matt will walk through how he has helped a large Microsoft customer make the transition to Infra-as-Code for one of their core technologies. We will take a look at the timeline of events and activities that got us there, what a Release Pipeline actually looks like in practice with its supporting components and how it works together. More importantly, we will talk about the cultural resistance and challenges that were overcome along the way and what you might consider doing to get your organization over those same hurdles.
Evening Event Food Evening Event takes place at Hannover Zoo. Meeting point is the Zoo main entrance at 18:45h sharp (6:45pm). Do not forget to bring your badge. It is required to enter the Zoo.
PowerShell Microservices: At the Service of DevOps Gael Colas DSC and DevOps We've seen in the last few years, how the traditional 'IT Pros' or Ops paradigm has shifted towards the practices previously embraced by the Devs only. But I believe Dev is the New Ops, so let's explore how SOA and Microservices applied to PowerShell can help the 'IT Pros'. In this session, after bootstrapping your Message Queue (MQ) knowledge and its use for Inter-Process Communication (IPC), we’ll introduce PSRabbitMQ, a module to interact with the message broker. Then we'll take a deep dive into a demo of PowerShell Microservices communicating using JSON messages sent via a Message Queue. In the second demo, we'll see a multi-node, multi-thread, cross-technology and cross-platform communications, with Python services using the Celery library being called, and calling PowerShell Services on distributed systems. Since PowerShell and .Net core are now open-source and the RabbitMQ .Net client will soon target .Net core, the tools and techniques demonstrated in this presentation may be a path to cross-platform PowerShell Microservices on Windows, Nano, Linux, and all sorts of containers!
Start-NewEra -Repo PowerShell Ben Gelens Cross-Platform and Open Source Talk about OSS xPlat PS. Demo heavy. Based on my earlier session but updated of course :-)
Scoping in Depth Bruce Payette PowerShell Team PowerShell scoping can be a complex beast. Find out the details of how scoping works in modules, scripts, closures and APIs
Take your Automated Release Pipeline to the next level! Jan Egil Ring,Øyvind Kallstad DSC and DevOps Step up your automation game by implementing an automated release pipeline! In this talk we will see how we can leverage the Release Pipeline for more than just publishing modules to the PowerShell Gallery. We will demonstrate how you can manage infrastructure deployment, change management and decommission using Cloud Templates, Configuration Management, Source Control and Continuous Integration services.
Ghosts of DSC past, present and Yet-to-come Bruce Payette PowerShell Team A journey through DSCÆs past, present and potential future: The lessons learned and how they could reshape future DSC features and functionality
Mastering a complex DSC lab infrastructure û The story of the BMW Group DC deployment Jan-Hendrik Peters,Raimund Andree DSC and DevOps In a number of projects around DSC we wanted to focus on developing DSC Resources, DSC Configurations and testing this in a Multi-Pull Server scenario. Being able to rapidly deploy a lab specific to each with AD, PKI and DSC Pull Servers already deployed was a huge timesaver. This session will walk through the deployment process automated with AutomatedLab. We will also demo the result of a large DSC project to automate the configuration of domain controllers within this lab which covers DSC Partial Configurations on multiple DSC Pull Servers, automated creation of DSC Configurations and DSC Reporting.
DevOps and the Harmonious Whole Kenneth Hansen PowerShell Team A perspective on how to implement DevOps in a way that will work across your organization
Advanced PowerShell Module Development with Visual Studio Code David Wilson PowerShell Team In this session you’ll learn how to use the PowerShell extension for Visual Studio Code to write, test, and debug cross-platform PowerShell modules, even those containing C#-based cmdlets.
Azure Automation - Advanced Runbook Design Jakob Gottlieb Svendsen Automation a session packed with ideas for runbook design patterns, best practices and other useful tips and tricks. Get inspired and learn how a PowerShell runbooks should be designed and structured
JEA Deep Dive in 45 Minutes Aleksandar Nikolic Security Expect a fast-paced, demo-heavy session about Just Enough Administration (JEA), a new PowerShell security feature. Learn how to create boundaries for your users, and give them the minimal set of privileges they need to perform their tasks. In this session, we’ll demonstrate how to author, deploy, use, and audit a JEA including the improvements in the latest version of PowerShell. If you want PowerPoint slides, look for another session.
PowerShell Present and Future Angel Calvo PowerShell Team Angel is General Product Manager at Microsoft for Azure Configuration Management and Automation. This includes PowerShell, DSC, OMS Automation and Configuration. So Angel is the perfect speaker to provide an update on Microsofts current and future plans for Windows, Linux and Azure, and the road ahead to make PowerShell the best tool for DevOps and to enable Artificial Intelligence for IT
AMA - Ask Microsoft Anything Angel Calvo,Bruce Payette,David Wilson,Jeffrey Snover,Joey Aiello,Kenneth Hansen,Mark Gray PowerShell Team Bring your questions to the PowerShell team, and get first-hand answers



Here is my summary from some of the sessions I followed on the first day.

Session: Opening Ceremony

Tobias did a great job to feel us all welcome at the PSConfEu.


And in the mean time an attendee sitting besides me installed my VSCode extension. Cool to see people use things I created.

Session: Keynote: State of the Union

Jeffrey Snover answered the question if “PowerShell was done?” His answer to this was Yes… and No. The new mission of PowerShell is now “Being the connector of the Hybrid Cloud”

Core PowerShell will be the connector for the Hybrid Cloud. Not Windows PowerShell. There is a difference between Windows PowerShell and Core PowerShell. Check Jeffrey’s reaction on this on twitter.

Jeffrey also mentioned VSCode and the PowerShell Extension which David Wilson developed. The reason according to Jeffrey why we developed VSCode and the VSCode Extension is that “we wanted a first class PowerShell editor on Linux” Check out the reactions on twitter.Smile

Jeffrey also talked about Core PowerShell in Azure, like Cloud Command Shell. (PowerShell will be added soon besides Bash). DSC as Native Azure Configuration. That means a Common Windows & Linux LCM, Multiple LCM Instances, Native code LCM for lightweight environments and LCM as Library.

You can watch the complete Keynote on YouTube.

Session: PowerShell Warm-Up: Quiz & Quirks

Tobias got the crowd warmed-up with his Quiz & Quirks and of the quirks he showed was fixing Return Values.

 #Fixing Return Values by Tobias Weltner
Function Test-Something {
 $null = . {
        "I can leave behind whatever I want"
        'all goes to $null'

    # Her I am declaring my ONLY return value
    # (just like any other scripting language)
    return 'true return value'

You can watch the YouTube video here.

Session: Catch Me If You Can - PowerShell Red vs. Blue

Will Schroeder talked about how attackers are using PowerShell and it turns out they are turning away from PowerShell and now trying different ways to attack our systems.

You can watch the YouTube video here.

Session: Hell freezing over: PowerShell on Linux and GitHub Bartek Bielawski and Daniel Both drove with me to Hannover and during our road-trip we had some great conversations about their sessions already.


It was cool to see how you could use PowerShell on Linux and even use VSCode on Linux!

Session: Getting started with Windows Server Containers

Flynn Bundy walked us through the why, what and how Windows Server Containers and had some great demos.

He talked about which issues Containers can help solve.

  • Windows Updates
  • User Management
  • Unrequired Features
  • Configuration Drift
  • Configuration Management
  • Large Management Overhead
  • Unrequired Process
  • Image Size
  • Clustering
  • Storage Issues
  • Start-Up Times

Definitively a session worth re-watching when published on the YouTube Channel of PSConfEU!

Session: Auto-generated User Interfaces with Phosphor

David Wilson showed Phosphor, which is a PowerShell module designed for generating user interfaces from PowerShell modules. Keep in mind that this project is to be considered a proof-of-concept and not a supported Microsoft product.

How does it work?

  • Host ASP.NET Core inside of PowerShell
  • HTML/JS UI exposed as static files
  • Talks to REST Service in PowerShell
  • UI generated based on responses from REST Service
  • Service supports multiple sessions, windows.

Future direction of Phosphor:

  • Generalize UI model
  • Create simple DSL for UI Authoring
  • Potentially support multiple front-ends
    • Native desktop (UI (WPF, GTK)
    • VS Code extension UI
    • Azure Portal
  • Help Viewer (and possibly editor?)


You can download the code from Github and follow the build steps to manually install the module. The build script does not work according to David.

Here is an example when I used the following command:

 show-module -Module  Microsoft.PowerShell.Management


If you get below message when running redo the following steps:


 cd src/Phosphor.Client
npm install
npm run tsc

Those steps fixed my initial issue.

Why is Phosphor such a cool project? This will help you create PowerShell-based user interfaces in any platform or UI framework. For more ideas check out the goals section on the Github Phosphor page.

And the cool thing of Phosphor is that is has a REST API you can call. Make sure you have started Phosphor and run the following commands:

 #Load Module
Import-Module .\src\Phosphor\Phosphor.psd1

#Start Phosphor
Show-Module -Module Microsoft.PowerShell.Management

# calling phoshop REST API
# Get Processes
$SessionNumber = 1
$EndPoint = {http://localhost:5001/api/sessions/ {0}} -f $SessionNumber 
Invoke-RestMethod -Uri "$EndPoint/modules/items/Process" -OutVariable Processes

# Get Services
Invoke-RestMethod -Uri "$EndPoint/modules/items/Service" -OutVariable Services

$Services.Items | Get-Member

#Stopping Bits Service via Phoshor
#Invoke-RestMethod -Uri 'http://localhost:5001/run?command=Stop-Service¶ms=-InputObject=spooler&-OutVariable=service'

#Get session info
Invoke-RestMethod -Uri $EndPoint -OutVariable Session
$Session | Get-Member

$Session.model.modules | Select-Object -ExpandProperty Nouns


Keep in mind this a Proof of Concept and things are likely to change. David told me the REST API will have some changes too.

Let’s start contributing by cloning the repo and submit ideas to David.

Session: The Release Pipeline in Practice Matt Hitchcock talked how to implement a Release Pipeline for DSC. One of the tips he had to implement Rollback into your DSC configurations is to first create an Absent Configuration in your DSC Configuration and change that later to Present. Great tip from Matt, which I’m going to implement in my DSC Configurations too.

Definitively as session to watch when published on the PSConfEU YouTube Channel.

Evening Event

The Evening Event took place at Hannover Zoo and offered a great way to network and have great conversations with many PowerShell minded people.


David with the PSConfEU Posse Smile

This was a great ending of the first day of the PSConfEU. More info on the sessions in the next blog post.