While reviewing ConfigMgr status messages for clients reporting problems acquiring package content (Message ID 10025) I found some code snippets on sccmfaq.ch that maps the ContentID to the name of the application. As i had to do several lookups, I decided to create a function for it.
function Get-xCMContentIDforApp
{
<#
.Synopsis
Get-xCMContentIDforApp
.DESCRIPTION
This function retrieves the Application name for the provided ContentID.
Use this when analyzing status messages (10025) for clients reporting problems
acquiring package content
.EXAMPLE
Get-xCMContentIDforApp -SiteServer cmsrv01 -SiteCode lab -ContentID Content_4783c44a-3f5c-4bf3-a130-a89e5520173a, Content_1d336090-12e4-445b-9c15-718ee5ddf40a
Application ContentID
----------- ---------
Mozilla Firefox_SW10012130 Content_4783c44a-3f5c-4bf3-a130-a89e5520173a
Microsoft Excel 2010 x64_SW10011686_V Content_1d336090-12e4-445b-9c15-718ee5ddf40a
The above example retrieves the Application name for each contentID provided.
.NOTES
Credits to sccmfaq.ch where i found the code snippets
#http://sccmfaq.wordpress.com/2014/03/11/sccm-2012-get-from-content-id-to-the-name-of-an-application-with-powershell/
Version 1.0 by Alex Verboon
#>
[CmdletBinding(SupportsShouldProcess=$true)]
Param
(
[Parameter(Mandatory=$true,
ValueFromPipelineByPropertyName=$true,
Position=0)]
$SiteServer,
[Parameter(Mandatory=$true,
ValueFromPipelineByPropertyName=$true,
Position=1)]
$SiteCode,
[Parameter(Mandatory=$true,
ValueFromPipelineByPropertyName=$true,
Position=2)]
[string[]]$ContentID
)
Begin{}
Process
{
$CIDApps = @()
ForEach ($cid in $ContentID)
{
If ($PScmdlet.ShouldProcess("Retrieving Application Name for $cid"))
{
$ContenId01 = (("$cid").Split("."))[0]
$ApplicationID = (Get-WmiObject -Namespace root\sms\site_$SiteCode -ComputerName $SiteServer -Class SMS_Deploymenttype -Filter "ContentID = '$ContenId01' and PriorityInLatestApp = '1'").AppModelName
$App = (Get-WmiObject -Namespace root\sms\site_$SiteCode -ComputerName $SiteServer -Class SMS_Application -Filter "CI_UniqueID like '$ApplicationID%' and IsLatest = 'True'").LocalizedDisplayName
$object = New-Object -TypeName PSObject
$object | Add-Member -MemberType NoteProperty -Name "Application" -Value $App
$object | Add-Member -MemberType NoteProperty -Name "ContentID" -Value $cid
$CIDApps += $object
}
}
}
End
{
$CIDApps | Select-Object Application, ContentID
}
}
Thanks for the script, very handy. I have covered off the error message 10025 for Windows Update content here
http://britv8.com/powershell-sccm-message-status-error-10025-find-windows-updates-content-that-client-cannot-download/
Your script gave me the incentive to do this ๐