Just another WordPress.com site

Latest

Setting the SMSCacheSize During OSD Task Sequence (PowerShell)

So you just want to configure the cache size of the Configuration Manager agent to something else other than the default size of 5120MB for whatever reason. Easy right? Since the cache size is set during the installation of the ConfigMgr client you go to the “Setup Windows and ConfigMgr” task and just add the SMSCACHESIZE parameter as the installation properties and it’ll work right? Not so fast.

The installation properties will only work if you’re installing the ConfigMgr client and will not work if you’re re-installing the client. So why this might not work in your task sequence? Really it is because if you’ve got the ConfigMgr client installed in your reference image (which is pretty common when creating a sysprep’ed reference image to get the things like core apps or software updates installed), then running the “Setup Windows and ConfigMgr” task in your task sequence is actually re-installing the ConfigMgr client and that’s why this method wouldn’t work.

Untitled

 

So how do you work around it? Run a PowerShell script. Below is the contents of the script. Copy and paste it into Notepad and save it as a .ps1 file. Change the $Cache.size to whatever you want in MB.

$Cache = Get-WmiObject -namespace root\ccm\SoftMgmtAgent -class CacheConfig
$Cache.size = 20480
$Cache.InUse = "True"
$Cache.Put()
Restart-Service ccmexec

After you create a package for your PowerShell script, it is time to add it as a task in your deployment task sequence. So I use the Run PowerShell Script task and reference the package I’ve just created for it. Obviously the Script name is the file name I saved the above content as. Set the PowerShell execution policy to “Bypass”. You would want to run this script after the “Setup Windows and ConfigMgr” task but anything lower will work as well like how I’ve done it. And that should be it!

ts

 

 

 

Enjoy!!!

PowerShell Script to Insert Branding, OEM and Custom Wallpaper

As part of a Windows deployment whether or not using SCCM, MDT or other methods, one thing you probably want to do is customise Windows in such a way that incorporates a corporate image. This script includes customised Lock Screen image, custom wallpaper image and OEM information like logo, support contact, support URL etc.

One requirement is to set a default corporate wallpaper but still allow the user to change it. Although we can address the custom wallpaper using Group Policy, but that will prevent the users from changing it. This is why Group Policy is not used for custom wallpaper like how it is most commonly done. Also preferably we do not want to replace the img01.jpg file which comes with Windows for the wallpaper (which may be another solution to assigning a custom default wallpaper) so that users still have the ability to change it to that if the user wishes.

Important thing to note is, make sure you have your BMP and JPG file is saved in the same location where this script is sitting in. Create all these files as a package and then call the .PS1 file using the Run PowerShell Command task in SCCM/MDT task sequence.

The script first copies the images BMP and JPG to their respective locations then starts to set the OEM information using the Set-ItemProperty cmdlet, followed by making changes to the registry for the default lock screen and default wallpaper.

 

===Start Script===

$Wallpaper = "backgroundDefault.jpg"
$OSDISK=$env:OSDISK

# copy the OEM bitmap
If (-not(Test-Path c:\windows\system32\oobe\info\backgrounds)){New-item c:\windows\system32\oobe\info\backgrounds -type directory}

copy-item $PSScriptRoot\OEMlogo.bmp "$OSDISK\windows\system32"
copy-item $PSScriptRoot\user.bmp "$OSDISK\ProgramData\Microsoft\User Account Pictures"
copy-item $PSScriptRoot\OEMLogo.BMP "$OSDISK\windows\system32\oobe\info\"
copy-item $PSScriptRoot\$Wallpaper "$OSDISK\windows\system32\oobe\info\backgrounds\"
copy-item $PSScriptRoot\$Wallpaper "C:\Windows\Web\Screen\$wallpaper"
copy-item $PSScriptRoot\$Wallpaper "C:\Windows\Web\Wallpaper\Windows\$wallpaper"

# make required registry changes
$strPath = "HKLM:\Software\Microsoft\Windows\CurrentVersion\OEMInformation"
$strPath2 = "HKLM:\Software\Microsoft\Windows\CurrentVersion\Authentication\LogonUI\Background"
$strPath3 = "HKLM:\SOFTWARE\Policies\Microsoft\Windows\Personalization"
$strPath4 = "HKCU:\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System"

