osd

SCCM client = None after deploying an operating system

In an environment where you use certificates this can happen.

CLientIDManagerStartup.log will mention

Regtask: Failed to refresh MP. Error: 0x80004005

alot of times...

Below I have the 2 fixes!

Fix 1 is to take advantage of the TS Variable SMSTSPostAction to restart the computer once completed
with the value 'shutdown /r /t 0 /f'

This should ensure the cert is requested.

Fix 2:

From testing - after Fix 1 you may need to re-start the SCCM agent.
To do this create a scheduled task that runs on start-up

Program: Powershell

Arguments: -Command "& {start-sleep 120; restart-service ccmexec; Unregister-ScheduledTask -TaskName 'Restart SCCM Initial boot' -Confirm:$false;}"

Run whether or not user is logged on.

 

Export the scheduled task as 'RestartSCCM.xml' and create a package and command line to run at the end of OSD

SCHTASKS.exe /CREATE /RU system /XML "RestartSCCM.xml" /TN "Restart SCCM Initial boot"

 

Happy deploying!

Disabling Windows File Explorer banner advertising

Microsoft has soo much advertising power with Windows 10, they can now put banners up in Windows Explorer via updates. You may see one such as this:
'Save your documents and photos to OneDrive' or 'Get the best deal on your cloud storage with OneDrive'

The setting is called Show Sync Provider Notifications however it has been used for other purposes such as when you do a feature update

 

 

 

To prevent this from happening push out a group policy User preference
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced

Value: ShowSyncProviderNotifications
Value Type: REG_DWORD
Value Data: 00000000
Base: Hex

MDT Toolkit files fail to download - could not resolve source

IMG_6554

If this happens during OSD, it is likely due to 2 settings in the BIOS.

 

I recommend

WIN7 -

Boot mode: Legacy
Sata mode: AHCI

Win10-

Boot mode: UEFI
Sata mode: AHCI

 

 

From the log:
The task sequence execution engine failed executing the action (Use Toolkit Package) in the group (Initialization) with the error code 2147942561
Action output: ... ursiveCreatePath(sPath.substr(0, nPos), psa), HRESULT=800700a1 (e:\nts_sccm_release\sms\framework\core\ccmcore\path.cpp,104)
RecursiveCreatePath(sPath.substr(0, nPos), psa), HRESULT=800700a1 (e:\nts_sccm_release\sms\framework\core\ccmcore\path.cpp,104)
RecursiveCreatePath( sNormalizedPath, psa ), HRESULT=800700a1 (e:\nts_sccm_release\sms\framework\core\ccmcore\path.cpp,159)
DownloadContentLocally (pszSource, sSourceDirectory, dwFlags, hUserToken, mapNetworkAccess), HRESULT=800700a1 (e:\nts_sccm_release\sms\framework\tscore\resolvesource.cpp,3582)
TS::Utility::ResolveSource (pszPkgID, sPath, 0, hUserToken, mapNetworkAccess), HRESULT=800700a1 (e:\nts_sccm_release\sms\client\osdeployment\installsoftware\runcommandline.cpp,399)
cmd.Execute(pszPkgID,sProgramName, dwCmdLineExitCode), HRESULT=800700a1 (e:\nts_sccm_release\sms\client\osdeployment\installsoftware\main.cpp,372)
Failed to resolve the source for SMS PKGID=PS10098B, hr=0x800700a1
Install Software failed to run command line, hr=0x800700a1. The operating system reported error 2147942561: The specified path is invalid.

 

Build and Capture fails if KB3160005 IE sec cumulative update is installed


Update: Adding more scratch space to the boot wim seems to have resolved the problem on Windows 10, Windows 7 seems to still have issues.

Update: This update is also in Windows 10 CU 3163018, causing the same error. No workaround yet 

If your build and capture is failing at the capture step make sure you don't have the cumulative Security Update for IE11 KB3160005. It's somehow stopping the registry load part of the step.

