Remove-DAClient

Remove-DAClient

Removes one or more client computer security groups (SGs) from the DirectAccess (DA) deployment, removes one or more DA client Group Policy Objects (GPOs) from domains, removes one or more SGs of down-level clients (down-level clients can connect only to the specified site) from the DA deployment in a multi-site deployment, and removes one or more down-level DA client GPOs from domains in a multi-site deployment.

Syntax

Parameter Set: ClientSGGpo
Remove-DAClient [-AsJob] [-CimSession <CimSession[]> ] [-ComputerName <String> ] [-DomainName <String[]> ] [-PassThru] [-SecurityGroupNameList <String[]> ] [-ThrottleLimit <Int32> ] [-Confirm] [-WhatIf] [ <CommonParameters>]

Parameter Set: ClientDownlevelSGGpo
Remove-DAClient [-AsJob] [-CimSession <CimSession[]> ] [-ComputerName <String> ] [-DownlevelDomainName <String[]> ] [-DownlevelSecurityGroupNameList <String[]> ] [-EntrypointName <String> ] [-PassThru] [-ThrottleLimit <Int32> ] [-Confirm] [-WhatIf] [ <CommonParameters>]

Detailed Description

The Remove-DAClient cmdlet removes one or more client computer security groups (SGs) from the DirectAccess (DA) deployment, removes one or more DA client Group Policy Objects (GPOs) from domains, removes one or more SGs of down-level clients (down-level clients can connect only to the specified site) from the DA deployment in a multi-site deployment, and removes one or more down-level DA client GPOs from domains in a multi-site deployment.

The basic paradigm is that all client GPOs always point to all SGs even if the domains to which these GPOs belong are not represented in the SGs. There will never be a scenario where an SG is present only in some of the GPOs. If this happens, then the state of the configuration is bad. A user can remove client GPOs independent of the SGs and the domains these SGs represent. Every SG that is removed from the DA deployment is removed in all client GPOs currently present.

When this paradigm is extended to clients being removed from an SG we see that it is a pure SG level operation which can be accomplished using Active Directory (AD) cmdlets (such as Remove-ADGroupMember).

Although AD cmdlets are already available for the removal of SGs and GPOs, the additional capabilities of this cmdlet are justified as follows.
-- When an SG is removed it is removed in all GPOs. If user does not have permissions to edit a GPO, then the SG is not removed from any of the domains. When using the AD cmdlet, the 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 removed all SGs in the GPO are removed and DA client specific policies are deleted. This cmdlet takes care of the conditions where the GPO is removed at the time of deletion. If the GPO was already present when adding it to the DA deployment, then only the DA related policies and settings are deleted and the GPO is left intact.

The following are additional behavior notes for the cmdlet.
-- The user is not allowed to delete all client GPOs and SGs. At least one of each should be present always.
-- Attempting to remove SGs in even a single GPO with the correct permissions results in the cmdlet terminating the processing of the entire list of SGs that were specified. However, This cmdlet still processes the list of domains that the user might have specified in the cmdlet.
-- Attempting to create, remove, or configure a client GPO in one of the specified domains without the correct permissions will result in a non-terminating error for that domain but the cmdlet proceeds with the processing of the remaining domains.

Parameters

-AsJob

Aliases

none

Required?

false

Position?

named

Default Value

none

Accept Pipeline Input?

false

Accept Wildcard Characters?

false

-CimSession<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.

Aliases

Session

Required?

false

Position?

named

Default Value

none

Accept Pipeline Input?

false

Accept Wildcard Characters?

false

-ComputerName<String>

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

Aliases

Cn

Required?

false

Position?

named

Default Value

none

Accept Pipeline Input?

false

Accept Wildcard Characters?

false

-DomainName<String[]>

Specifies the list of domains in which client GPOs need to be removed. A domain is specified in the DOMAIN format.

Aliases

none

Required?

false

Position?

named

Default Value

none

Accept Pipeline Input?

True (ByPropertyName)

Accept Wildcard Characters?

false

-DownlevelDomainName<String[]>

Specifies the list of domains in which client GPOs need to be removed. A domain is specified in the DOMAIN format.

Aliases

none

Required?

false

Position?

named

Default Value

none

Accept Pipeline Input?

True (ByPropertyName)

Accept Wildcard Characters?

false

-DownlevelSecurityGroupNameList<String[]>

