PowerShell ISE Add-On to connect to ConfigMgr (Connect-ConfigMgr)

Man, I’ve been on a PowerShell rampage lately!

It always drove me crazy loading the PowerShell Module for ConfigMgr. First, you had to find the path of the AdminConsole\bin directory and then remember the name of the psd1 module file. Finally, you had to remember the site code of the site you normally work with.

This post outlines a custom PowerShell ISE Add-On I’ve created to quickly load the ConfigMgr PowerShell module and connect to your console default SMS Provider location.

image

The first thing you’ll need to do is create a custom PowerShell ISE profile (if you don’t already use one)

Browse to %UserProfile%\Documents and look for a WindowsPowerShell directory. If it doesn’t exist, create it. Then, look for a file called Microsoft.PowerShellISE_profile.ps1 (again if it doesn’t exist, create it). This file is automatically loaded when the ISE starts up, and is really handy for auto-loading any common functions.

image

Now edit the file in either the PowerShell ISE or Notepad.exe and paste in my script. If you’ve already created and customized your profile in the past, just add my script to the bottom of your profile file.

001
002
003
004
005
006
007
008
009
010
011
012
013
014
015
016
017
018
019
020
021
022
023
024
025
026
027
028
029
030
031
032
033
034
035
036
037
038
039
040
041
042
## ADDS A Connect-ConfigMgr ITEM TO THE ISE ADD-ONS MENU ##
## Created by Matt Shadbolt – http://blogs.technet.com/b/ConfigMgrDogs ##

Function Connect-ConfigMgr {

$CustomError = $null 

If ($Console64 = Get-ItemProperty -Path HKLM:\SOFTWARE\Wow6432Node\Microsoft\ConfigMgr10\Setup -Name ProductCode -ErrorAction SilentlyContinue) {
   
   
# 64-bit system
    $ModulePath = (Get-ItemProperty HKLM:\SOFTWARE\Wow6432Node\Microsoft\ConfigMgr10\Setup -Name "UI Installation Directory").'UI Installation Directory'
    $SiteServerName = (Get-ItemProperty HKLM:\SOFTWARE\Wow6432Node\Microsoft\ConfigMgr10\AdminUI\Connection -Name Server).
Server 
   
$ProviderLocation = gcim -ComputerName $SiteServerName -Namespace root\sms SMS_ProviderLocation -filter "ProviderForLocalSite='True'"
    $ProviderMachine = $ProviderLocation.
Machine
   
$SiteCode = $ProviderLocation.
SiteCode
   
Import-Module $ModulePath\bin\ConfigurationManager.psd1
    Set-Location $SiteCode":\"
 
    }

ElseIf ($Console32 = Get-ItemProperty -Path HKLM:\SOFTWARE\Microsoft\ConfigMgr10\Setup -Name ProductCode -ErrorAction SilentlyContinue) {
   
   
# 32-bit system
    $ModulePath = (Get-ItemProperty HKLM:\SOFTWARE\Microsoft\ConfigMgr10\Setup -Name "UI Installation Directory").'UI Installation Directory'
    $SiteServerName = (Get-ItemProperty HKLM:\SOFTWARE\Microsoft\ConfigMgr10\AdminUI\Connection -Name Server).
Server 
   
$ProviderLocation = gcim -ComputerName $SiteServerName -Namespace root\sms SMS_ProviderLocation -filter "ProviderForLocalSite='True'"
    $ProviderMachine = $ProviderLocation.
Machine
   
$SiteCode = $ProviderLocation.
SiteCode
   
Import-Module $ModulePath\bin\ConfigurationManager.psd1
    Set-Location $SiteCode":\"
 

    }

Else { 
   
$CustomError = [String]"Error: The required registry keys cannot be found. Please ensure the console has been installed on this computer"
 
   
Throw $CustomError
    }
}

$psISE.CurrentPowerShellTab.AddOnsMenu.Submenus.Add("Connect-ConfigMgr", 
{
   
Connect-ConfigMgr
},"ALT+F1") | out-Null

Save the file and re-open the ISE. You’ll now have a Connect-ConfigMgr option in the Add-Ons menu. You can either select this option, or just press Alt+F1 from the ISE and your console will connect to your console configured SMS Provider.

image

I've also added this script to the TechNet Gallery – https://gallery.technet.microsoft.com/PowerShell-ISE-Add-On-to-4790e37b 

I hope this significantly speeds up your ConfigMgr work in the PowerShell ISE!

Matt