The task sequence execution engine failed executing the action (Capture the Reference Machine) in the group (Capture the Reference Machine) with the error code 2147943850
Action output: ... software" into HKLM\OfflineRegistry1
RegLoadKey( oRegKeyHKLM, sRegKey, sRegHivPath), HRESULT=800705aa (e:\qfe\nts\sms\framework\osdcore\offlineregistry.cpp,68)
LoadHive( szPathBuffer, m_sRegKeySoftware, m_oRegKeySoftware ), HRESULT=800705aa (e:\qfe\nts\sms\framework\osdcore\offlineregistry.cpp,190)
m_oOfflineRegistry.Init(pszSystemRoot), HRESULT=800705aa (e:\qfe\nts\sms\framework\osdcore\offlineos.cpp,737)
rDefaultOs.initialize(sTargetSystemRoot), HRESULT=800705aa (e:\nts_sccm_release\sms\client\osdeployment\capturesystemimage\capturesystemimage.cpp,613)
VerifySystemForCapture(DefaultOs), HRESULT=800705aa (e:\nts_sccm_release\sms\client\osdeployment\capturesystemimage\capturesystemimage.cpp,859)
Finished with error code 0x800705AA
Failed to load "C:\WINDOWS\system32\config\software" (0x800705aa).
Failed to load the offline SOFTWARE registry (0x800705aa).
Failed to validate for capture. 
nsufficient system resources exist to complete the requested service. (Error: 800705AA; Source: Windows). The operating system reported error 2147943850: Insufficient system resources exist to complete the requested service.

 

Microsoft Edge and Enterprise Mode

Microsoft really wants everyone to use it's shiny new browser, and I think everyone should. It is a completely new browser built for the modern web however there are limitations to building a browser just for the modern web mainly being legacy support of activex controls and Java so it's understandable that companies don't want Edge as the default browser however there is another way. The new Enterprise mode group policy lets companies decide what web pages will open in Internet Explorer instead. Ideally it would have been nice to have these sandboxed in an Internet Explorer tab however Microsoft wants the end user to know that this is what the organization has decided.

Setting up Edge Enterprise Mode

The first thing you need to do is download and install the Enterprise Mode Site List manager

https://www.microsoft.com/en-us/download/confirmation.aspx?id=42501

This is a simple tool that creates and versions a xml file that the client computer reads when launching the Edge Browser.

You can add and edit sites in this tool and then save as an XML File

Example adding ebay.com

enterprise mode for Edge

You can later turn off Open in IE once the business website is compatible with Edge.

Once you have made your list Click File > Save to XML

Now have a look at the xml file, it should look something like

 

<rules version="7">
<docMode />
<emie>
<domain exclude="true">ebay.com</domain>
<domain doNotTransition="true" exclude="false">cnet.com</domain>
</emie>
</rules>

This example sets eBay to load up in Internet Explorer and we have set cnet.com to now open in Edge from now on.

Once you are happy with your config it's time to test it as a group policy

The policy is Computer Configuration > Windows Components > Microsoft Edge > Configure the Enterprise Mode List

enterprise mode group policy

The value here can be

  • Drive Letter C:\EnterpriseMode.xml
  • Web URL http://localhost:8080/EnterpriseMode.xml
  • Network Share \\NetworkShare\EnterpriseMode.xml (I recommend placing this inside the group policy folder on Sysvol)

Alternatively you can also send all intranet sites to Internet Explorer using the group policy setting 'Send all intranet sites to Internet Explorer 11'

Testing

Using Edge browser enterprise mode

 

Hey Cortana! How do I add additional speeches during OSD so you work?

cortana

For Cortana to work with your language you need to install the appropriate speech pack however if you are connected to an enterprise WSUS you won't be able to see additional downloads for your language.

To work around this you can get the language cab files from the 'Windows 10 Features on Demand' iso available via volume license and MSDN downloads, then use dism commands to apply the desired language packages. Currently the available ones are

  • German - Germany (Microsoft-Windows-LanguageFeatures-Speech-de-de-Package.cab)
  • English - Australia (Microsoft-Windows-LanguageFeatures-Speech-en-au-Package.cab)
  • English - Canada (Microsoft-Windows-LanguageFeatures-Speech-en-ca-Package.cab)
  • English - United Kigndom (Microsoft-Windows-LanguageFeatures-Speech-en-gb-Package.cab)
  • English - India (Microsoft-Windows-LanguageFeatures-Speech-en-in-Package.cab)
  • English - United States (Microsoft-Windows-LanguageFeatures-Speech-en-us-Package.cab)
  • Spanish - Spain (Microsoft-Windows-LanguageFeatures-Speech-es-es-Package.cab)
  • French - France (Microsoft-Windows-LanguageFeatures-Speech-fr-fr-Package.cab)
  • Italian - Italy (Microsoft-Windows-LanguageFeatures-Speech-it-it-Package.cab)
  • Japanese - Japan (Microsoft-Windows-LanguageFeatures-Speech-ja-jp-Package.cab)
  • Chinese - China (Microsoft-Windows-LanguageFeatures-Speech-zh-cn-Package.cab)
  • Chinese - Hong Kong (Microsoft-Windows-LanguageFeatures-Speech-zh-hk-Package.cab)
  • Chinese - Taiwan (Microsoft-Windows-LanguageFeatures-Speech-zh-tw-Package.cab)