Set-ItemProperty -Path $strPath -Name Logo -Value "C:\Windows\System32\OEMlogo.bmp"
Set-ItemProperty -Path $strPath -Name Manufacturer -Value "My IT Services"
Set-ItemProperty -Path $strPath -Name SupportPhone -Value "(02)9876-1234"
Set-ItemProperty -Path $strPath -Name SupportHours -Value "7:00am to 7:00pm"
Set-ItemProperty -Path $strPath -Name SupportURL -Value http://example.intranet.myitservices.com/internal_services/IT_services
Set-ItemProperty -Path $strPath2 -Name OEMBackground -value 1

New-Item -Path HKLM:\Software\Policies\Microsoft\Windows -Name Personalization –Force
Set-ItemProperty -Path $strPath3 -Name LockScreenImage -value "C:\Windows\Web\Screen\$wallpaper"

New-Item -Path HKCU:\Software\Microsoft\Windows\CurrentVersion\Policies -Name System -Force
Set-ItemProperty -Path $strPath4 -Name Wallpaper -value "C:\Windows\Web\Wallpaper\Windows\$wallpaper"
Set-ItemProperty -Path $strPath4 -Name WallpaperStyle -value "2"

write-host "End of Script"

===End Script===

 

 

 

Enjoy!!!

Script to Assign Computer Name from Asset Tag with Validation to be used by SCCM Task Sequence

I’m not usually a script writer (especially when it comes to VBS) but I’m surprised how I got from a small script to basically prompt the user to enter a computer name to something as big as this.

I have been asked to automatically assign the computer name during a Windows deployment. Not just the common task to prompt the user to enter a computer name which you can do pretty easily just by configuring a task sequence variable to the target collection you’re deploying the task sequence to but to assign the computer name with the Asset Tag value found in the BIOS.

In my situation all computers have been assigned with a customised Asset Tag value (either from the manufacturer’s factory or using a separate tool) so what needs to be done is to read that value from the Asset Tag and assign it as the computer name in a Task Sequence. There’s no way I can do it straight out of a task sequence so a script has to be written for it.

So what I’ve done with the script is:-

  • Read the value of the Asset Tag in the BIOS through the SMBIOSAssetTag from Win32_SystemEnclosure class
  • Validate the value first to see if it contains only all the correct characters and not symbols
  • Read the value of the chassis type through the ChassisType also from the Win32_SystemEnclosure class
  • Depending on the chassis type number read from the BIOS, assign it as either Desktop, Laptop or Unknown
  • Based on whether it is a Desktop or Laptop, run another validation to see if it conforms with the correct naming convention which in my case has a prefix of either “PC-“ or “LT-“ respectively
  • Last 5 characters is validated to see that it only contains numbers. So a full computer name will look something like e.g. “PC-12345” or “LT-98765”.
  • If the value doesn’t conform to the naming convention, then prompt for the user to enter the correct computer name
  • Run the check after to validate the values entered by the user that it conforms to naming conventions and prompt again until a valid value is entered
  • Only if it passes all of the above, then proceed to assign the value to the OSDComputerName

Phew…that was quite a lengthy one. And quite a lengthy one it is. Attached below is the script that makes all this work.

 

===Start Script===

Dim objOSD, objRegEx
Dim Matches, Match
Dim strPattern, strInputBox, strReason
Dim boolLength, boolValid, StrType

Set objOSD = CreateObject("Microsoft.SMS.TSEnvironment")
Set objRegEx = New RegExp
Set SWBemlocator = CreateObject("WbemScripting.SWbemLocator")
Set objWMIService = SWBemlocator.ConnectServer(strComputer,"root\CIMV2",UserName,Password)
Set colItems = objWMIService.ExecQuery("Select * from Win32_SystemEnclosure",,48)
For Each objItem in colItems
OSDComputername = objItem.SMBIOSAssetTag
OSDComputername = Left(OSDComputerName,8)
Next

‘ Define valid patterns as and character not in (A-Z, 0-9, or -)
strPattern = "[^a-zA-Z0-9-]"
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
    & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colChassis = objWMIService.ExecQuery _
    ("Select * from Win32_SystemEnclosure")
For Each objChassis in colChassis
    For  Each strChassisType in objChassis.ChassisTypes
        Select Case strChassisType

            Case 3
                  StrType = "Desktop"
            Case 4
                   StrType = "Desktop"
            Case 6
                   StrType = "Desktop"
            Case 7
                  StrType = "Desktop"
            Case 8
                StrType = "Laptop"
            Case 9
                 StrType = "Laptop"
            Case 10
                  StrType = "Laptop"
            Case 11
                  StrType = "Laptop"
            Case 12
                   StrType = "Laptop"
            Case 14
                  StrType = "Laptop"
            Case 15
                  StrType = "Laptop"
            Case Else
        StrType = "unknown"
            End Select
    Next
