ConfigMgr Technical Preview 1801 – Phased deployments


The ConfigMgr product group just keeps on producing builds for us to test out and here is the latest one, ConfigMgr Technical Preview 1801. One of the new features they introduced that caught my attention was something they called “Phased deployment” and in the documentation

they wrote:


Phased deployments automate a coordinated, sequenced rollout of software without creating multiple deployments. In this Technical Preview version, the phased deployment wizard can be completed for task sequences in the admin console. However, deployments are not created.


Links to the ConfigMgr Technical Preview 1801 docs and info :


Let’s take a quick look at this and head over a task sequence and in this particualar case we will try to do a phased deployment with the “Awesome task sequence” and from there we will right-click on the TS and choose ” Create Phased deployment”



A wizard will appear were we need to specify a name and choose our pilot collection and production collection


Once we clicked “Next” we get some options to configure and they seem to be self explanatory


  • Criteria for success of the pilot phase
    • Deployment success percentage – Were we can specify a critera between 0-100 %


  • Conditions for  beginning the production phase of deployment
    • Automatically begin this many days after the success of the pilot phase – Pick how many days after the success of the pilot phase the production deployment should start
    • Wait for me to manually being this phase of deployment – Determine if we want to start it manually


  • Once the production phase begins, target all the devices within days – Choose number of days


  • Once the device is targeted, apply the upgrade
    • As soon as possible
    • Deadline time (relative to the time of the device is targeted) – Choose between hours, days, weeks, months



Click “next” and you will get an overview of the different phases



Next up is to set a failure rate where the deployments will be stopped if the failure rate is above X procent





Once done with the Wizard you will find the phased deployment under the lower statusbar.



As stated in the release docs for 1801 the phased deployment in this release doesn’t create any deployments so the feature Isnt “working” yet but I personally think its a really good Idea thats needs some fine tuning for sure but the concept Is awesome ! Can’t wait for the “updated” version of this feature so we can play around some more with it.

That’s all for now and until next time, cheers !

Don’t forget to follow me on twitter


And you can also find me blogging over at

#configmgr, #technical-preview, #technical-preview-1801, #tp1801

ConfigMgr Technical Preview 1710 – Run script update


Last night for us Europeans there was another ConfigMgr Technical Preview release and this time its version 1710. There are many new great features indroduced to this Technical Preview and the full overview you can find over at Microsoft.


In this post I will focus on one of the things that i find the most exciting in regards to the Run Script feature which is a way to almost in real-time execute powershell scripts directly on clients.

See my other posts on this feature if you need to get up to speed on what it is and how to use it:




The Wizard


One of the big updates here is the wizard and the ability to get realtime output to show up in the wizard during execution of the script.

When executing the script you will see a green statusbar that indicates that somethings i happening and under that you know have box that will populate with data onces the client have runned the script and reported back which just takes a few seconds.


(Side note, The script I’m running below is just a Ping to localhost on each client)



One of the options you have is the “Script details” found in the botton left corner and here you will se information like “Script name, Script Version, Last modified Time, Collection ID”



In the middle you have “Summary” which is the default one you will see and from here you can change how you want to view the data.

The data you can view is

  • Script output
  • Script Exit code

and you can view them as

  • Bar Chart
  • Pie Chart
  • Data table



You can also view this information on scripts you ran histroically if you go to Monitoring -> Script Status and right-click and than click on Show status (You will also able to preview the some information in the lower part of the console)



After clicking on Show Status you will get prompted by this windows containing all the info we saw in the Wizard when executing the script and can sort the data in the same way.



The next thing i want to showcase is the Parameter functionallity which gives us the ability to specify a parameter when executing the script towards a collection. Here we are creating a new script which is called “Ping Parameter”

and in this script we will add a parameter and then do a ping with a variable based on that parameter.



Once clicking “Next” we get option to Edit the Parameter



From here we can change a few options like Data Type, required true or false etc. Also able to add a Description that will show up later when executing the script.



Once configured click next and then you have to approve the script as always. Next step is to run the script and when we do that we get the following option now to enter a parameter. In this case we need to enter the computer name we want to ping with the ping script we just created.

The description box shows the information we wrote earlier telling the user who executes the script some information about the parameter and what they need to enter.



We run the script and gets prompted with information as expected



but if we check under “Script Details” we find additional information on the parameter we entered




These are really cool additions to this great feature and I’m really happy that the ConfigMgr team just keep on working on it and add functionallity. Hopefully we can see some of these changes to the pre-release feature in the next ConfigMgr CB build.



That’s all for now and until next time, cheers !

Don’t forget to follow me on twitter


And you can also find me blogging over at



#configmgr, #powershell, #run-script, #technical-preview, #technical-preview-1710

ConfigMgr related videos from Microsoft Ignite 2017


