Topic Last Modified: 2012-03-27

Creates a new network subnet.

New-CsNetworkSubnet -Identity <XdsGlobalRelativeIdentity> -MaskBits <Int32> [-Confirm [<SwitchParameter>]] [-Description <String>] [-Force <SwitchParameter>] [-InMemory <SwitchParameter>] [-NetworkSiteID <String>] [-WhatIf [<SwitchParameter>]]
New-CsNetworkSubnet -MaskBits <Int32> -SubnetID <String> [-Confirm [<SwitchParameter>]] [-Description <String>] [-Force <SwitchParameter>] [-InMemory <SwitchParameter>] [-NetworkSiteID <String>] [-WhatIf [<SwitchParameter>]]

Each subnet must be associated with a network site for the purposes of determining the geographic location of the host belonging to this subnet. Use this cmdlet to create a new subnet, and at the same time (optionally) assign it to a network site.

In most deployments of Microsoft Lync Server 2010 where call admission control (CAC) is implemented, there will typically be a large number of subnets. Because of this, it’s often best to call New-CsNetworkSubnet in conjunction with the Windows PowerShell cmdlet Import-CSV. By using these cmdlets together, you can read in subnet settings from a comma-separated values (CSV) file and create multiple subnets at once. For more details, see the Examples section for this cmdlet.

Who can run this cmdlet: By default, members of the following groups are authorized to run the New-CsNetworkSubnet cmdlet locally: RTCUniversalServerAdmins. To return a list of all the role-based access control (RBAC) roles this cmdlet has been assigned to (including any custom RBAC roles you have created yourself), run the following command from the Windows PowerShell prompt:

Get-CsAdminRole | Where-Object {$_.Cmdlets –match "New-CsNetworkSubnet"}


Parameter Required Type Description




The unique subnet ID of the subnet being created. This must be an IP address (such as, and it must be the first address in the IP address range defined by the subnet.




The bitmask to be applied to the subnet being created.

Valid values: 1 through 32




This is the same value as the Identity. You must specify either an Identity or a SubnetID, but you cannot specify both. Whatever value you supply to one will automatically be applied to the other.




A description of the subnet being created.




The site ID of the site to which this subnet belongs. You can retrieve site IDs for your deployment by calling the Get-CsNetworkSite cmdlet.




Suppresses any confirmation prompts that would otherwise be displayed before making changes.




Creates an object reference without actually committing the object as a permanent change. If you assign the output of this cmdlet called with this parameter to a variable, you can make changes to the properties of the object reference and then commit those changes by calling this cmdlet’s matching Set- cmdlet.




Describes what would happen if you executed the command without actually executing the command.




Prompts you for confirmation before executing the command.

Creates an object of type Microsoft.Rtc.Management.WritableConfig.Settings.NetworkConfiguration.SubnetType.

-------------------------- Example 1 --------------------------

New-CsNetworkSubnet -Identity -MaskBits 24 -NetworkSiteID Vancouver

This example demonstrates how to create a new subnet object that represents the subnet The Identity of the subnet is set to This value will automatically be assigned as the SubnetID. A subnet must have mask bits defined. That is done by supplying a value--in this case 24--to the MaskBits parameter. Finally, the site ID Vancouver is passed to the NetworkSiteID parameter to associate this subnet with that site.

-------------------------- Example 2 --------------------------

Import-CSV C:\subnet.csv | foreach {New-CsNetworkSubnet -Identity $_.Identity -MaskBits $_.Mask -NetworkSiteID $_.SiteID}

Example 2 reads from a CSV file to create a series of subnets. The CSV file in this example looks something like this:

Identity, Mask, SiteID, 24, Redmond, 24, Chicago, 25, Vancouver, 31, Paris


The example starts by calling the Import-CSV cmdlet, passing it the path to a CSV file. This cmdlet will read the contents of that file into memory. Those file contents are then piped to the foreach function. The foreach function iterates through the contents one line at a time. As you can see from the example file, the first line is a list of headings that define the rest of the contents; the foreach function will use these headings to access the comma-separated values by name.

Inside the foreach statement, the New-CsNetworkSubnet cmdlet is called. As foreach iterates through each line of the file contents, that line is passed as the values for the New-CsNetworkSubnet parameters. For example, the first time through the foreach statement, New-CsNetworkSubnet will create a subnet with the Identity this is the value in the Identity position in the first comma-separated line of values. (The $_ indicates the current value in the foreach loop.) The Mask value (24) is then passed to the MaskBits parameter, and the SiteID value (Redmond) from the file is passed to the NetworkSiteID parameter.

This process continues until all lines in the file have been read, and their values used to create new subnets.