Posts Tagged ‘Task Sequence’

Credit goes to J v D on the myITforum Configuration Manager email list for his response to my question about how to resolve this. I have adapted elements of his solution to suit my own situation.

Lately I’ve been doing a lot of Windows 10 1607 deployments some of which have been in-place upgrades from Windows 7 and Windows 10 1511.

I noticed that my multi-language settings were not being migrated as part of this process.

BEFORE AN IN-PLACE UPGRADE

2017-03-17_154018

AFTER AN IN-PLACE UPGRADE

2017-03-17_155042.jpg

So how do you resolve this issue? Well I’ve finally found a suitable and reliable way of setting these values as part of a Configuration Manager in-place upgrade Task Sequence.

Some background on why this problem has occurred.

For Windows 10, I like others have used the English (US) ISO.  I’ve then added the en-GB language pack for English (Australian) language support as part of a Configuration Manager Task Sequence. For Windows 7 we have always used the media with English (US) as the base system language.

This is important to note as you can’t in-place upgrade an existing OS using Windows 10 media from another base system language i.e. you wouldn’t be able to in-place upgrade a Windows 7 OS using a base system language of en-US with say the Windows 10 en-GB media.

The combination of this multi-language environment has resulted in the subsequent Windows 10 1607 language settings not being correctly configured for the welcome screen or for new user accounts following in-place upgrades.

THE SOLUTION

1. Add a  Run Command Line step in your in-place upgrade Task Sequence that references your language package. This adds the relevant Language Pack and Feature on Demand cab files. This is the same process that you would undertake if you were preparing a reference image. As an example you could use a cmd file that contains the following (adjust for your language):

2017-03-17_191509

2017-03-17_161559

2. Create the following SetLanguage.xml file and adjust as per your requirements. This xml file is imported as part of a scheduled task that gets created later in the sequence. I would recommend using Notepad++ to error check the file and then test it by manually running the import command in step 3. This way you can be confident that it is working before moving to testing with in-place upgrades.

2017-03-17_161944

3. Create the following PostUpgrade.cmd file. This cmd file is run as part of a step in the task sequence.

2017-03-17_162245.jpg

4. Create a new package in Configuration Manger containing these 2 script files and call it something appropriate.

2017-03-17_164657

5. Modify your existing in-place upgrade Task Sequence to include the following 3 steps.

2017-03-17_162936

SMTSPostAction with a value of cmd /c shutdown /r /t 0 /f

2017-03-17_163111.jpg

Command line of xcopy * “c:\Windows\Temp” /D /E /C /I /Q /H /R /Y /S

2017-03-17_163213

Command line of: schtasks /create /tn “PostUpgradeTask” /tr “c:\Windows\Temp\PostUpgrade.cmd” /RU SYSTEM /SC onstart

These sequence steps copy the script files to c:\Windows\Temp, then create a scheduled task. Finally the SMTSPostAction restarts the PC after the sequence has finished running so that the scheduled task executes and runs PostUpgrade.cmd. This cmd is responsible for importing the adjusted language settings.

There you have it, once implemented you should have a working solution and your language settings should match what was set in the previous version of Windows 10.

Cheers

Damon

 

 

There are a number of aspects to our Windows 10 corporate branding / look and feel that I have implemented recently with three main changes involved. Its worth mentioning up front that I’m not using a corporate logo or style however you could easily substitute what I have done with your own images to achieve the same outcome.

With that out of the way!

These changes are:

  1. Setting a default lock screen wallpaper that is consistent with the Windows 10 operating system and the Microsoft color scheme.
  2. Removing the default Hero wallpaper that is displayed immediately after a Windows 10 workstation is started prior to logon.
  3. Setting a default desktop wallpaper (where required).

To achieve these changes I’ve used a combination of Group Policy and Operating System Deployment choices with our Configuration Manager 2012 Windows 10 Task Sequence.

Setting the Lock Screen Wallpaper

To implement this you will need to add the following to the Group Policy that is targeting your Windows 10 workstations under Computer Configuration/Policies/Administrative Templates/Control Panel/Personalization.

  1. Set Do not display the lock screen to Enabled (This is not required although in our environment we have chosen to enable this for other reasons)
  2. Set Force a specific default lock screen image to Enabled with a value of c:\windows\web\screen\yourcustomlockscreenimage.jpg

Don’t worry about the file not actually being present at the this location, as we are going to use our Configuration Manager Task Sequence to copy the lockscreen image to the workstation as part of the build process. Alternatively you could copy the image file using a group policy preference or even reference the image to a highly available DFS file share (Although I personally don’t like the idea of this for various reasons).2015-09-28_125040

