Category Archives: PowerShell

MiSCUG – Using Power BI to Report OS Deployment Stats

On 11 January 2019 I had the privilege to speak at the Michigan System Center Users Group meeting on the topic of using Power BI to report your OSD build stats.  This is a companion post to that presentation.

This is an update to my original post ( here ) on how to gather and present statistics on your build sequences.  I’ve taken what I’ve learned since that original post and have expanded the process to handle not only an OSD “build” but also a WaaS CompatScan or In-Place Upgrade, or any other Task Sequence.

Read the rest of this entry

Nested Task Sequence Mapper

I’ve been looking for a simple way to identify and map out the nested task sequences.  This is the first part of a project that I’m working on.  The goal of the overall project is to duplicate an entire task sequence “suite” of the parent and all nested sequences, and then update all the nested references.

Read the rest of this entry

Automating Windows 10 Servicing

[6-Jul-2018: Updated Script to v 1.2 – New .NET 3.5.1 install command (per Mike Horton @mikeh36)]

After attending MMS one of the items that I put on my “Post-MMS To Do” list was to patch my OS Upgrade package source the proper way.  I don’t want to do it manually, nobody does, so I set out to learn exactly how to do it right and script it.

That where Mike Terrill and Johan Arwidmark come in.

Read the rest of this entry

So your boss is going to want stats for your OSD sequence? [Part 1 – Data Gathering]

How to provide hard statistics on your build sequences.


A while back my boss gave me two goals for our OS deployments; 1) he set a target for 90% successful builds and 2) build times as close to 1 hour as possible.  Okay, getting there is one thing, but how do I report on that?

Read the rest of this entry

Creating Your Own Personal Hydration Solution – Part 4: Configuration Manager Infrastructure

Part 0 Introduction
Part 1 Setting Up
Part 2 First VM – Windows Router
Part 3 Domain Controller
Part 4 Configuration Manager Infrastructure

Configuration Manager 1511

After completing the first three parts of this series you would have a virtual lab with 4 separate network segments all connected to and routed through a Windows 2012 R2 server (RTR01) acting as the router. This server will also provide Internet access to any virtual machines that are connected to the 4 network segments.  You also would have an Active Directory domain controller (DC01) that provides DHCP and DNS services to the lab.

In Part 4 we are going to build out a Configuration Manager 1511 infrastructure.  This will include a Primary site server (CM16) and 2 Distribution Points (DP16a & DP16b).

Read the rest of this entry

Creating Your Own Personal Hydration Solution – Part 3: Domain Controller

Part 0 Introduction
Part 1 Setting Up
Part 2 First VM – Windows Router
Part 3 Domain Controller
Part 4 Configuration  Manager Infrastructure

DC01

After completing parts 1 and 2 of this series you would have a virtual lab with 4 separate  network segments all connected to and routed through a Windows 2012 R2 server (RTR01) acting as the router.  This server will also provide Internet access to any virtual machines that are connected to the 4 network segments.

In Part 3 we are going to build a domain controller (DC01).  This server will provide not only Active Directory Domain Services to the lab but also DHCP and DNS services as well.

Read the rest of this entry

Creating Your Own Personal Hydration Solution – Part 2: First VM – Windows Router

Part 0 Introduction
Part 1 Setting Up
Part 2 First VM – Windows Router
Part 3 Domain Controller
Part 4 Configuration  Manager Infrastructure

RTR01

Routing between subnets and access to the Internet (required for Windows Activation) is handled by RTR01, a Windows server running Routing and Remote Access (RRAS).  This should be the first virtual machine to be built and configured as machines on the other subnets will need this server in place for them to successfully build.

This virtual machine will have 5 network adapters, one on each network.  The build will create a basic Windows server.  To configure the server you will need to run some PowerShell as well as manually configuring RRAS.

Read the rest of this entry

Creating Your Own Personal Hydration Solution – Part 1: Setting Up

Part 0 Introduction
Part 1 Setting Up
Part 2 First VM – Windows Router
Part 3 Domain Controller
Part 4 Configuration  Manager Infrastructure

In this first installment we’ll work on getting the foundation set for building up the lab.  We’ll configure the virtual networks, the host networking and get our MDT environment installed and configured.  We are going to use a number of tricks that I’ve learned from others.

[This is going to be a long one.]

Read the rest of this entry

PowerShell – Archive all Task Sequences to XML with Index

We’ve amassed a very large number of task sequences since migrating to Configuration Manager 2012 and it got me thinking about ways to archive off older sequences so that we can clean house.  So I came up with this script.

The script will first collect all of the task sequences in your site.  Next it will enumerate through them, write the sequence to an XML named after the task sequence ID and finally create a CSV index of the TSID, task sequence name, the last modified date of the sequence and when the sequence was backed up.

Read the rest of this entry

Updated Windows 10 ISO Creation Script

Several weeks ago Johan Arwidmark published an article about creating a Windows 10 ISO using the install.esd file generated from the upgrade process.  He also included a PowerShell script to automate the process.  His article can be found here.

I’ve used this a number of times and it works wonderfully.  Call me odd, but I have a set of 4 virtual machines that I use simply to generate the ISOs and installation source files.  I have a pair of Windows 10 Professional (32bit and 64bit) and a pair of Windows 10 Enterprise (32bit and 64bit) VMs.  I use the Professional SKU in my lab and the Enterprise SKU for testing at work.

I modified Johan’s original script to automate some “branding” of the process.  For example, the ISO generated includes the build number, SKU and architecture.  When a new build is released to the Fast Ring my VMs update and then I just run this script.  The script determines what build, SKU and architecture the VM is running and generates a unique name for the ISO as well as the parent folder that also contains the contents of the ISO.

Read the rest of this entry