Note: Cortana is currently only available in United States, Japan, Australia, and Canada and India (in English) however having the speech packs installed will help your deployment if other markets open up.

You can also install the Text to speech pack along side. For example

Microsoft-Windows-LanguageFeatures-TextToSpeech-en-au-Package.cab adds Aussie Catherine and British James however Cortana doesn't use them.

Cortana speech settings

 

To deploy during OSD create a package with the desired speech packs and an Install.bat file. The following  example of install.bat sets up English-Australia and also adds text to speech voices, you can add additional packages by changing the PackagePath:

DISM /Online /Add-Package /PackagePath:Microsoft-Windows-LanguageFeatures-TextToSpeech-en-au-Package.cab
DISM /Online /Add-Package /PackagePath:Microsoft-Windows-LanguageFeatures-Speech-en-au-Package.cab

And then create a Run Command Line step in the task sequence referencing the package with Disable 64-bit file system redirection

OSD Cortana Speech

install.bat

 

To set the default Speech Language you need to modify the default user reg. This can be achieved in 3 commands during the task sequence

Load Default User Registry

reg load HKU\DefaultTemp "C:\Users\Default\NTUSER.DAT"

Set Default SpeechRecognizer

reg add "HKU\DefaultTemp\Software\Microsoft\Speech_OneCore\Settings\SpeechRecognizer" /v RecognizedLanguage /t REG_SZ /d en-AU /F

Unload Default User Registry

 reg unload HKU\DefaultTemp

OSD default profile

Ensure the Operating System applys to C: drive not D: drive

reeval

This problem will increase more and more as everyone starts to use wim's instead of the OS media in SCCM.

There are a few workarounds for this problem however the best method is to force the new OS the reevaluate Drive Letters with 3 easy steps after applying the OS

Create a Run Command Line step for each of the 3 commands

Reg.exe load HKLM\Temp %OSDTargetSystemDrive%\Windows\system32\config\system

Reg.exe delete HKLM\Temp\MountedDevices /va /f

Reg.exe unload HKLM\Temp

 

This forces the default behaviour of Windows to choose the drive letter.

 

For more information and other workarounds see http://blogs.technet.com/b/configurationmgr/archive/2014/04/28/how-to-ensure-that-windows-installs-on-c-during-a-system-center-2012-configuration-manager-osd-task-sequence.aspx

Format failed (0x80070057) during task sequence.

0057

 

 

 

Update:

If this is happening to you I recommend importing the boot wim again creating a new one and only adding the network drivers (in the surface pro 3 case) and test using that boot wim with a copy of your task sequence. Then add existing sata/network drivers you need for other devices using latest versions.

I recieved an email from someone that has the same issue, he noticed that Microsoft ships with either a Hynix SSD or a Samsung SSD. The Samsung SSD has never had any issues. From my SCCM data we have 20% Hynix drives - possibly due to change of hard drive supply or shortage, I'm not sure. This will explain why you may be going crazy not understanding why encountering imaging issues after having success.

In this scenario the formatting of the disk fails and then the disk just dissapears even in diskpart until next reboot.

Solution is to get the correct SATA driver for the device. This happened on one of the Surface Pro 3's yet all the others imaged fine. Using the driver provided by the driver pack in the boot wim the task sequence was able to successfully format the disk.

 

Text from the smsts.log:

Format failed (0x80070057) OSDDiskPart 15/12/2014 4:33:23 PM 864 (0x0360)
CVolume::Format( sDrive.c_str(), (*iter)->getFilesystem(), (*iter)->getVolumeName().c_str(), 0, (*iter)->getIsQuickFormat() ? CVolume::foptQuick : 0, FormatProgressCallback, NULL), HRESULT=80070057 (e:nts_sccm_releasesmsclientosdeploymentosddiskpartmain.cpp,1003) OSDDiskPart 15/12/2014 4:33:23 PM 864 (0x0360)
Failed to format drive C: (0x80070057) OSDDiskPart 15/12/2014 4:33:23 PM 864 (0x0360)
FormatPartitions(oDisk), HRESULT=80070057 (e:nts_sccm_releasesmsclientosdeploymentosddiskpartmain.cpp,1279) OSDDiskPart 15/12/2014 4:33:23 PM 864 (0x0360)
Failed to format partition(s) for disk 0 (0x80070057) OSDDiskPart 15/12/2014 4:33:23 PM 864 (0x0360)
OSDDiskPart.exe failed: 0x80070057 OSDDiskPart 15/12/2014 4:33:23 PM 864 (0x0360)
Process completed with exit code 2147942487 TSManager 15/12/2014 4:33:23 PM 1088 (0x0440)
!--------------------------------------------------------------------------------------------! TSManager 15/12/2014 4:33:23 PM 1088 (0x0440)
Failed to run the action: Format and Partition Disk (UEFI). This is usually caused by a problem with the program. Please check the Microsoft Knowledge Base to determine if this is a known issue or contact Microsoft Support Services for further assistance.
The parameter is incorrect. (Error: 80070057; Source: Windows) TSManager 15/12/2014 4:33:23 PM 1088 (0x0440)

 

