Kaido Jarvemets - Logo

Identifying Configuration Manager Console GUIDs: A Developer’s Quick Solution

Introduction

When working with the Configuration Manager (CM) Admin Console, developers often encounter challenges due to the lack of a documented list of Console GUIDs. These GUIDs are essential for anyone wanting to create their own console extensions, but finding the correct one to use can be a daunting task.

The Problem

Imagine you’re trying to integrate a custom tool or script into the CM Admin Console. Without a comprehensive list of Console GUIDs, how do you identify the correct location for your console extension? It’s like trying to find a needle in a haystack!

A Handy Solution

To address this problem, I’ve devised a quick script that extracts all the Console GUIDs from the Admin Console’s XML files. But that’s not all; this script goes a step further by creating dummy extensions for each extracted GUID. The result? When you launch the Admin Console, you’ll visually see extensions corresponding to each Console GUID. This visual representation serves as an effective map, allowing you to pinpoint the exact GUID you should use for your custom tool or script.

For Lab Environments Only!

It’s crucial to note that this script is intended solely for lab or development systems. It’s a fantastic tool for developers trying to figure out the correct Console GUIDs in a controlled environment. However, this approach is not recommended for production systems, as creating numerous dummy extensions might clutter the console or introduce unintended side effects. Always ensure you’re using the script in a safe, controlled environment where any changes won’t impact your organization’s operations.

				
					<#
    =================================================================================
    DISCLAIMER:
    This script is provided "as-is" with no warranties. Usage of this script is at
    your own risk. The author is not liable for any damages or losses arising from
    using this script. Please review the full legal disclaimer at:
    https://kaidojarvemets.com/legal-disclaimer/
    =================================================================================
#>
Function Get-CMAdminConsoleXML
{
    Try{
        Get-ChildItem $env:SMS_ADMIN_UI_PATH.Replace("bin\i386","XmlStorage\ConsoleRoot") -ErrorAction STOP
    }
    Catch{
        $_.Exception.Message
    }
}

Function New-CMAdminConsoleExtension
{
   Param($ConsoleGUID)
   
   $ExtensionsFolder = $env:SMS_ADMIN_UI_PATH.Replace("bin\i386","XmlStorage\Extensions\Actions")
   
   $Content = @'
<ActionDescription Class="Group" DisplayName="GUID_ID" MnemonicDisplayName="Test" Description="Test">
    <ShowOn>
        <string>DefaultHomeTab</string>
        <string>ContextMenu</string>  
    </ShowOn>
    <ActionGroups>
        <ActionDescription Class="Executable" DisplayName="Test" MnemonicDisplayName="Test" Description="Test" RibbonDisplayType="TextAndSmallImage">
            <ShowOn>
                <string>ContextMenu</string>
                <string>DefaultHomeTab</string>
            </ShowOn>
            <Executable>
                <FilePath>TEST.EXE</FilePath>
                <Parameters></Parameters>
            </Executable>
        </ActionDescription>
    </ActionGroups>
</ActionDescription>
'@
   New-Item -Path $ExtensionsFolder -Name $ConsoleGUID -ItemType Directory -Force
   
   $NewContent = $Content.Replace("GUID_ID",$ConsoleGUID)
   $NewContent | Out-File -FilePath "$ExtensionsFolder\$ConsoleGUID\1.XML" -Force
    
}

Function Get-CMConsoleGUID
{
    Param($ConsoleFile)

    $XMLContent = Get-Content $ConsoleFile
    foreach($item in  ($XMLContent | Select-String -Pattern "NamespaceGUID=")){
        $k = $item.ToString() -Split("NameSpaceGUID=")
        New-CMAdminConsoleExtension -ConsoleGUID ($k[1] -split '"')[1]
    }
}

####### Script Entry Point ######################
if(Test-Path $env:SMS_ADMIN_UI_PATH){

    $CMAdminConsoleFiles = Get-CMAdminConsoleXML
    foreach($File in $CMAdminConsoleFiles){
            Get-CMConsoleGUID $File.FullName
    }
}
				
			

Wrapping Up

In the absence of a comprehensive list of Console GUIDs, sometimes a bit of ingenuity is required. This script offers a practical solution to a common developer challenge.

Leave a Reply

Contact me

If you’re interested in learning about Identifying Configuration Manager Console GUIDs: A Developer’s Quick Solution. I can help you understand how this solution can benefit your organization and provide a customized solution tailored to your specific needs.

Table of Contents