Add-DAAppServer

Adds a new application server security group to the DirectAccess (DA) deployment, adds an application servers to an application server security group that is already part of the DirectAccess deployment, and adds or updates application server Group Policy Object (GPO) in a domain.

Syntax

Add-DAAppServer
   [-SecurityGroupNameList <String[]>]
   [-GpoName <String[]>]
   [-ComputerName <String>]
   [-PassThru]
   [-CimSession <CimSession[]>]
   [-ThrottleLimit <Int32>]
   [-AsJob]
   [-WhatIf]
   [-Confirm]
   [<CommonParameters>]
Add-DAAppServer
   [-GpoName <String[]>]
   [-ComputerName <String>]
   [-PassThru]
   [-SecurityGroupName] <String>
   [-Name] <String[]>
   [-CimSession <CimSession[]>]
   [-ThrottleLimit <Int32>]
   [-AsJob]
   [-WhatIf]
   [-Confirm]
   [<CommonParameters>]

Description

The Add-DAAppServer cmdlet adds a new application server security group to the DirectAccess (DA) deployment, adds an application servers to an application server security group that is already part of the DirectAccess deployment, and adds or updates application server Group Policy Object (GPO) in a domain. This cmdlet is not applicable when DA is deployed only for the management of remote clients.

The application server security group and GPO parameters are treated as independent entities. The basic paradigm is that a user can create application server GPOs independent of the SGs and the domains where these SGs exist. Every SG that is added to the DA deployment is added in all application server GPOs currently present. Hence, all GPOs always contain all SGs even if all the corresponding domains are not represented in all the SGs. There will never be a scenario where an SG is present only in some of the GPOs. If this happens, then it means that the configuration is in a bad state.

With this paradigm there is still a need to parse the SG to add independent application servers in an SG because every application server has a unique end-to-end IPsec policy in all client and application server GPOs.

The following additional capabilities of the application server cmdlets justify their need though AD cmdlets are already available for the addition of SGs and GPOs.

-- When an SG is added it is added in all GPOs. Additionally, if the user does not have permissions to edit a GPO the SG is not added to any of the GPOs. When using the AD cmdlet user would have to carefully ensure that it is run for each of the domains and it is difficult to handle the case where the user does not have permissions on some domains.

-- When a GPO is added all SGs are added in the GPO and application server specific policies are created. The cmdlet takes care of the conditions where the GPO is created if not already present. If the GPO is already present then it is merely edited.

The App Server configuration is a global configuration and is applicable to all DA servers in the enterprise deployment even when there is multi-site enterprise deployment.

Following are additional behavioral notes for this cmdlet.

-- If the user adds an SG without specifying a domain or GPO, then by default an application server GPO is created in the DA server's domain. If the user specifies a GPO name or domain name, then the GPO is created only in that domain.

-- Adding an application server GPO alone without any application server SGs is permitted operation. When adding a GPO the admin can either specify the name of the GPO and the domain to which it belongs or the domain name alone. If only a domain is specified, then the GPO is created with a default name.

-- If nested SGs are specified, then the cmdlet recursively parses all SGs so that all servers are retrieved and policies can be created or removed accordingly. However, the cmdlet does not refer to the domain to which an application server belongs. Hence it is the responsibility of the user to ensure that application server GPOs are created in every supported domain by explicitly adding GPOs in that domain.

-- When adding a new app server GPO if it is already present in the domain then it is merely configured with the SGs,IPsec policies and other settings. If it is not present then it is created first.

-- If user tries to re-add a GPO by either re-adding a domain or specifying the same GPO name for the domain again then no changes are made.

  • If the user tries to add a GPO with a new name in a domain that already contains an app server GPO, then no action is taken but a non-terminating error is displayed. If this cmdlet finds that no action can be taken based on the parameters passed, then it will return a terminating error.

-- When adding SGs if the user does not have the permissions to configure even one app server GPO among the many that might be present then the cmdlet terminates the processing of the entire list of SGs specified. However, it still processes any GPOs that the user might have specified to add.

-- When adding GPOs if the user does not have the permissions to create or configure one of the specified GPOs then the cmdlet still proceeds with the processing of the remaining GPOs in the list.

-- Each new application server GPO that is added is configured with the end-to-end authentication and IPsec traffic protection settings. These settings are common to all GPOs. The default values assigned by this cmdlet for end-to-end authentication is E2EAuthOnlyToAppServer and IPsec traffic protection is Disabled The default setting is Enabled. If the user wishes to change these values, then use the Set-DAAppServerConnection cmdlet.

Examples

EXAMPLE 1

PS C:\> Add-DAAppServer -SecurityGroupNameList daAppServerGrp -PassThru
SecurityGroupNameList: {corp.contoso.com\daappservergrp} 
GpoName              : {corp.contoso.com\DirectAccess Application Server Settings} 
ConnectionType       : E2EAuthOnlyToAppServer 
TrafficProtection    : Enabled

This example adds an appserver security group to DirectAccess deployment.