KB: Temporary partition to stage boot wim on UEFI booted devices fails.

When not using the latest version of bootable media and the system is not partitioned SCCM is meant to create a temporary partition to stage the correct boot wim. What actually happens is it just creates 1 big NTFS partition.

uefi1

What actually happens is it just creates 1 big NTFS partition.

uefi2

Then it checks the for a system partition and bombs out.

uefi3

http://technet.microsoft.com/en-au/library/hh824839.aspx states that the System partition must be formatted FAT32, SCCM is formatting it NTFS so it never gets recognised as a system partition.

For UEFI the EFI & MSR volume should also be created to make system partition readable and bootable.

I created a hotfix request, will update this post if anything comes of it.

 

 

 

Optimize the 'build and capture' time and size (SCCM Build)

 

build

Inspired by Johan's post http://www.deploymentresearch.com/Research/tabid/62/EntryId/174/Building-reference-images-like-a-boss.aspx

I am probably one of the few that uses SCCM to capture base images. I use it because I create a thick image and it keeps the history of packages that it has installed meaning that newly imaged machines will know that they have already installed software x when they recieve it's required deployment.

Patch the install.wim

Patching the default Windows 7 install.wim so it doesn't need to install as many updates during OSD.

1. Download WSUS Offline Update from  http://download.wsusoffline.net/

2. Extract to C:wsusoffline and run UpdateGenerator.exe

3.  Choose Windows 7 x64 Global and click start.

WSUS Offline Update

4. Important: Delete KB2506143, KB2533552 and KB2819745 from C:wsusofflineclientw61-x64glb if they exist. They break the wim. If your company hasn't deployed IE11 also delete patches for it.

5. Extract a Win7 SP1 Enterprise ISO to 'C:OS Windows 7 SP1 x64'

6. Create the dir C:mount

7. Mount the wim -

dism /mount-wim /wimfile:"C:OS Windows 7 SP1 x64sourcesinstall.wim" /mountdir:C:mount /index:1

 

8. Patch the wim -

dism /image:C:mount /Add-Package /PackagePath:C:wsusofflineclientw61-x64glb

9. Commit/Close the wim -

dism /unmount-wim /mountdir:C:mount /commit

10. Copy the 'OS Windows 7 SP1 x64' folder to an unc share and import into SCCM under Operating System Installers.

 

Use Mikael Nystrom's Cleanup Script

1. Download via http://deploymentbunny.com/2014/06/05/nice-to-know-get-rid-of-all-junk-before-sysprep-and-capture-when-creating-a-reference-image-in-mdt/

2. Place in a UNC Share.

3. Copy ZTIUtility.vbs from MDT 2013 to the UNC Share.

4. Modify Action-CleanupBeforeSysprep.wsf second line to reference the ZTIUtility.vbs in the same folder

<script language="VBScript" src="ZTIUtility.vbs"/>

5. Create a package in SCCM.

6. Before the capture steps create a run command step surrounded by 2 reboots:

cscript.exe Action-CleanupBeforeSysprep.wsf using the package created and disable 64-bit file system redirection

TS Clean

The updated wim will have the patches required for this step.

Access the wim directly from the distribution point

For this to work you need to tick the checkbox on the OS Installer properties to copy to a share, then also the Access content directly in the task sequence Apply OS step.

 

OS

imageprop

 

Monitor KB2894518 for mutiple reboot updates

http://support.microsoft.com/kb/2894518

Create a separate deployment for these updates to a collection that excludes your capture VMs

 

Tweak your Virtual Machine

  • Don't use the Legacy Network adapter (Have had issues at capture stage)

Visit http://www.deploymentresearch.com/Research/tabid/62/EntryId/174/Building-reference-images-like-a-boss.aspx for VM tweaks

  • Use 2 vCPUs
  • Use a RAM Disk