Script to Find ConfigMgr GUIDs

less than 1 minute read

<#
Written by Ryan Ephgrave
This script puts a right click menu on everything in ConfigMgr. It is used to find the GUID of a right click menu for menu creation.
#>
 
$ConfigInstallPath = $env:SMS_ADMIN_UI_PATH | Out-String
$ConfigInstallPath = $ConfigInstallPath.Trim()
$XMLPath = $ConfigInstallPath -replace "\\bin\\i386", "\XmlStorage\ConsoleRoot"
$ActionsPath = $ConfigInstallPath -replace "\\bin\\i386", "\XmlStorage\Extensions\Actions"
Get-ChildItem "$XMLPath" -Filter "*.xml" -Recurse | ForEach-Object {
	$FullFileName = $_.FullName
	$FileContent = Get-Content $FullFileName
	foreach ($line in $FileContent) {
		if ($line.ToUpper().Contains("NAMESPACEGUID=")) {
			$SplitLine = $line.Split("`"")
			$GUID = $SplitLine[1]
 
			$FilePath = "$ActionsPath\$GUID"
			New-Item -ItemType Directory -Path $FilePath -ErrorAction SilentlyContinue | Out-Null
			$strOutput = "<ActionDescription Class=`"Executable`" DisplayName=`"$GUID`" MnemonicDisplayName=`"$GUID`" Description=`"$GUID`">`n"
			$strOutput = $strOutput + "<ShowOn><string>ContextMenu</string></ShowOn>`n"
			$strOutput = $strOutput + "<Executable><FilePath>cmd.exe</FilePath>`n"
			$strOutput = $strOutput + "<Parameters> /c Powershell.exe Add-Type -AssemblyName 'System.Windows.Forms';[Windows.Forms.Clipboard]::SetText('$GUID')</Parameters></Executable>`n"
			$strOutput = $strOutput + "</ActionDescription>"
			$strOutput > "$FilePath\File.xml"
		}
	}
}

At the MNSCUG meeting I showed a script I use to find the GUIDs to build right click tools. I know there are others out there, but I use my own because I added a feature to copy the GUID to your clipboard when you click on it. This lets you just paste it into a text document so you don’t have to write it down.

Leave a Comment