Next
If StrType = "Desktop" then

  Do
   ‘ Check ComputerName – must comply to the naming standard
   If Len(OSDComputerName) <> 8 Then
    boolLength = False
   ElseIf Left(OSDComputerName, 3) <>  "PC-" AND Left(OSDComputerName, 3) <> "EV-"  Then
    boolLength = False
   ElseIf IsNumeric(Right(OSDComputerName, 5)) = False Then
        boolLength = False
   Else
    boolLength = True
   End If

  If boolLength = "False" Then
   strReason = ""
   strInputBoxA = InputBox("Enter desired machine name:" & VbCrLf & VbCrLf & "Names must start with PC- and only numbers in the last 5 characters " & VbCrLf &  "Current PC number is :-(" & OSDComputername &")","Machine Name",,60,60)
   If strInputBoxA = "" Then TemplateQuit(0)
   ‘COVERT STRING TO UPPERCASE
   OSDComputerName = UCase(strInputBoxA)
  End If

   ‘ Check character validity
   boolValid = True
   ‘ Return all matches for invalid characters
   objRegEx.Global = True
   objRegEx.Pattern = strPattern
   ‘ Generate collection of matches
   Set Matches = objRegEx.Execute(strInputBox)
   ‘ Check for matches on invalid characters
   For Each Match In Matches
    boolValid = False
   Next
  Loop While boolLength = "False"
End If
If StrType = "Laptop" then

  Do
   ‘ Check ComputerName – must comply to the naming standard
   If Len(OSDComputerName) <> 8 Then
    boolLength = False
   ElseIf Left(OSDComputerName, 3) <> "LT-" AND Left(OSDComputerName, 3) <> "EV-"  Then
    boolLength = False
   ElseIf IsNumeric(Right(OSDComputerName, 5)) = False Then
        boolLength = False
   Else
    boolLength = True
   End If

  If boolLength = "False" Then
   strReason = ""
   strInputBoxA = InputBox("Enter desired machine name:" & VbCrLf & VbCrLf & "Names must start with LT- and only numbers in the last 5 characters " & VbCrLf &  "Current PC number is :- (" & OSDComputername &")","Machine Name",,60,60)
   If strInputBoxA = "" Then TemplateQuit(0)
   ‘COVERT STRING TO UPPERCASE
   OSDComputerName = UCase(strInputBoxA)
  End If

   ‘ Check character validity
   boolValid = True
   ‘ Return all matches for invalid characters
   objRegEx.Global = True
   objRegEx.Pattern = strPattern
   ‘ Generate collection of matches
   Set Matches = objRegEx.Execute(strInputBox)
   ‘ Check for matches on invalid characters
   For Each Match In Matches
    boolValid = False
   Next
  Loop While boolLength = "False"
End If
If StrType = "Unknown" then

  Do
   ‘ Check ComputerName – must comply to the naming standard
   If Len(OSDComputerName) <> 8 Then
    boolLength = False
   ElseIf Left(OSDComputerName, 3) <> "LT-" AND Left(OSDComputerName, 3) <> "PC-" AND Left(OSDComputerName, 3) <> "EV-" AND Left(OSDComputerName, 1) <> "V" Then
    boolLength = False
   ElseIf IsNumeric(Right(OSDComputerName, 5)) = False Then
        boolLength = False
   Else
    boolLength = True
   End If

  If boolLength = "False" Then
   strReason = ""
   strInputBoxA = InputBox("Enter desired machine name:" & VbCrLf & VbCrLf & "Names must start with PC- or LT- and only numbers in the last 5 characters " & VbCrLf &  "Current PC number is :- (" & OSDComputername & ")","Machine Name",,60,60)
   If strInputBoxA = "" Then TemplateQuit(0)
   ‘COVERT STRING TO UPPERCASE
   OSDComputerName = UCase(strInputBoxA)
  End If

   ‘ Check character validity
   boolValid = True
   ‘ Return all matches for invalid characters
   objRegEx.Global = True
   objRegEx.Pattern = strPattern
   ‘ Generate collection of matches
   Set Matches = objRegEx.Execute(strInputBox)
   ‘ Check for matches on invalid characters
   For Each Match In Matches
    boolValid = False
   Next
  Loop While boolLength = "False"
End If

objOSD("OSDComputerName") = OSDComputerName

===End Script===

 

 

