Here’s a quick code to get a tree view (sort of) of applications in your ConfigMgr 2012 environment that shows dependencies, including dependencies of dependencies. Works as is, for me at least. If you spot any bugs or improvements feel free to let me know. As usual watch out for word-wrapping and typos.
Function Get-Dependency($appCIID,$appNameFunc){
gwmi -ComputerName $server -Namespace “root\sms\site_$code“ -Class SMS_AppDependenceRelation -Filter “FromApplicationCIID=’$appCIID‘“ | %{
if($_.ToApplicationCIID -ne $null){
$ToApplicationCIID = $_.ToApplicationCIID
$dependencyName = Resolve-ApplicationName $ToApplicationCIID
$dependencyNameSub = ” –>$dependencyName“
Write-Host $dependencyNameSub
Get-SubDependency $ToApplicationCIID $dependencyNameSub
}
}
return
}
Function Get-SubDependency($appCIID, $appNameFunc){
$appNamePrefix = ” “ + ($appNameFunc -split “>”)[0] + “>”
gwmi -ComputerName $server -Namespace “root\sms\site_$code“ -Class SMS_AppDependenceRelation -Filter “FromApplicationCIID=’$appCIID‘“ | %{
if($_.ToApplicationCIID -ne $null){
$ToApplicationCIID = $_.ToApplicationCIID
$dependencyName = Resolve-ApplicationName $ToApplicationCIID
$dependencyName = “$appNamePrefix$dependencyName“
Write-Host “$dependencyName“
Get-SubDependency $ToApplicationCIID $dependencyName
}
}
return
}
Function Resolve-ApplicationName($appCIID){
gwmi -ComputerName $server -Namespace “root\sms\site_$code“ -Class SMS_ApplicationLatest -Filter “CI_ID = ‘$appCIID‘” | select LocalizedDisplayName | %{
return $_.LocalizedDisplayName
}
}
cls
$server = “serverName”
$code = “001”
gwmi -ComputerName $server -Namespace “root\sms\site_$code“ -Class SMS_ApplicationLatest | %{
$appName = $_.LocalizedDisplayName
$CIID = $_.CI_ID
Write-Host “$appName“
Get-Dependency $CIID $appName
}