locked
Connect-ConfigMgr64 - Function to connect to CMSite (SCCM) # Feedback for Improvement? RRS feed

  • Question

  • Hi Technet

    I created a function to connect to the CMSite and load the cmdlet for ConfigurationManager.

    Could the function be improved in any way or is it as good it can be? is the logic best practice or?

    You can download it at : https://gallery.technet.microsoft.com/Connect-ConfigMgr64-db5e9d0a

    <#	
    	.NOTES
    	===========================================================================
    	 Created with: 	SAPIEN Technologies, Inc., PowerShell Studio 2018
    	 Created on:   	24/10/2018
    	 Created by:   	longquo
    	 Filename: Connect-ConfigMgr64     	
    	===========================================================================
    	.DESCRIPTION
    	Running this script will load the ConfigurationManager module 
    	for Windows PowerShell and will connect to the site.
    #>
    
    function Connect-ConfigMgr64
    {
    	$initParams = @{ }
    	if ((Get-Module ConfigurationManager) -eq $null)
    	{
    		try
    		{
    			Import-Module "$($ENV:SMS_ADMIN_UI_PATH)\..\ConfigurationManager.psd1" @initParams -Scope Global
    		}
    		catch
    		{
    			$ModulePath = (Get-ItemProperty HKLM:\SOFTWARE\Wow6432Node\Microsoft\ConfigMgr10\Setup -Name "UI Installation Directory").'UI Installation Directory'
    			Import-Module $ModulePath\bin\ConfigurationManager.psd1 -Scope Global
    		}
    	}
    	if ((Get-Module ConfigurationManager) -ne $null)
    	{
    		$SiteCode = Get-PSDrive -PSProvider CMSITE
    		if ((Get-PSDrive -Name $SiteCode -PSProvider CMSite -ErrorAction SilentlyContinue) -eq $null)
    		{
    			$ProviderMachineName = (Get-ItemProperty HKLM:\SOFTWARE\Wow6432Node\Microsoft\ConfigMgr10\AdminUI\Connection -Name Server).Server
    			New-PSDrive -Name $SiteCode -PSProvider CMSite -Root $ProviderMachineName @initParams
    		}
    		if ((Get-PSProvider -PSProvider CMSite) -ne $null)
    		{
    			Set-Location $SiteCode":\"
    			Write-Host 'Type "Get-Command -Module ConfigurationManager" for a list of SCCM CMDlets.' -ForegroundColor Green
    		}
    		else
    		{
    			$CustomError = [String]"Error: Can't find CMSite provider"
    			Throw $CustomError
    		}
    	}
    	else
    	{
    		$CustomError = [String]"Unable to locate System Center Configuration Manager installation folder!"
    		Throw $CustomError
    	}
    }
    
    Connect-ConfigMgr64

    #LnQ¯\_(ツ)_/¯


    • Edited by LongQuo Monday, October 29, 2018 7:15 AM
    Friday, October 26, 2018 11:08 AM

All replies

  • Hi,

    Thanks for your share.

    Best Regards,

    Lee


    Just do it.

    Monday, October 29, 2018 2:57 AM
  • You welcome...just want to improve my skill on powershell :D and sharing at the same time

    #LnQ¯\_(ツ)_/¯

    Monday, October 29, 2018 7:16 AM