Enjoy!!!

Hello Windows 10. Have your seen 9?

Good morning! Today is the day where Microsoft is set to release the preview of their latest operating system after Windows 8.x. As you would expect, Windows 9 is just around the corner…not. Hit by surprise as many would expect, Microsoft is releasing their latest operating system…Windows 10!

Yes, don’t that make you wonder where did 9 go? From a blog release from Microsoft we have been told that the next release of Windows is so big that it deserves a perfect 10. From my view this release is set not only to incrementally fix the shortcomings of Windows 8 but to rethink the way an OS is to run on a slew of different devices today.

So some things that we can expect from Windows 10:-

(images courtesy from Microsoft blog release)

1. Welcome back, Start Menu.

If you’ve been using Windows 8 and 8.1 (that includes Windows Server 2012 and 2012 R2) you may have not experience the Start Menu (replaced with a Start screen) for some time now. It is back now, better and bigger…literally. The live tiles is not entirely gone though. You can still pin your favourite tiles to the Start Menu.

clip_image002

2. Windows, windows windows

The thing that made it more confusing for some users is the fact that there are 2 types of apps; a desktop app and a ‘metro’ app or I should call it modern UI app that runs full screen all the time optimized for touch on a tablet and touch devices. Now that too runs in a window. Now a modern UI app will run in a window complete with a top toolbar and the familiar 3 buttons to minimize, restore and close a window. The ability to pin it to the taskbar is still there, so that’s good.

clip_image004

3. Snapping a window is a snap

This is probably going to be my favourite. With larger resolution screens (mine on 3200 x 1800) we’ve got so much more screen estate that we can use. We used to be able to snap an open window to the left or right so that it resizes to take the left or right half of the screen. Now though, we can snap 4 app windows forming a quadrant for each app. Not only that, when an app is snapped, it suggests opened apps to be snapped in the available desktop space.

clip_image006

4. New button for task view

We’re all familiar with the Alt-Tab to switch between windows. Now there’s a new task view button when you hit it displays all the opened apps which you can select to bring it to the foreground or switch between desktops.

clip_image008

5. Hold on. Did I say switch desktops?

Yes I did. You can now have multiple desktops each for a different purpose perhaps. One for your personal stuffs and one where you put your recent work documents you’re working on.

clip_image010

For further reading follow the link below and there’s also a short video running through those features. Now if you’re like me and thinking how can I get my hands on this Technical Preview copy of Windows 10, currently there is a Windows Insider Program about to be open where you can sign up to be one of the first to test drive Windows 10 and hopefully provide feedback.

Where? Just go to http://preview.windows.com/. If you don’t see anywhere to sign up yet, wait a little longer as we’re all expecting it to be open really soon. Microsoft have been clear that this is a pre-release version and to expect it to be less refined as they are ironing out the rough edges.

 

 

 

Enjoy!!!

Configuration Manager Client Package source version keeps incrementing/increasing causing disk space to fill up in schedule.box

The first time I realized the problem is when I found that my replication isn’t going too well between my CAS and Primary. I soon found out that my disk space has run out on the partition ConfigMgr was installed on. That might be causing problem with replication, but what is causing my disk to fill up? Checking folder-by-folder I then found the offending folder that is filling up my drive. It was Program Files\Microsoft Configuration Manager\inboxes\schedule.box specifically the ‘tosend’ folder.

I did also realize that my server is busy transferring files. This can be seen by looking at the sender.log. I soon noticed it was the ConfigMgr agent package file and can be seen in the monitoring workspace that it is in the midst of updating all the DPs. Shockingly I noticed the version number of the Configuration Manager Client Package has gone up close to 200, notice version 180 from the distmgr.log.

