web analytics

Home » Posts tagged 'configmgr'

Tag Archives: configmgr


OSD – Enforce Default User Background

To ensure that the same background is applied to all users when they log in, you can add two Task Sequence steps that will automatically set their background to whatever you specificy it to be..

Then we can set the style, or how it will apply…

There are 6 possible values:

Wallpaper StyleValue Data

Rermember to replace <PATH>\background.jpg with the actual path of your file (No quote marks or the image wont be applied!)

Windows Admin Center now in ConfigMgr SUP

Was updating ConfigMgr’s Software Update Product List and came across this:


OSD – Remove Edge Icon from Windows 10

Here is how to remove the Edge Icon from the desktop on Windows 1803:

Create a new “Run Command Line” step with the following command:

And voila – the Icon is gone!

(Credit for Reg Hack goes to  NathanielArnoldR2 on Reddit)

OSD – Activate VM using Hyper-V AVMA Key

If you are running Hyper-V on Windows Server 2016 DataCenter, then one nice feature is that you can activate VMs running a Server Standard / DataCenter guest OS using a special “Automatic Virtual Machine Activation” key.

The keys are:

Operating SystemKey
Windows Server 2012 R2 EssentialsK2XGM-NMBT3-2R6Q8-WF2FK-P36R2
Windows Server 2012 R2 Standard DBGBW-NPF86-BJVTX-K3WKJ-MTB6V
Windows Server 2012 R2 DatacenterY4TGP-NPTV9-HTC2H-7MGQ3-DV4TW
Windows Server 2016 Essentials B4YNW-62DX9-W8V6M-82649-MHBKQ
Windows Server 2016 StandardC3RCX-M6NRP-6CXC9-TW2F2-4RHYD
Windows Server 2016 Datacenter TMJ3Y-NTRTM-FJYXT-T22BY-CWG3J

So naturally, I incorporated it as a step in my Task Sequences for Server deployments.

First, I created a Group called “VM Guest Actions” and gave it the following condtions:

This ensure the following steps only apply to Virtual Machines..

For each step in this group we also need to ensure it only applies to qualifying VMs – in this case – 2016 DataCenter

Apply this to all steps in the group – changing the condition as appropriate for your Server OS.

First step we need is to assign the AVMA key, so create a new Command Line step with the following command:

Remember to replace the key for your version of windows..

Next step is to activate the key:

So, again, we need another Command Line step with the following command:

Again, remember to filter it for your desired OS Version.


Now when, you build a server OS and its a VM on a DataCenter Host, it will get activated.



OSD – Default User Settings

This post will guide you through how to make user settings apply to all users who login to the machine

We do this by temporarily mounting the Default User hive and injecting the required settings into the appropriate place.

Mount the Default User Hive

Add a new “Run Command Line” step, give it a suitable name and then add the following command line:

Make note of the “HKU\DU” portion – this will replace all references to HKU  or HKEY_CURRENT_USER and ensures your settings are applied correctly

Add Your Registry Keys

Here will will add the registry setting that will hide the People Icon from the Taskbar

Hide People Button

So first, we need to add another “Run Command Line” step, name it – in the example above I named it “Modify Registry – Hide People Button”

Next, in the command line enter:


Repeat all this until you have added all your registry keys

Other settings I use are:

Default LockScreen

This only works on Server 2016 and Windows 10 Enterprise or Education Editions

Just replace “<PATH>\lockscreen.jpg” with the path to your desired lockscreen file.

Remove 3D Builder Folder

