SUP Sync Fail in SCCM 2012 SP1 (or Higher)

I recently had to reinstall WSUS and the SUP role on my Primary Site server (stop asking me why…I’m not telling). It had been so long since I’ve done this that I TOTALLY forgot about a fun little “gotcha”.

After installing the WSUS server role and adding the SUP role to my SCCM server, I went to the typical logs (WCM.log, WSYNCMGR.log, WSUSCtr.log) with the idea that I would sit back, relax and enjoy all of the fruit that my left-clicking had to bare.

“Sync failed: WSUS update source not found on site”

*sigh*

So, a little detail that I forgot is the fact that

WSUS 3.0 SP2 in conjunction with SCCM 2012 SP1 requires a patch (with an optional patch as well):

Applying KB2720211 will alleviate the errors you see when WSUS attempts to sync with the interwebs by implementing a new certificate management process. KB2734608 actually includes KB2720211, so you can simply apply that hotfix if you so desire. This KB also modifies the SUP DB schema to support SHA256 hashes, which is necessary for patching Windows 8 and Server 2012 machines.

Happy updating!

Advertisements

Remotely Activate Microsoft Office

Oh, man! I have a bunch of Office 2010 installations that are showing as “not activated” and my help desk queue is building exponentially. This is going to be a horrible d…WAIT! I am SMART and use SCCM for all comprehensive distributions!

I am going to do something different, here. I am going to give you the scripts and switches to run and leave it up to you to determine the best way to deploy this to end-user workstations that are showing this problem. Bonus points if you can figure out a way to determine who has a copy of Office 2010 that is not activated.

In order to input the Office 2010 key, run (starting in “c:\program files\microsoft office\office14” [or “program files (x86)” for 32-bit installs on a 64-bit OS]):

cscript ospp.vbs /inpkey:xxxxx-xxxxx-xxxxx-xxxxx-xxxxx

Then, to activate:

cscript ospp.vbs /act

ZTI Error When Capturing Windows 8 for Deployment

So, I heard that you were trying to capture a base Windows 8 image for deployment. You are at least using MDT 2012 Update 1, correct? Good! What’s the problem, then? I see…on your reference machine, you are receiving an error message that contains “ZTI error: unhandled error returned by LTIApply: Not found (-2147217406 0x80041002)”.

Seriously, stop panicking. It is sort of unbecoming.

The issue is that the script is failing to check for the existence of the boot folder on the system partition before running a command called “takeown.exe,” which changes folder ownership. (NOTE: this does NOT occur if you are capturing a Windows 8 image that was originally deployed using MDT 2012 Update 1).

The fix, if you are so brave (just do it), is as follows:

  • Open %DeployRoot%\Scripts\LTIApply.wsf and C:\Program Files\Microsoft Deployment Toolkit\Templates\Distribution\Scripts\LTIApply.wsf
  • Locate the “copy bootmgr” section in both
  • Add the following code above the copy bootmgr code:

If not oFSO.FolderExists(sBootDrive & “\Boot”) then

   oFSO.CreateFolder(sBootDrive & “\Boot”)

End if

SCCM Query for Laptops

Here is a quick query to gather all of the machines that report as laptops in your environment:

select SMS_R_SYSTEM.ResourceID,SMS_R_SYSTEM.ResourceType,SMS_R_SYSTEM.Name,SMS_R_SYSTEM.SMSUniqueIdentifier,SMS_R_SYSTEM.ResourceDomainORWorkgroup,SMS_R_SYSTEM.Client from SMS_R_System inner join SMS_G_System_SYSTEM_ENCLOSURE on SMS_G_System_SYSTEM_ENCLOSURE.ResourceID = SMS_R_System.ResourceId where
SMS_G_System_SYSTEM_ENCLOSURE.ChassisTypes in ( “8”, “9”, “10”, “14” )

If you want to change the system enclosure type, here is Microsoft’s list of chassis type codes:

1 Other
2 Unknown
3 Desktop
4 Low Profile Desktop
5 Pizza Box
6 Mini Tower
7 Tower
8 Portable
9 Laptop
10 Notebook
11 Hand Held
12 Docking Station
13 All in One
14 Sub Notebook
15 Space-Saving
16 Lunch Box
17 Main System Chassis
18 Expansion Chassis
19 Sub Chassis
20 Bus Expansion Chassis
21 Peripheral Chassis
22 Storage Chassis
23 Rack Mount Chassis
24 Sealed-Case PC

Deploying IE10 Prereqs with SCCM

Wait…you want to deploy IE 10 to the workstations in your environment? Good for you! Don’t listen to all of the angry tech-bashing of Internet Explorer…I am a proponent.

What’s that you say? You just want to deploy it all willy-nilly without checking to see what is required for a successful install? Silly rabbit.

Why don’t you just back up a second and check out this blog regarding the necessary prereqs (and how to use SCCM to deploy them): http://myitforum.com/myitforumwp/2013/03/16/deploying-ie10-prereqs-for-win7sp1-with-configmgr-2012/

Gathering the Default Printers for Machines in Your Environment

Recently, I was tasked with gathering a list of the default printers for every machine in our environment. However, anyone who has attempted to gather this information remotely understands that gathering the default printer is a difficult task. Typically, the returned value will be empty, causing a panic deep in your core (ok…that was a little too dramatic). Plus, we have to ensure that the user who primarily operates that device is logged in, as the default printer setting is typically defined by the user.

Thank goodness you are brilliant and use SCCM to manage your environment! I’ve always told people that you’re smart…

Essentially, I created two scripts. The first was simply a CMD that ensured the script was launched locally. The second was a Powershell script that queried the default printer of the user and appended the information to a CSV file back on the SCCM server, listing the username and printer. I kept both scripts in the same source directory and created a program for the CMD. Each program was set to run with user’s rights and only when a user is logged on. The deployment was then set to run on next logon.

One catch to the whole thing was that the execution policy on the user machines has to be unrestricted (hence the line written into the first script). The scripts are detailed below. Remember to change the path to the network location in which you want to store the gathered data. Also, ensure that the first line of the PS1 includes and ends after “select name”.

Enjoy!

________________________Printers.CMD________________________

@echo off

cls

Echo Default Printer Query

set cdir=%~dp0.

pushdir %cdir%

powershell.exe -executionpolicy unrestricted -command .\DefaultPrinter.ps1

popd

Exit

________________________DefaultPrinter.ps1________________________

$Printer = Get-WmiObject -namespace root\cimv2 -Query “select * from Win32_Printer Where Default = TRUE” -Impersonation 3 | select name
$env:username+”,”+$Printer.Name | Out-File -append \\<PathToNetworkLocation>\Printers.csv