Specifies the names of one or more down-level client SGs that are part of the DA deployment which need to be removed. This parameter is specified in DOMAIN\SG_NAME format.
These down-level clients can connect only to the site specified in the EntryPointName parameter.

Aliases

none

Required?

false

Position?

named

Default Value

none

Accept Pipeline Input?

True (ByPropertyName)

Accept Wildcard Characters?

false

-EntrypointName<String>

Specifies the identity of a site in a multi-site deployment from which down-level clients are removed (these clients can only connect to the specified site). If this parameter is not specified, then the site to which the computer on which the cmdlet is run is used (the ComputerName parameter may or may not be specified). If both this parameter and the ComputerName parameter are specified and the computer name does not belong to the site represented by the entry point name then this parameter takes precedence and the authentication type is configured for it.

Aliases

none

Required?

false

Position?

named

Default Value

none

Accept Pipeline Input?

True (ByPropertyName)

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.

Aliases

none

Required?

false

Position?

named

Default Value

none

Accept Pipeline Input?

false

Accept Wildcard Characters?

false

-SecurityGroupNameList<String[]>

Specifies a list of client SGs that are part of the DA deployment which need to be removed. The name of the SG is in DOMAIN\SG_NAME format.

Aliases

none

Required?

false

Position?

named

Default Value

none

Accept Pipeline Input?

True (ByPropertyName)

Accept Wildcard Characters?

false

-ThrottleLimit<Int32>

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.

Aliases

none

Required?

false

Position?

named

Default Value

none

Accept Pipeline Input?

false

Accept Wildcard Characters?

false

-Confirm

Prompts you for confirmation before running the cmdlet.

Required?

false

Position?

named

Default Value

false

Accept Pipeline Input?

false

Accept Wildcard Characters?

false

-WhatIf

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

Required?

false

Position?

named

Default Value

false

Accept Pipeline Input?

false

Accept Wildcard Characters?

false

<CommonParameters>

This cmdlet supports the common parameters: -Verbose, -Debug, -ErrorAction, -ErrorVariable, -OutBuffer, and -OutVariable. For more information, see    about_CommonParameters (https://go.microsoft.com/fwlink/p/?LinkID=113216).

Inputs

The input type is the type of the objects that you can pipe to the cmdlet.

  • None

Outputs

The output type is the type of the objects that the cmdlet emits.

  • Microsoft.Management.Infrastructure.CimInstance#DAClient

    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 DAClient object contains the following properties:
    -- The list of client security groups present in the DA deployment.
    -- The list of client GPOs present in the DA deployment.
    -- The status of force tunnel.
    -- The NRPT object (for force tunnel properties).
    -- The status of the policy to deploy DA only on laptops and notebooks and not on all of the computers in the domain.
    -- The status of whether appropriate policies should be deployed on down-level clients (Windows® 7) to enable them to connect to the Windows Server 2012 DA Server.
    If multi-site is enabled, then the following additional properties are present:
    -- The name of the entry point (identity of a site) to which down-level clients are added.
    -- The name of the down-level client GPO.
    -- The list of security groups of down-level clients.

Examples

EXAMPLE 1

This example removes the DirectAccessMobileClients SG from the DA deployment. The use of the cmdlet to restrict users and laptops in DirectAccessMobileClients SG from accessing the corporate resources of our Contoso firm is demonstrated here.

PS C:\> Remove-DAClient -SecurityGroupNameList 'corp.contoso.com\DirectAccessMobileClients'

EXAMPLE 2

This example displays the deployment that contains two domains viz.corp.contoso.com and child.corp.contoso.com and the cmdlet removes the DA client GPO in child.corp.cotoso.com domain. This cmdlet automatically locates the client GPO in the domain and removes it.

PS C:\> Remove-DAClient -DomainName "child.corp.contoso.com"

EXAMPLE 3

This example removes DA for client computers present in domain named child.corp.contoso.com at site 2-Edge-Site. This is accomplished by removing the client SG DownlevelClients which contains the Windows® 7 clients and the domain named child.corp.contoso.com.

PS C:\> Remove-DAClient -DownLevelSecurityGroupNameList 'child.corp.contoso.com\DownlevelClients' -DownlevelDomainName 'child.corp.contoso.com' -EntrypointName '2-Edge-Site' -PassThru

Add-DAClient

Get-DAClient

Set-DAClient

Remove-ADGroupMember