Understanding and troubleshooting the new content library in Configuration Manager 2012 can be daunting at first. In ConfigMgr 2007, packages followed a standard XXXYYYYY package ID format, so you could look in your \SMSPKGX$ directory and know which package was which.
With the introduction of applications in Configuration Manager 2012, applications and packagaes are now stored in a \SCCMContentLib folder, within the DataLib, FileLib, and PkgLib sub-folders. For more information on how these folders are used, see this blog post.
Now, what if you’re looking in distmgr.log and see something like “Taking snapshot for content Content_54e07188-f697-44d3-8b2b-eb09234522be.1 from source \\server\share”
Or on a client’s CAS.log stating something like “Download started for content 0d5f261e-87c7-4e5d-872f-c92b12e1ac78.1”
Or while looking at a client’s Datatransferservice.log you run into an entry like “UpdateURLWithTransportSettings(): NEW URL - http://mylab.com:80/SMS_DP_SMSPKG$/Content_65fbb8e9-8de2-42da-ae80-44e52e44f95e.1”
Or maybe you’re looking through your Content Library’s DataLib and see the Content_ folders and want to know which applications they map to.
Quickly determining via the admin console which package is being referenced can be a challenge – you could add the “Content ID” column and go to the deployment types tab of each application to find a match… Your mouse may quickly tire out.
I created an easier way using PowerShell to translate the Content_ directories into plain English package IDs and names. Below is an example of what this looks like in action. Just run the script, supplying the –dbserver, –dbname, and –content switches. If you just run .\contentxlate.ps1 without any switches, you’ll be prompted to enter each value.
Alternatively, you could create a single report to list out all applications with their Content_ folders and associated Pkg IDs:
Here are both solutions depending on your needs.
SQL QUERY for a REPORT
SELECT LP.DisplayName,CP.CI_ID,CPS.PkgID,CPS.ContentSubFolderFROM dbo.CI_ContentPackages CPSINNER JOIN dbo.CIContentPackage CPON CPS.PkgID = CP.PkgIDLEFT OUTER JOIN dbo.CI_LocalizedProperties LPON CP.CI_ID = LP.CI_IDORDER BY LP.LocaleID DESC
PS C:\Scripts> .\contentxlate.ps1 -dbserver yourdbserver.local -dbname CM_XXX -content Content_54e07188-f697-44d3-8b2b-eb09234522be.1
AUTHOR: Russ Rimmerman, Premier Field Engineer
LASTEDIT: December 17, 2013
12.17.2013: Created script
Position = 0,
Position = 1,
Position = 2,
$sqlquery = "SELECT LP.DisplayName,
FROM dbo.CI_ContentPackages CPS
INNER JOIN dbo.CIContentPackage CP
ON CPS.PkgID = CP.PkgID
LEFT OUTER JOIN dbo.CI_LocalizedProperties LP
ON CP.CI_ID = LP.CI_ID
WHERE CPS.ContentSubFolder = `'"
$sqlquery += $content
$sqlquery += "`' ORDER BY LP.LocaleID DESC"
invoke-sqlcmd -Serverinstance $dbserver -database $dbname -query $sqlquery
Great post Russ
Very useful, I'll try it the names of the packages in the Datalib It is a headache for me :)
Ops better with my user
Great post Russ Very useful, I'll try it the names of the packages in the Datalib It is a headache for me :)