Ignite 2017 is now over for this time and Microsoft have already announced that they will come back to Orlando next year for Ignite 2018. Until next year we have hours upon hours of interresting videoes to watch and in this blog post I will highlight some of the talks that covered ConfigMgr related topics but also other videos that covered modern management and management in generall since they are often highly relevant if you are a ConfigMgr administrator.


You can find all the videos over at

or over at their yourtube channel



Microsoft 365: Modern management and deployment


What’s new in Configuration Manager




Dig deeply into BranchCache: Learning from the experts

BranchCache is a Peer-to-Peer solution that comes with ConfigMgr which aims to help out with content distribution. One of the biggest challanges enterprises are facing is bandwith and size of data that needs to be transfered over the network so its important to know when and how P2P can help out with content distribution.




How to design and complete your successful move to Windows 10 and WaaS



Learn how to service Windows 10 using Windows Update for Business


Secure Windows 10 with Intune, Azure AD and System Center Configuration Manager




Conduct a successful pilot deployment of Microsoft Intune




This is just a small sample of all the talks and I highly recommend you head over to or to


That’s all for now and until next time, cheers !

Don’t forget to follow me on twitter


And you can also find me blogging over at

Baseline Evaluation with Run script feature in ConfigMgr 1706


One of the new pre-realease features in ConfigMgr 1706 is the Run Script function which makes it possible to run Powershell scripts directly from the ConfigMgr console towards clients. This is a huge benefit to be able to do so because this means as long as the client is active in ConfigMgr console it will execute the script you triggered almost in real time and without going through the process of making sure that WinRM is active on the client and configuring firewall and all the other things that can be an issue when you deal with clients on different subnets, physical locations, behind different firewalls etc. As long as you have your ConfigMgr infrastructure in place and the clients are active you are all good to go.


What you could do and as I will showcase in this post is to invoke Configuration baseline evaluation on demand with the Run script function. I have an old blog post on how to to it with Powershell remotely ( ) but that means you have to have everything in place to remote access clients with Powershell which isn’t always the case in a lot of environments for many reasons.

The reason for creating this script in the first place is because there’s no built in function to evaluate baselines on demand in ConfigMgr. I have also created an uservoice to add that function in the UI console here:

Give that uservoice a vote if you find it useful and in the mean time we can use the run script function to achieve the same result.


If you want to know in detail how to active the run script feature in ConfigMgr 1706 and how to create a script and run it in detail check out my blog posts about that over at CTGlobalservices blog:


Baseline Evaluation with Run script feature


Here’s the Powershell script we want to use to evaluate all of the baselines deployed to the machines in a device collection. If you just want to evaluate a specific one you need to modify the script.



When testing this script as a Run script I wasn’t able to run the original Powershell script as a function, it returned Exit code 0 but didn’t execute the evaluation method on the client for some reason through ConfigMgr but it did work when I ran it manually on the client. I’m currently troubleshooting that and will probably file a bug report when I have more info and do a separate blog post on that later. But in the meantime we will just have to skip function part. And just to emphasis this is still a prerelease feature.