This cmdlet adds security group daAppServerGrp consisting of application servers to the DirectAccess deployment. Additionally, a GPO is created with default name DirectAccess Application Server Settings in the same domain as the DirectAccess server and the GPO is filtered on this security group.

EXAMPLE 2

PS C:\>Add-DAAppServer -Name da-test-0807 -SecurityGroupName daAppServerGrp
SecurityGroupNameList: {corp.contoso.com\daappservergrp} 
GpoName              : {corp.contoso.com\DirectAccess Application Server Settings} 
ConnectionType       : E2EAuthOnlyToAppServer 
TrafficProtection    : Enabled

This example add an application server to the application server security group.

This cmdlet adds the application server da-test-0807 to the pre-existing security group daappservergrp.

EXAMPLE 3

PS C:\>Add-DAAppServer -GpoName child.corp.contoso.com\DAAppServerGpo -PassThru
SecurityGroupNameList: {corp.contoso.com\testappserver} 
GpoName              : {corp.contoso.com\DirectAccess Application Server Settings, 
                       child.corp.contoso.com\DAAppServerGpo} 
ConnectionType       : E2EAuthOnlyToAppServer 
TrafficProtection    : Enabled

This example adds an application server GPOs to the DirectAccess deployment. The setup consists of two domains viz. corp.contoso.com and child.corp.contoso.com. There is already an Application Server GPO in corp.contoso.com. This cmdlet adds a GPO in the domain child.corp.contoso.com

Parameters

-AsJob

Runs the cmdlet as a background job. Use this parameter to run commands that take a long time to complete.

Type:SwitchParameter
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-CimSession

Runs the cmdlet in a remote session or on a remote computer. Enter a computer name or a session object, such as the output of a New-CimSession or Get-CimSession cmdlet. The default is the current session on the local computer.

Type:CimSession[]
Aliases:Session
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-ComputerName

Specifies the IPv4 or IPv6 address, or host name, of the computer on which the remote access server computer specific tasks should be run.

Type:String
Aliases:Cn
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Confirm

Prompts you for confirmation before running the cmdlet.

Type:SwitchParameter
Aliases:cf
Position:Named
Default value:False
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-GpoName

Specifies the name to be used when creating the application server GPO in the specified domain or represents the domain in which an app server GPO with the default name should be created. GPO is specified in the format DOMAIN\GPO_NAME. Domain is specified in the format DOMAIN. If the parameter contains only the domain name then the following default GPO name is used:

-- <domain> application server policy for <DirectAccess connection friendly name>.

The Default value is DirectAccess Application Server Settings

A list of GPOs can be specified.

Type:String[]
Position:Named
Default value:None
Required:False
Accept pipeline input:True
Accept wildcard characters:False

-Name

Specifies the list of application servers that have to be added to the DirectAccess deployment. The servers are specified by their hostnames and are added to the security group specified by the SecurityGroupName parameter. The servers cannot be specified by their IPv4 or IPv6 addresses.

Type:String[]
Position:1
Default value:None
Required:True
Accept pipeline input:True
Accept wildcard characters:False

-PassThru

Returns an object representing the item with which you are working. By default, this cmdlet does not generate any output.

Type:SwitchParameter
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-SecurityGroupName

Specifies the name of a security group that is already part of the DirectAccess deployment to which the specified list of application servers should be added. Specified in the DOMAIN\SG_NAME format.

Type:String
Position:2
Default value:None
Required:True
Accept pipeline input:True
Accept wildcard characters:False

-SecurityGroupNameList

Specifies the list of application server security groups that are to be added to the DirectAccess deployment. Specified in DOMAIN\SG_NAME format.

Type:String[]
Position:Named
Default value:None
Required:False
Accept pipeline input:True
Accept wildcard characters:False

-ThrottleLimit

Specifies the maximum number of concurrent operations that can be established to run the cmdlet. If this parameter is omitted or a value of 0 is entered, then Windows PowerShell® calculates an optimum throttle limit for the cmdlet based on the number of CIM cmdlets that are running on the computer. The throttle limit applies only to the current cmdlet, not to the session or to the computer.

Type:Int32
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-WhatIf

Shows what would happen if the cmdlet runs. The cmdlet is not run.

Type:SwitchParameter
Aliases:wi
Position:Named
Default value:False
Required:False
Accept pipeline input:False
Accept wildcard characters:False

Inputs

String[]

String

Outputs

CimInstance

CimInstance

The Microsoft.Management.Infrastructure.CimInstance object is a wrapper class that displays Windows Management Instrumentation (WMI) objects. The path after the pound sign (#) provides the namespace and class name for the underlying WMI object.

The DAAppServer object consists of the following properties:

-- The list of application server security groups. Each security group is specified in the Domain\GroupName format.

-- The List of application server GPOs. Each GPO is specified in the Domain\GPOName format.

-- The properties of the connection to the application server. If there are no application servers configured then the default value is NoE2EAuth, which mean no end-to-end authentication is required.

-- Whether or not IPsec traffic protection is enabled. If there are no application servers configured then the default value is Disabled.