Found notification for package ‘CL100003’    SMS_DISTRIBUTION_MANAGER    9/11/2014 3:37:53 AM    7140 (0x1BE4)
Used 0 out of 3 allowed processing threads.    SMS_DISTRIBUTION_MANAGER    9/11/2014 3:37:53 AM    7140 (0x1BE4)
Sleep 30 minutes…    SMS_DISTRIBUTION_MANAGER    9/11/2014 3:37:53 AM    6628 (0x19E4)
Starting package processing thread, thread ID = 0x2304 (8964)    SMS_DISTRIBUTION_MANAGER    9/11/2014 3:37:53 AM    7140 (0x1BE4)
Starting package processing thread, thread ID = 0x1A60 (6752)    SMS_DISTRIBUTION_MANAGER    9/11/2014 3:37:54 AM    7140 (0x1BE4)
Sleep 3600 seconds…    SMS_DISTRIBUTION_MANAGER    9/11/2014 3:37:54 AM    7140 (0x1BE4)
STATMSG: ID=2300 SEV=I LEV=M SOURCE="SMS Server" COMP="SMS_DISTRIBUTION_MANAGER" SYS=<FQDN> SITE=CAS PID=2644 TID=8964 GMTDATE=Wed Sep 10 17:37:54.312 2014 ISTR0="Configuration Manager Client Package" ISTR1="CL100002" ISTR2="" ISTR3="" ISTR4="" ISTR5="" ISTR6="" ISTR7="" ISTR8="" ISTR9="" NUMATTRS=1 AID0=400 AVAL0="CL100002"    SMS_DISTRIBUTION_MANAGER    9/11/2014 3:37:54 AM    8964 (0x2304)
Start updating the package CL100002…    SMS_DISTRIBUTION_MANAGER    9/11/2014 3:37:54 AM    8964 (0x2304)
CDistributionSrcSQL::UpdateAvailableVersion PackageID=CL100002, Version=180, Status=2300    SMS_DISTRIBUTION_MANAGER    9/11/2014 3:37:54 AM    8964 (0x2304)
STATMSG: ID=2300 SEV=I LEV=M SOURCE="SMS Server" COMP="SMS_DISTRIBUTION_MANAGER" SYS=<FWDN>SITE=CAS PID=2644 TID=6752 GMTDATE=Wed Sep 10 17:37:54.344 2014 ISTR0="Configuration Manager Client Upgrade Package" ISTR1="CL100003" ISTR2="" ISTR3="" ISTR4="" ISTR5="" ISTR6="" ISTR7="" ISTR8="" ISTR9="" NUMATTRS=1 AID0=400 AVAL0="CL100003"    SMS_DISTRIBUTION_MANAGER    9/11/2014 3:37:54 AM    6752 (0x1A60)
Start updating the package CL100003…    SMS_DISTRIBUTION_MANAGER    9/11/2014 3:37:54 AM    6752 (0x1A60)
Taking package snapshot for package CL100002 from source \\<FQDN>\SMS_CAS\Client    SMS_DISTRIBUTION_MANAGER    9/11/2014 3:37:54 AM    8964 (0x2304)
CDistributionSrcSQL::UpdateAvailableVersion PackageID=CL100003, Version=180, Status=2300    SMS_DISTRIBUTION_MANAGER    9/11/2014 3:37:54 AM    6752 (0x1A60)
Taking package snapshot for package CL100003 from source \\<FQDN>\SMS_CAS\ClientUpgrade    SMS_DISTRIBUTION_MANAGER    9/11/2014 3:37:54 AM    6752 (0x1A60)
The size of package CL100003, version 180 is 1576 KBytes    SMS_DISTRIBUTION_MANAGER    9/11/2014 3:37:54 AM    6752 (0x1A60)
Successfully created RDC signatures for package CL100003 version 180    SMS_DISTRIBUTION_MANAGER    9/11/2014 3:37:54 AM    6752 (0x1A60)
Creating hash for algorithm 32780    SMS_DISTRIBUTION_MANAGER    9/11/2014 3:37:54 AM    6752 (0x1A60)
The hash for algorithm 32780 is D6279C75363ECFBE0F4A64447E472F512261393FFBE6246AB153ACEF41C53094    SMS_DISTRIBUTION_MANAGER    9/11/2014 3:37:54 AM    6752 (0x1A60)
The RDC signature hash for algorithm 32780 is 9CEFAE33CC2B4475D5B67C8C6046A48834B03C292B59C16222070B6161168017    SMS_DISTRIBUTION_MANAGER    9/11/2014 3:37:54 AM    6752 (0x1A60)
STATMSG: ID=2376 SEV=I LEV=M SOURCE="SMS Server" COMP="SMS_DISTRIBUTION_MANAGER" SYS=<FWDN> SITE=CAS PID=2644 TID=6752 GMTDATE=Wed Sep 10 17:37:54.600 2014 ISTR0="CL100003" ISTR1="" ISTR2="" ISTR3="" ISTR4="" ISTR5="" ISTR6="" ISTR7="" ISTR8="" ISTR9="" NUMATTRS=1 AID0=400 AVAL0="CL100003"    SMS_DISTRIBUTION_MANAGER    9/11/2014 3:37:54 AM    6752 (0x1A60)
CDistributionSrcSQL::UpdateAvailableVersion PackageID=CL100003, Version=180, Status=2376    SMS_DISTRIBUTION_MANAGER    9/11/2014 3:37:54 AM    6752 (0x1A60)
The source for package CL100003 has changed or the package source needs to be refreshed    SMS_DISTRIBUTION_MANAGER    9/11/2014 3:37:54 AM    6752 (0x1A60)
Adding these contents to the package CL100003 version 180.    SMS_DISTRIBUTION_MANAGER    9/11/2014 3:37:54 AM    6752 (0x1A60)
The Package Action is 1, the Update Mask is 32 and UpdateMaskEx is 0.    SMS_DISTRIBUTION_MANAGER    9/11/2014 3:37:54 AM    6752 (0x1A60)
Use drive E for storing the compressed package.    SMS_DISTRIBUTION_MANAGER    9/11/2014 3:37:54 AM    6752 (0x1A60)
Successfully created/updated the package CL100003    SMS_DISTRIBUTION_MANAGER    9/11/2014 3:37:54 AM    6752 (0x1A60)

 