(Notice that this is in the “Local Machine” portion of the Registry, but works just the same here!

Show the Search Icon:

Set Powershell on Win X (Right clicking the start menu)

(Though I think this one is redundant now since windows 10 v1709 – but still valid for Server 2012 & 2016)


Set Cortana Voice  (eg UK Susan)

Change this to suit your language – and ensure you’ve installed the correct Language pack and additions!

Unmount the Default User Hive

This is similar to the “Mount the Default Hive” step, but with this command line:


OSD – Monitoring OSD Deployments

Unfortunately, ConfigMgr doesn’t have a default filter for monitoring what is happening during an OS Deployment

Fortunately, it is rather easy to create a filter yourself

Open the Console and head to the Monitoring section, expand System Status and then on “Status Message Queries”

Now, Click on the “Create Status Message Query” on the ribbon..

Enter a name for your query – (EG OSD Deployment Monitoring) then click  on Edit Query Statement

Click “Show Query Language” and copy the following code into the box:

the text that is preceded by ## will act as a prompt for you later.

The window should now look like this:

Click OK until all the dialogs are closed.

Your query is almost ready to run.. All we need now is the Deployment ID you want to monitor.

This is obtained by going to your Task Sequence, Clicking on the “Deployments” tab and adding the “Deployment ID” column

Make a note of the Deployment ID then go back to your query in Statue Message Queries and run your query by selecting it and clicking “Show Messages” (Don’t double click it or you will open the editor!)

Click the “Property Value” and either type in your Deployment ID, or click on “Load Existing” and find it in the dropdown box

Finally, click on Time and choose the appropriate time range.

Your query will now be running and you can refresh (or set an auto-refresh) to see where your deployment is up to!

OSD – Installing Updates to new Machines

Here I’ll walk you through how I use the “Install Software Updates” step in your Task Sequences to allow you to install Software Updates during an OSD deployment of a new machine.

If a machine is already in ConfigMgr, then the step will use the SUG’s already deployed to any collection the machine is already a member of as normal.

To do this, you first need to create a Software Update Group (SUG) that contains all the updates you want to deploy.

I called my “SUG – OSD Updates” and will contain ALL my updates for Server 2016, Windows 10 and any applications

To create the actual SUG I had to open an existing one, select an update and then “Create Software Update Group”.

Then, its a case of going through all your SUGs, opening them up and editing the memberships to include those updates in the new SUG as well as their current one.

Once done, deploy it to the “All Unknown Computers” group as required.

Now, in your TS, create a new group – such as “Software Updates”… near the end of the task sequence so that everything has been installed and configured

Add 2 new steps

Run Command Line – We need this to then do a Software Update scan so add the following command to this step:

Install Software Updates – Now we actually install the updates..

There are 2 options available – Required and Available – these correspond to the deployment type you chose before, so since I used “Required, I will chose that here too.

And that’s all there is to it!  Now, when you next image a machine, the software updates in the SUG you deployed will be installed

Just be warned that this will significantly increase your deployment times.

ConfigMgr – Organising your Software Update Groups

Ever since I started using ConfigMgr, organising Software Updates has been an ongoing struggle

I’d tried various methods – all were good in their own right, but now I’ve settled on a way that keeps the names short and also easy to identify them

The format is fairly straight forward – <type> – <YYMM> – <Function>

For example:

SUG – 1803 – Windows 10 identifies that this is a normal Software Update Group (SUG), published in March 2018 (1803) and contains Windows 10 updates


the ADR prefix is used to identify updates automatically deployed using an Automatic Deployment Rule.

Periodically, I then merge updates into one of the yy00 groups  (eg 1700 – Windows 10 contains all Windows 10 update released during 2017)

OSD – Remove Builtin Apps from Windows 10

For those not using LTSB but still want to remove all those builtin apps that come with Windows 10, the following script is what you need!

This will blanket remove all apps unless in the $WhiteListedApps array.

To get a list of the apps you need to run:

Copy the value in the “Name” Column into the $WhiteListedApps array to ensure its not removed. Some apps may be dependant on other apps, so make sure you test thoroughly!

Once you are happy, save it to a sub-folder where you keep your Source files and create a new ConfigMgr package without a a program. Once created, edit it and under the Data Souece tab enter the path to the folder you created above. Deploy it to your DPs.

Now edit your task sequence and create a new powershell step as shown here

And there you go! If you’ve done it right, then only the whitelisted apps will be installed on the target machine.


(I cannot take credit for the script – that honour goes to SCConfigMgr)

OSD – Creating a Multi OS Task Sequence

For a while, like most of you I guess, I have maintained at least one Task Sequence for not only each type of OS (Server, Windows 7, Windows 10, etc) but also for each edition of an OS (Pro, Enterprise, Standard, Data Center, etc).

Whilst this is great, it does mean that it requires a lot of effort to keep these up-to-date when you have new Applications, or Updates ,or drivers.

Each individual TS needs to be updated to reflect those changes.


So, I decided to try and reduce that to one “Super” task sequence that has everything in on place and installs the required OS, Setttings and Apps all from a single variable that you specify at the start of the Deployment.

Here’s how:

Create the Collection Variable

This is essential – without this the whole thing wont work. Simply create a new Collection Variable (see here for how) and call it something suitable – I used “OSSelection”.

Create the Task Sequence

You can either create a new TS from scratch, or as I did, create a blank TS and copy/paste your existing information in and edit it there.

For ease I am only doing 2 OS types – Server 2016 and Windows 10

Once you have done that you can start to organise it depending on your requirements.

First up was to select which Operating System to apply.

So I created a group called “OS Selection and moved the existing Apply Operating System Image step into here and copied it, renamed them to my respecting OS and changing the settings accordingly. The example below shows my settings for Server 2016:

Server 2016 Settings

Once done, we now need to tell the TS when to apply these settings by clicking on the Options tab and settings the conditions as shown:

.This means that this step will only apply if you enter “2016” into the prompt during deployment – more on that later

For Windows 10, I decided to use the release number (1703, 1709, 1803, etc)

It is then just a case of repeating the process for all the settings where you only want them to apply to specific OS types or versions

The following condition can be used to apply to all non Windows Server OSs (10,7, etc) and, as its applied to a group, will affect all steps within that group:

And this is the end product. The expanded sections (except the top branch) are where I have applied my conditions:

That’s it – just deploy it to the desired collection (In this case – All Unknown Computers). Oh and remember to add a boot image as well!

I also created Collection Variables with preset values so that if a machine needs to be re-imaged, the correct OS Variable is re-applied. (You don’t want your Web Server to become Windows 10!)

Deploying your Task Sequence

Once you have deployed your TS you can now use it:

Select the Task Sequence:

Now Fill in your variables – As this is a new computer, I also need to fill in its intended name.

By entering “2016” I am saying I want to install Server 2016…

And we’re off..

That’s it!

Happy Imaging.

%d bloggers like this: