Public/Remove-ADSIGroup.ps1

function Remove-ADSIGroup
{
<#
    .SYNOPSIS
        function to remove a group
     
    .DESCRIPTION
        function to remove a group
     
    .PARAMETER Identity
        Specifies the Identity
     
        You can provide one of the following properties
            DistinguishedName
            Guid
            Name
            SamAccountName
            Sid
            UserPrincipalName
         
        Those properties come from the following enumeration:
            System.DirectoryServices.AccountManagement.IdentityType
     
    .PARAMETER Credential
        Specifies the alternative credential to use.
        By default it will use the current user windows credentials.
     
    .PARAMETER DomainName
        Specifies the alternative Domain where the user should be created
        By default it will use the current domain.
     
    .EXAMPLE
        Remove-ADSIGroup FXTESTGROUP
     
    .EXAMPLE
        Remove-ADSIGroup FXTESTGROUP -whatif
     
    .NOTES
        Francois-Xavier.Cat
        LazyWinAdmin.com
        @lazywinadm
        github.com/lazywinadmin
#>

[CmdletBinding(SupportsShouldProcess=$true)]
PARAM(
    [parameter(Mandatory=$true, ValueFromPipelineByPropertyName=$true, ValueFromPipeline=$true)]
    $Identity,

    [Alias("RunAs")]
    [System.Management.Automation.PSCredential]
    [System.Management.Automation.Credential()]
    $Credential = [System.Management.Automation.PSCredential]::Empty,

    [String]$DomainName)

    BEGIN
    {
        Add-Type -AssemblyName System.DirectoryServices.AccountManagement
        
        # Create Context splatting
        $ContextSplatting = @{
            Contexttype = "Domain"
        }
        
        IF ($PSBoundParameters['Credential']){$ContextSplatting.Credential = $Credential}
        IF ($PSBoundParameters['DomainName']){$ContextSplatting.DomainName = $DomainName}
        
        $Context = New-ADSIPrincipalContext @ContextSplatting
    }
    PROCESS
    {
        TRY{
            if ($pscmdlet.ShouldProcess("$Identity", "Delete Account")){
                (Get-ADSIGroup -Identity $Identity @ContextSplatting).delete()
            }
        }
        CATCH{
            Write-Error $Error[0]
        }
    }
}