This happened during my hierarchy expansion from a standalone primary to a CAS and multiple primaries. The Configuration Manager Client Package though still the same packageID had its source path changed to the CAS server UNC path and that may have triggered a package update. Trying to stop the DP transfer by deleting the package or removing content didn’t work because it will be grayed out.

image

In order to be able to do that you need to go into SQL. First create 2 new packages for the Configuration Manager Client Package and Configuration Manager Client Upgrade Package. They will be having new package IDs. Note them down!

Then using the SQL Server Management Studio console find out what is your existing ClientDeploymentSettings. Enter the below statement in your new query window.

select * from CM_CAS.dbo.ClientDeploymentSettings

 

This wil return the result of your FullPackageID and UpgradePackageID. Next we will update it to the new packageID of the new packages you’ve just created. Use the below statements

update CM_CAS.dbo.ClientDeploymentSettings set FullPackageID = ‘<new package ID>’ where FullPackageID = ‘<old package ID>’

 

Now do the similar for the UpgradePackageID

update CM_CAS.dbo.ClientDeploymentSettings set UpgradePackageID = ‘<new upgrade package ID>’ where UpgradePackageID = ‘<old upgrade package ID>’

 

After this you can go ahead and remove the package from the DPs. It will not be grayed out anymore.

If this still does not solve your problem especially after a reboot (this might re-occur after a reboot), investigating further you will find this in your hman.log.

HandleRBACPermissions : Check if there is request.    SMS_HIERARCHY_MANAGER    9/11/2014 2:12:02 PM    5160 (0x1428)
End sync rbac permissions.    SMS_HIERARCHY_MANAGER    9/11/2014 2:12:02 PM    5160 (0x1428)
Update site server active directory informtion into DB    SMS_HIERARCHY_MANAGER    9/11/2014 2:12:02 PM    5160 (0x1428)
Handle auto-upgrade client configuration changes    SMS_HIERARCHY_MANAGER    9/11/2014 2:12:02 PM    5160 (0x1428)
Update auto-upgrade client configurations    SMS_HIERARCHY_MANAGER    9/11/2014 2:12:02 PM    5160 (0x1428)
INFO: client.acu file was found. client upgrade packages need to be updated.    SMS_HIERARCHY_MANAGER    9/11/2014 2:12:02 PM    5160 (0x1428)
INFO: Current client upgrade settings are: FullClientPackageID=CL100002, ClientUpgradePackageID=CL100003, ClientUpgradeProgramName=Configuration Manager Client Upgrade Program, ClientUpgradeAdvertisementID=CL120000, ClientUpgradeVersion=5.00.7958.1000.    SMS_HIERARCHY_MANAGER    9/11/2014 2:12:02 PM    5160 (0x1428)
INFO: Successfully requested package CL100002 to be updated from its source.    SMS_HIERARCHY_MANAGER    9/11/2014 2:12:02 PM    5160 (0x1428)
INFO: Successfully requested package CL100003 to be updated from its source.    SMS_HIERARCHY_MANAGER    9/11/2014 2:12:02 PM    5160 (0x1428)
INFO: Successfully updated packages CL100002 and CL100003    SMS_HIERARCHY_MANAGER    9/11/2014 2:12:02 PM    5160 (0x1428)
INFO: Client upgrade command line will be modified to ccmsetup.exe /AutoUpgrade /UpgradePackageVersion:240    SMS_HIERARCHY_MANAGER    9/11/2014 2:12:02 PM    5160 (0x1428)
Updating supported platforms for auto-upgrade client program.    SMS_HIERARCHY_MANAGER    9/11/2014 2:12:02 PM    5160 (0x1428)
INFO: Successfully updated program Configuration Manager Client Upgrade Program of package CL100003 with new command line: ccmsetup.exe /AutoUpgrade /UpgradePackageVersion:240    SMS_HIERARCHY_MANAGER    9/11/2014 2:12:02 PM    5160 (0x1428)
INFO: Successfully modified the command line for client upgrade program Configuration Manager Client Upgrade Program in package CL100003.    SMS_HIERARCHY_MANAGER    9/11/2014 2:12:02 PM    5160 (0x1428)

 

