Export boundaries from SCCM with powershell

This blog post is the first in a series of 2 where i will showcase how to export iprange and subnet boundaries and then how to import them with the help of a powershell script. I’m a big proponent for automating task to increase productivity and I believe in the mindset of always trying to improve what ever you are doing, regardless if that’s improving your workflow or learning something new to improve yourself. Invest time now to save time later but lets get back to the topic of this post and that’s about exporting boundaries from SCCM.

Part 2, Importing boundaries can be found here: https://timmyit.com/2017/05/02/import-boundaries-to-sccm-with-powershell/

What do we want to achieve?

For example If you are in the process of setting up a new ConfigMgr environment and there’s an existing ConfigMgr environment that’s getting decommissioned but you aren’t performing a site migration and there’s still information like boundaries that
will be reused then here’s a script that will help you export IPRange and Subnet boundaries to .csv so you later can import them in the new environment because there’s no built in function in ConfigMgr to do that at the moment.

In the picture below we have our boundaries we want to export in to a file (in this case a .csv) and then later be able to import them back in to ConfigMgr.

The script


#.NOTES
#===========================================================================
#Created on:    4/10/2017
#Modified on:   4/21/2017
#Created by:    Timmy Andersson
#Twitter:       @TimmyITdotcom
#Blog:          www.timmyit.com
#===========================================================================
#.DESCRIPTION
#Export Subnet an IPRange Boundaries to CSV files. This script needs to run on the siteserver to work.
#Specify Destination path with the parameter $DestinationPath

[CmdletBinding(DefaultParameterSetName = 'DestinationPath')]
param
(
[Parameter(Mandatory = $true,
Position = 1)]
$DestinationPath
)
	Begin{
	$SiteCodeObjs = Get-WmiObject -Namespace "root\SMS" -Class SMS_ProviderLocation -ComputerName $env:COMPUTERNAME -ErrorAction Stop
		foreach ($SiteCodeObj in $SiteCodeObjs)
		{
			if ($SiteCodeObj.ProviderForLocalSite -eq $true)
				{
				$SiteCode = $SiteCodeObj.SiteCode
				}
		}
	$SitePath = $SiteCode + ":"
	Import-module ($Env:SMS_ADMIN_UI_PATH.Substring(0, $Env:SMS_ADMIN_UI_PATH.Length - 5) + '\ConfigurationManager.psd1')
}
PROCESS
{

Set-Location $SitePath
$BoundriesSubnet = (Get-CMBoundary -BoundaryName * | Where-Object {$_.BoundaryType -like "0"})
$BoundriesRange = (Get-CMBoundary -BoundaryName * | Where-Object {$_.BoundaryType -like "3"})
$ErrorActionPreference = 'Continue'
$IPrange = $null
$IPrange = @{}
$IPSubnet = $null
$IPSubnet = @{}

If ($BoundriesSubnet.count -gt "0")
{
foreach ($Boundry in $BoundriesSubnet)
{
$IPrange.Add($($Boundry.DisplayName),$($Boundry.Value))

}
$IPrange.GetEnumerator() | export-csv "$DestinationPath\BoundariesIPSubnet.csv" -NoTypeInformation -Encoding Unicode
}
If ($BoundriesRange.count -gt "0")
{
foreach ($Boundry in $BoundriesRange)
{
$IPSubnet.Add($($Boundry.DisplayName),$($Boundry.Value))

}
$IPSubnet.GetEnumerator() | export-csv "$DestinationPath\BoundariesIPRange.csv" -NoTypeInformation -Encoding Unicode
}

}
END
{
Invoke-Item $DestinationPath
}

Example

  •  Save the script and run it from your site server
  • Call the script and specify the parameter -DestinationPath for where you want to output the .csv files that gets created to.
    • Export-Boundaries.ps1 -DestinationPath C:\temp\boundaries
  • Once the script finished the destinationPath you specified will open up in explorer and you will find 1 files for iprange boundaries and one for subnet depending on what you have in your environment.

There you have it, its pretty simple and saves a lot of time if there’s a lot of boundaries to manually create in the new environment.

Next blog post will be about how to import the exported boundaries to ConfigMgr with the help of powershell.

Part 2, Importing boundaries can be found here: https://timmyit.com/2017/05/02/import-boundaries-to-sccm-with-powershell/

Until next time, cheers !

You can find me over at

[twitter-follow screen_name=’Timmyitdotcom’]

One comment

Leave a Reply