Now that we have configured our Group Policy we need to create a simple package in our Configuration Manager 2012 environment and add a step to our Task Sequence.

  1. Create a new folder for your package under your source share. I’ve called ours DoJ Windows 10 Branding but its entirely up to you.
  2. Copy your JPEG image to the folder. This image should be formatted correctly for your environment with regards to size. If your using anything other than a solid color, then you may need to have multiple images of various sizes. This blog offers a good way to manage this, but for my blog this is out of scope as I am using a solid color background with a resolution of 3840 x 2160. The color I have chosen is the default blue that is included in Windows 10.
  3. Replicate your new package.
  4. Create a new Run Command Line Task Sequence step called Copy Corporate Branding Lockscreen Image (or similar) and specify the package details as per below.2015-09-28_130411
  5. When you build a workstation now you should now see your custom lockscreen image! Note that there is a small Group Policy bug in Windows 10 which requires you to restart after your Configuration Manager Task Sequence completes. This seems to be related to Windows 10 not applying Group Policy objects even though the SMSTSPostAction variable is set with a restart command.2015-09-28_130743

Removing the Default Hero Wallpaper

I’ve seen quite a few ways of implementing this, but basically it comes down to a registry change which set the value of HKLM\SOFTWARE\Policies\Windows\System\DisableLogonBackground from 0 to 1.

My preference is to do this during the Operating System Deployment process, but again this change could be implemented by Group Policy or as an additional step in your Task Sequence i.e. executing a reg add command or merging a reg file.

I’ve found that using unattend.xml for this process is quite effective and simple. It also has the added benefit of reducing administrative overhead that the other solutions offer.

  1. Open your unattend.xml using Windows System Image Manager and add the following to your specialize pass from the amd64_Micorosoft-Windows-Deployment_neutral component. Please ensure that the order value is 1. In the screen captures my order value is 2 because I am applying an additional registry key change which is not relevant to this blog.2015-09-28_1324262015-09-28_132656
  2. Save your unattend.xml and replicate the package so your Task Sequence uses the updated version.
  3. Now when you deploy your reference image this registry change will be added. Please note that again, you may need to restart your workstation after the Task Sequence has completed for the change to be effective.2015-09-28_134201

Setting a Default Desktop Wallpaper

Again with this change I’ve chosen to leverage Group Policy. We have a small group of workstations that require an enforced background.

To implement this you will need to add the following to the Group Policy that is targeting your Windows 10 users under User Configuration/Policies/Administrative Templates/Desktop/Desktop

  1. Set Desktop Wallpaper to Enabled and specify the location of your image file.

You could add an additional step to your Configuration Manager Task Sequence to copy the image file to c:\windows\web\wallpaper\yourcustomwallpaper.jpg however in my case as its only a small subset of workstations, I’ve pointed the group policy to my Distributed File System.2015-09-28_134423

I hope this blog helps those of you looking to implement some changes to the default appearance of Windows 10.

Cheers

Damon

I’ve implemented this solution based on information provided in the following blogs – credit to these people for posting this information.

http://www.deploymentresearch.com/Research/tabid/62/EntryId/97/PowerShell-wrapper-for-MDT-2012-Update-1-and-MDT-2013-Preview.aspx

http://blogs.technet.com/b/deploymentguys/archive/2013/10/21/removing-windows-8-1-built-in-applications.aspx

So I’ve moved on from my old process of corporate WIM image creation. I used to build up an image from a source ISO for a respective operating system using Hyper V, make my customisations, apply patches, then use MDT to do a sysprep and capture. I know, I know, there are probably numerous reasons why you shouldn’t do this. Well no more after watching Johan’s session from System Center Universe this year here 

The new process involves the more contemporary approach of doing a completely automated build and capture in one process with MDT performing any additional changes using scripts and additional steps. The session that Johan presented is in my view the best by far that I have seen.

One thing that wasn’t covered was how to remove the built in Windows 8.1 Modern Applications. In my case (like many others) we are deploying Windows 8.1 and do not wish to have all of these applications available.

Here is a solution you can implement which will remove these apps as part of your MDT or Configuration Manager Task Sequence. My example will be in MDT 2013.

Firstly create a new powershell script from the this blog, you can amend the script as required so that it only removes the applications that you want. Alternatively I have copied the script syntax into a word document here removemodernappsnew – please make sure that you edit this script in Powershell ISE to confirm that there are no syntax errors.

Copy the script to your MDT server sources folder.

Create a new MDT application and give it an appropriate name such as Remove Windows 8.1 Modern Applications

RemoveApps1

Use the following powershell wrapper command – credit to Johan who posted the install wrapper argument here

powershell.exe -Command “set-ExecutionPolicy Unrestricted -Force; cpi ‘%DEPLOYROOT%\Applications\Remove Windows 8.1 Modern Applications\RemoveWindows8Apps.ps1’ -destination c:\; c:\RemoveWindows8Apps.ps1; ri c:\*.ps1 -Force; set-ExecutionPolicy Restricted -Force”

Note you will need to adjust the path to your powershell script depending on how you setup the application in MDT.

RemoveApps3

Now just add an install application step in your existing MDT / Configuration Manager Task Sequence, its that easy.

RemoveApps2

If you implement a Suspend action in your MDT Task Sequence you can check that the apps have been removed.

RemoveApps4

RemoveApps5

Cheers

Damon