Realize that client.acu file is found in the Program Files\Microsoft Configuration Manager\inboxes\hman.box path and that is what is instructing the package to be updated. It is a file with 0kb. So go ahead and delete that file from your server and that should stop your Configuration Manager Client Package from wrongly self updating itself.

 

 

 

Enjoy!!!

ConfigMgr 2012 Pre-requisites Installation Tool

Have you been trying to remember the long list of pre-requisites components needed for each ConfigMgr server role? Take a look at this. Then I’ve been documenting steps to make it easier to go about it. Then moved to using PowerShell? Nowadays I’ve been actively using this for most of my ConfigMgr installations. This new version by Nickolaj Andersen, supports ConfigMgr 2012 R2. Now it has tabs for each ConfigMgr server you’re trying to prepare for; CAS, Primary, Secondary etc. So no more trying to remember the list of pre-reqs? Maybe? Download version 1.3.0 here. There is also an older version still made available for ConfigMgr 2012 SP1 here.

 

 

 

Enjoy!!!

Failed to Validate an MP from registry (8004005) and Failed to send Package State Messages to Site Server from Remote DP when running ExtractContent.exe for PrestageContent – SCCM 2012

So, I was trying to use the Prestaged Content File to send over a relatively large package over to a DP without transferring it over the wire. If you’ve done previous versions of SCCM, this is similar to courier sender. It enables administrators to send packages to a DP without using the any network bandwidth which is good for situations where bandwidth is scarce or if it takes too long to transfer it over a small bandwidth.

When I completed running the extractcontent.exe command line tool to decompress and extract my .PKGX file generated from my Primary Site server I get errors in my PrestageContent.log which is normally located at \SMS_DP$\sms\logs in the prestage DP itself.

 

Begin ====> Mon Dec 16 2013 18:17:36    PrestageContent    12/16/2013 6:17:36 PM    3248 (0x0CB0)
The following parameters were passed on command line:     PrestageContent    12/16/2013 6:17:36 PM    3248 (0x0CB0)
    /P – Full path to a prestaged file or to a folder containing one or more such files: ‘C:\Prestaged content file\Win7SP1x64.pkgx’    PrestageContent    12/16/2013 6:17:36 PM    3248 (0x0CB0)
    /F – Force prestaging of content even when it already exists on the site    PrestageContent    12/16/2013 6:17:36 PM    3248 (0x0CB0)
Detecting if a distribution point role exists on this machine    PrestageContent    12/16/2013 6:17:36 PM    3248 (0x0CB0)
Client is set to use HTTPS when available. The current state is 224.    PrestageContent    12/16/2013 6:17:36 PM    3248 (0x0CB0)
Set media certificate in transport    PrestageContent    12/16/2013 6:17:36 PM    3248 (0x0CB0)
Set authenticator in transport    PrestageContent    12/16/2013 6:17:36 PM    3248 (0x0CB0)
unknown host (gethostbyname failed)    PrestageContent    12/16/2013 6:17:36 PM    3248 (0x0CB0)
sending with winhttp failed; 80072ee7    PrestageContent    12/16/2013 6:17:36 PM    3248 (0x0CB0)
Failed to get information for MP: http://SetE-CM.SetE.local. 80072ee7.    PrestageContent    12/16/2013 6:17:36 PM    3248 (0x0CB0)
Failed to validate an MP from registry: http://SetE-CM.SetE.local. 80004005    PrestageContent    12/16/2013 6:17:36 PM    3248 (0x0CB0)
Checking content library on local DP    PrestageContent    12/16/2013 6:17:36 PM    3248 (0x0CB0)
Content library: path=’C:\SCCMContentLib’, usable drives=’C:\’    PrestageContent    12/16/2013 6:17:36 PM    3248 (0x0CB0)
============ Content meta data begin ===================    PrestageContent    12/16/2013 6:18:16 PM    3248 (0x0CB0)
File "C:\Prestaged content file\Win7SP1x64.pkgx"    PrestageContent    12/16/2013 6:18:16 PM    3248 (0x0CB0)
Content type: "Classic"    PrestageContent    12/16/2013 6:18:16 PM    3248 (0x0CB0)
Content modified: 16/12/2013 08:01:40    PrestageContent    12/16/2013 6:18:16 PM    3248 (0x0CB0)
Disk space required: 5021 MB    PrestageContent    12/16/2013 6:18:16 PM    3248 (0x0CB0)
Packages:     PrestageContent    12/16/2013 6:18:16 PM    3248 (0x0CB0)
  Package=MK200015.1, SMB=0    PrestageContent    12/16/2013 6:18:16 PM    3248 (0x0CB0)