$Baselines = Get-WmiObject -ComputerName $env:COMPUTERNAME -Namespace root\ccm\dcm -Class SMS_DesiredConfiguration
$Baselines | % {

([wmiclass]"\\$env:COMPUTERNAME\root\ccm\dcm:SMS_DesiredConfiguration").TriggerEvaluation($_.Name, $_.Version)



First off all, lets create a script


Copy the or import the powershell script


Approve the script you just created.



Over at the client you can see that we have a Baseline that hasn’t been evaluated yet


Jumping back to the ConfigMgr console we find the device collection we want to run the script against and then right click and choose “Run Script” and go through the wizard



Under Client operations we can see that the operation has started


And under monitoring and “Script Status” we see that the evaluation has completed on the client.



and finally over at the client we see that the Baseline has been evaluated.


That’s all for now and until next time, cheers !

Don’t forget to follow me on twitter


And you can also find me blogging over at

Some special characters in deployment type name cause applications not to Install

I recently stumble upon a bug in ConfigMgr that can cause issues with application deployments so that applications won’t install. When you are creating and application and gets to the step where you are supposed to create a Deployment type and you give the deployment type a name containing some certain special characters this will cause you not to be able to install the application when deployed to a collection.


Following special characters have been tested and won’t cause any issues:

/ & ! # @ –


These special characters will cause issues:

\ ”



Here you have an example where the Name field contains a backslash “Install\Uninstall”.




When trying to Install the application that contains the backslash character it can look like this where it just keeps saying “installing..” and won’t continue until you go to another pane and back and you will see the “Install” button again



Here’s a another example with different app but with the same scenario for the deployment type name and it can show up is with an error message like this:





And in some instances the application won’t show up at all (app that should appear is WinRar 5.4.0)



Here’s a short video showing off the issue





So whats the workaround if this happens? Well it’s pretty simple actually.

Just rename the deployment type and remove the special character that caused the issue and let the client run an application deployment evaluation cycle and the installation will continue just fine.


Se which special characters that i found so far that will work and won’t work in the beginning of this post.


Bug report has been filed to Microsoft



That’s all for now and Until next time, cheers !

You can also find me over at



#application-install-issue, #bug-report, #configmgr, #configmgr-bug, #deployment-type

HP Elitebook 820 G4 – Bitlocker issue with BIOS firmware version 01.05


Bitlocker issue for model HP Elitebook 820 G4 with BIOS firmware 01.05. Solution: upgrade to 01.06


The following versions of the Elitebook also are affected and can use the same BIOS.

Elitebook 840 G4

Elitebook 850 G4

The issue


Earlier today I stumble upon an issue with the HP model Elitebook 820 G4 and bitlocker where during the startup it asked for BitLocker recovery key for no apparent reason.

In this specific scenario the Elitebook 820 G4 was replacing the old model Elitebook 820 G3 and just one week prior the Elitebook 820 G4 was implemented and installed without any issues. (What I didn’t know at the moment was that back then it was running BIOS version 01.03 and now it was running 01.05)



You could either input the bitlocker key and continue or just press ESC 3 times until you got in to BIOS and just press continue and the machine would continue without having to input any recovery key.


During the troubleshooting I made sure that the following things were as they should


  • Disk formated as GPT and not MBR – Checked
  • TPM 2.0 was enabled – checked
  • Legacy support disabled and Secure boot enabled – checked

and so on, there was nothing wrong with the configuration.


Still there was issues that not all the time but the majority of restarts the computer kept on asking for the bitlocker recovery key.


The solution


What I’ve found out was that the Firmware version 01.05 caused the issue. If you are running 01.03 you shouldn’t have this issue and on HP support site they just released a new version 01.06 so I updated and the problem was solved, no more bitlocker recovery key question during startup.


Checking the release notes for 01.06 from HP it also states it fixed issues with bitlocker:



Download link



Thats all for now and Until next time, cheers !

You can also find me over at





#bitlocker, #bitlocker-recovery-key, #bitloker-issue, #hp-820-g4, #hp-elitebook-820-g4, #hp-elitebook-840-g4, #hp-elitebook-850-g4

Import boundaries to SCCM with powershell

This is the second blog post in a series of two where the first one was about exporting boundaries from ConfigMgr to .CSV files and you can check out that post here:

Now its time for us to import it to ConfigMgr and it’s very simple to do, all you need is the powershell script listed below (it’s also available over at technet for download )


What do we want to achieve?

We want to be able to import the boundaries we exported in to .CSV files from the guide and have them to show up in ConfigMgr. There’s no built in feature to export and import boundaries as of now in ConfigMgr so that’s why we turn to powershell to help us out with this process.



The Script


     Created on:    4/10/2017 
     Modified on:   4/21/2017 
     Created by:    Timmy Andersson
     Twitter:       @TimmyITdotcom
        Import Subnet an IPRange Boundries to CSV files. This script needs to run on the siteserver to work. 
        Specify source path with the parameter -SourcePath
[CmdletBinding(DefaultParameterSetName = 'SourcePath')]
[Parameter(Mandatory = $true,
Position = 1)]

$SiteCodeObjs = Get-WmiObject -Namespace "root\SMS" -Class SMS_ProviderLocation -ComputerName $env:COMPUTERNAME -ErrorAction Stop
	foreach ($SiteCodeObj in $SiteCodeObjs)
		if ($SiteCodeObj.ProviderForLocalSite -eq $true)
			$SiteCode = $SiteCodeObj.SiteCode
$SitePath = $SiteCode + ":"
Import-module ($Env:SMS_ADMIN_UI_PATH.Substring(0, $Env:SMS_ADMIN_UI_PATH.Length - 5) + '\ConfigurationManager.psd1')
	$Subnets = (Import-csv "$SourcePath\BoundariesIPSubnet.csv") 
	$IPRanges = (Import-csv "$SourcePath\BoundariesIPRange.csv" )

Set-Location $SitePath
			If ($Subnets -ne $null)
				Foreach ($Subnet in $Subnets)
					 New-CMBoundary -Type IPSubnet -Value "$($Subnet.Value)" -Name "$($Subnet.Key)"

		If ($IPRanges -ne $null)
				Foreach ($IPRange in $IPRanges)
					 New-CMBoundary -Type IPRange -Value "$($IPRange.Value)" -Name "$($IPRange.Key)"




  •  Save the script and run it from your site server
  • Call the script and specify the parameter -SourcePath for where you saved the .csv files that was created with the Export-Boundaries.ps1 script
    • Import-Boundaries.ps1 -SourcePath C:\temp\boundaries
  • Once the script finished the boundaries should be imported to your ConfigMgr environment.



Remember that you still need to create boundary groups and link them to your boundaries once your done with the import.


Until next time, cheers !

You can find me over at