Content Names:    PrestageContent    12/16/2013 6:18:16 PM    3248 (0x0CB0)
    "Win7SP1x64"    PrestageContent    12/16/2013 6:18:16 PM    3248 (0x0CB0)
============ Content meta data end =====================    PrestageContent    12/16/2013 6:18:16 PM    3248 (0x0CB0)
Content library already contains content MK200015.1    PrestageContent    12/16/2013 6:18:16 PM    3248 (0x0CB0)
Free space on the content library drive is 20286 MB    PrestageContent    12/16/2013 6:18:16 PM    3248 (0x0CB0)
The best drive on this remote DP is found to be C: (free space 20286 MB)    PrestageContent    12/16/2013 6:18:16 PM    3248 (0x0CB0)
No branch cache registry entries found.    PrestageContent    12/16/2013 6:18:16 PM    3248 (0x0CB0)
Uncompressing C:\Prestaged content file\Win7SP1x64.pkgx to C:\Prestaged content file\Win7SP1x64.pkgx.temp    PrestageContent    12/16/2013 6:18:16 PM    3248 (0x0CB0)
Content Library: C:\SCCMContentLib    PrestageContent    12/16/2013 6:19:16 PM    3248 (0x0CB0)
Extracting from C:\Prestaged content file\Win7SP1x64.pkgx.temp    PrestageContent    12/16/2013 6:19:16 PM    3248 (0x0CB0)
Extracting package MK200015    PrestageContent    12/16/2013 6:19:16 PM    3248 (0x0CB0)
Extracting content MK200015.1    PrestageContent    12/16/2013 6:19:16 PM    3248 (0x0CB0)
Content definition already exists: \\?\C:\SCCMContentLib\DataLib\MK200015.1    PrestageContent    12/16/2013 6:21:33 PM    3248 (0x0CB0)
Generating signature files to path C:\SMSSIG$    PrestageContent    12/16/2013 6:22:04 PM    3248 (0x0CB0)
Management point name is not defined    PrestageContent    12/16/2013 6:22:04 PM    3248 (0x0CB0)
Site Code: ‘MK2’    PrestageContent    12/16/2013 6:22:04 PM    3248 (0x0CB0)
DP server: ‘E-WIN7CMDP.SetE.local’    PrestageContent    12/16/2013 6:22:04 PM    3248 (0x0CB0)
NAL Path: ‘["Display=\\E-WIN7CMDP.SetE.local\"]MSWNET:["SMS_SITE=MK2"]\\E-WIN7CMDP.SetE.local\’    PrestageContent    12/16/2013 6:22:04 PM    3248 (0x0CB0)
some DP settings are not defined.    PrestageContent    12/16/2013 6:22:04 PM    3248 (0x0CB0)
Failed to send package state messages to site server from remote DP.    PrestageContent    12/16/2013 6:22:04 PM    3248 (0x0CB0)
End ====> Mon Dec 16 2013 18:22:04    PrestageContent    12/16/2013 6:22:04 PM    3248 (0x0CB0)

Solution:

The problem that I found was that my DP didn’t have access rights to my Site Server. What has to be done was to add the DP computer account as an administrator to my Site Server. I should have caught that earlier when I saw “Failed to validate an MP from registry: http://SetE-CM.SetE.local. 80004005”. The DP was not able to send package state messages to site server to tell it that the extraction was complete and that it can now use the content. Also to my oversight that 80004005 normally points to an “access denied” error.

 

 

 

Enjoy!!!

Follow

Get every new post delivered to your Inbox.

Join 76 other followers