Tests/Unit/Stubs/ActiveDirectory_2019.psm1

# Name: ActiveDirectory
# Version: 1.0.1.0
# CreatedOn: 2019-08-12 11:47:22Z

Add-Type -IgnoreWarnings -TypeDefinition @'
namespace Microsoft.ActiveDirectory.Management
{
    public class ADAccount
    {
        // Constructor
        public ADAccount() { }
        public ADAccount(System.String identity) { }
        public ADAccount(System.Guid guid) { }
        public ADAccount(System.Security.Principal.SecurityIdentifier sid) { }
        public ADAccount(Microsoft.ActiveDirectory.Management.ADObject identity) { }
 
        // Property
        public System.String UserPrincipalName { get; set; }
        public System.Boolean Enabled { get; set; }
        public System.String SamAccountName { get; set; }
        public System.Security.Principal.SecurityIdentifier SID { get; set; }
        public System.String DistinguishedName { get; set; }
        public System.String Name { get; set; }
        public System.String ObjectClass { get; set; }
        public System.Nullable<System.Guid> ObjectGuid { get; set; }
        public System.Collections.ICollection PropertyNames { get; set; }
        public System.Collections.Generic.ICollection<System.String> AddedProperties { get; set; }
        public System.Collections.Generic.ICollection<System.String> RemovedProperties { get; set; }
        public System.Collections.Generic.ICollection<System.String> ModifiedProperties { get; set; }
        public System.Int32 PropertyCount { get; set; }
        public Microsoft.ActiveDirectory.Management.ADPropertyValueCollection Item { get; set; }
 
    }
 
    public class ADAuthenticationPolicy
    {
        // Constructor
        public ADAuthenticationPolicy() { }
        public ADAuthenticationPolicy(System.String identity) { }
        public ADAuthenticationPolicy(System.Guid guid) { }
        public ADAuthenticationPolicy(Microsoft.ActiveDirectory.Management.ADObject identity) { }
 
        // Property
        public System.String DistinguishedName { get; set; }
        public System.String Name { get; set; }
        public System.String ObjectClass { get; set; }
        public System.Nullable<System.Guid> ObjectGuid { get; set; }
        public System.Collections.ICollection PropertyNames { get; set; }
        public System.Collections.Generic.ICollection<System.String> AddedProperties { get; set; }
        public System.Collections.Generic.ICollection<System.String> RemovedProperties { get; set; }
        public System.Collections.Generic.ICollection<System.String> ModifiedProperties { get; set; }
        public System.Int32 PropertyCount { get; set; }
        public Microsoft.ActiveDirectory.Management.ADPropertyValueCollection Item { get; set; }
 
    }
 
    public class ADAuthenticationPolicySilo
    {
        // Constructor
        public ADAuthenticationPolicySilo() { }
        public ADAuthenticationPolicySilo(System.String identity) { }
        public ADAuthenticationPolicySilo(System.Guid guid) { }
        public ADAuthenticationPolicySilo(Microsoft.ActiveDirectory.Management.ADObject identity) { }
 
        // Property
        public System.String DistinguishedName { get; set; }
        public System.String Name { get; set; }
        public System.String ObjectClass { get; set; }
        public System.Nullable<System.Guid> ObjectGuid { get; set; }
        public System.Collections.ICollection PropertyNames { get; set; }
        public System.Collections.Generic.ICollection<System.String> AddedProperties { get; set; }
        public System.Collections.Generic.ICollection<System.String> RemovedProperties { get; set; }
        public System.Collections.Generic.ICollection<System.String> ModifiedProperties { get; set; }
        public System.Int32 PropertyCount { get; set; }
        public Microsoft.ActiveDirectory.Management.ADPropertyValueCollection Item { get; set; }
 
    }
 
    public enum ADAuthType : int
    {
        Negotiate = 0,
        Basic = 1,
    }
 
    public class ADCentralAccessPolicy
    {
        // Constructor
        public ADCentralAccessPolicy() { }
        public ADCentralAccessPolicy(System.String identity) { }
        public ADCentralAccessPolicy(System.Guid guid) { }
        public ADCentralAccessPolicy(Microsoft.ActiveDirectory.Management.ADObject identity) { }
 
        // Property
        public System.String DistinguishedName { get; set; }
        public System.String Name { get; set; }
        public System.String ObjectClass { get; set; }
        public System.Nullable<System.Guid> ObjectGuid { get; set; }
        public System.Collections.ICollection PropertyNames { get; set; }
        public System.Collections.Generic.ICollection<System.String> AddedProperties { get; set; }
        public System.Collections.Generic.ICollection<System.String> RemovedProperties { get; set; }
        public System.Collections.Generic.ICollection<System.String> ModifiedProperties { get; set; }
        public System.Int32 PropertyCount { get; set; }
        public Microsoft.ActiveDirectory.Management.ADPropertyValueCollection Item { get; set; }
 
    }
 
    public class ADCentralAccessRule
    {
        // Constructor
        public ADCentralAccessRule() { }
        public ADCentralAccessRule(System.String identity) { }
        public ADCentralAccessRule(System.Guid guid) { }
        public ADCentralAccessRule(Microsoft.ActiveDirectory.Management.ADObject identity) { }
 
        // Property
        public System.String DistinguishedName { get; set; }
        public System.String Name { get; set; }
        public System.String ObjectClass { get; set; }
        public System.Nullable<System.Guid> ObjectGuid { get; set; }
        public System.Collections.ICollection PropertyNames { get; set; }
        public System.Collections.Generic.ICollection<System.String> AddedProperties { get; set; }
        public System.Collections.Generic.ICollection<System.String> RemovedProperties { get; set; }
        public System.Collections.Generic.ICollection<System.String> ModifiedProperties { get; set; }
        public System.Int32 PropertyCount { get; set; }
        public Microsoft.ActiveDirectory.Management.ADPropertyValueCollection Item { get; set; }
 
    }
 
    public class ADClaimTransformPolicy
    {
        // Constructor
        public ADClaimTransformPolicy() { }
        public ADClaimTransformPolicy(System.String identity) { }
        public ADClaimTransformPolicy(System.Guid guid) { }
        public ADClaimTransformPolicy(Microsoft.ActiveDirectory.Management.ADObject identity) { }
 
        // Property
        public System.String DistinguishedName { get; set; }
        public System.String Name { get; set; }
        public System.String ObjectClass { get; set; }
        public System.Nullable<System.Guid> ObjectGuid { get; set; }
        public System.Collections.ICollection PropertyNames { get; set; }
        public System.Collections.Generic.ICollection<System.String> AddedProperties { get; set; }
        public System.Collections.Generic.ICollection<System.String> RemovedProperties { get; set; }
        public System.Collections.Generic.ICollection<System.String> ModifiedProperties { get; set; }
        public System.Int32 PropertyCount { get; set; }
        public Microsoft.ActiveDirectory.Management.ADPropertyValueCollection Item { get; set; }
 
    }
 
    public class ADClaimType
    {
        // Constructor
        public ADClaimType() { }
        public ADClaimType(System.String identity) { }
        public ADClaimType(System.Guid guid) { }
        public ADClaimType(Microsoft.ActiveDirectory.Management.ADClaimTypeBase identity) { }
 
        // Property
        public System.String DistinguishedName { get; set; }
        public System.String Name { get; set; }
        public System.String ObjectClass { get; set; }
        public System.Nullable<System.Guid> ObjectGuid { get; set; }
        public System.Collections.ICollection PropertyNames { get; set; }
        public System.Collections.Generic.ICollection<System.String> AddedProperties { get; set; }
        public System.Collections.Generic.ICollection<System.String> RemovedProperties { get; set; }
        public System.Collections.Generic.ICollection<System.String> ModifiedProperties { get; set; }
        public System.Int32 PropertyCount { get; set; }
        public Microsoft.ActiveDirectory.Management.ADPropertyValueCollection Item { get; set; }
 
    }
 
    public class ADClaimTypeBase
    {
        public bool IsSecondaryStubType = true;
 
        public ADClaimTypeBase() { }
    }
 
    public enum ADClaimValueType : long
    {
        Invalid = 0,
        Int64 = 1,
        UInt64 = 2,
        String = 3,
        FQBN = 4,
        SID = 5,
        Boolean = 6,
        OctetString = 16,
    }
 
    public class ADComputer
    {
        // Constructor
        public ADComputer() { }
        public ADComputer(Microsoft.ActiveDirectory.Management.ADObject identity) { }
        public ADComputer(System.String identity) { }
        public ADComputer(System.Guid guid) { }
        public ADComputer(System.Security.Principal.SecurityIdentifier sid) { }
 
        // Property
        public System.String DNSHostName { get; set; }
        public System.String UserPrincipalName { get; set; }
        public System.Boolean Enabled { get; set; }
        public System.String SamAccountName { get; set; }
        public System.Security.Principal.SecurityIdentifier SID { get; set; }
        public System.String DistinguishedName { get; set; }
        public System.String Name { get; set; }
        public System.String ObjectClass { get; set; }
        public System.Nullable<System.Guid> ObjectGuid { get; set; }
        public System.Collections.ICollection PropertyNames { get; set; }
        public System.Collections.Generic.ICollection<System.String> AddedProperties { get; set; }
        public System.Collections.Generic.ICollection<System.String> RemovedProperties { get; set; }
        public System.Collections.Generic.ICollection<System.String> ModifiedProperties { get; set; }
        public System.Int32 PropertyCount { get; set; }
        public Microsoft.ActiveDirectory.Management.ADPropertyValueCollection Item { get; set; }
 
    }
 
    public class ADDefaultDomainPasswordPolicy
    {
        // Constructor
        public ADDefaultDomainPasswordPolicy() { }
        public ADDefaultDomainPasswordPolicy(System.String identity) { }
        public ADDefaultDomainPasswordPolicy(System.Guid guid) { }
        public ADDefaultDomainPasswordPolicy(Microsoft.ActiveDirectory.Management.ADEntity adentity) { }
 
        // Property
        public System.Nullable<System.TimeSpan> LockoutDuration { get; set; }
        public System.Nullable<System.TimeSpan> LockoutObservationWindow { get; set; }
        public System.Nullable<System.Int32> LockoutThreshold { get; set; }
        public System.Nullable<System.TimeSpan> MaxPasswordAge { get; set; }
        public System.Nullable<System.TimeSpan> MinPasswordAge { get; set; }
        public System.Nullable<System.Int32> MinPasswordLength { get; set; }
        public System.Nullable<System.Int32> PasswordHistoryCount { get; set; }
        public System.Nullable<System.Boolean> ComplexityEnabled { get; set; }
        public System.Nullable<System.Boolean> ReversibleEncryptionEnabled { get; set; }
        public System.Collections.ICollection PropertyNames { get; set; }
        public System.Collections.Generic.ICollection<System.String> AddedProperties { get; set; }
        public System.Collections.Generic.ICollection<System.String> RemovedProperties { get; set; }
        public System.Collections.Generic.ICollection<System.String> ModifiedProperties { get; set; }
        public System.Int32 PropertyCount { get; set; }
        public Microsoft.ActiveDirectory.Management.ADPropertyValueCollection Item { get; set; }
 
    }
 
    public class ADDirectoryServer
    {
        // Constructor
        public ADDirectoryServer() { }
        public ADDirectoryServer(System.String identity) { }
        public ADDirectoryServer(System.Guid guid) { }
        public ADDirectoryServer(Microsoft.ActiveDirectory.Management.ADObject identity) { }
 
        // Property
        public System.String Name { get; set; }
        public System.String Site { get; set; }
        public System.String IPv4Address { get; set; }
        public System.String IPv6Address { get; set; }
        public System.Collections.ICollection PropertyNames { get; set; }
        public System.Collections.Generic.ICollection<System.String> AddedProperties { get; set; }
        public System.Collections.Generic.ICollection<System.String> RemovedProperties { get; set; }
        public System.Collections.Generic.ICollection<System.String> ModifiedProperties { get; set; }
        public System.Int32 PropertyCount { get; set; }
        public Microsoft.ActiveDirectory.Management.ADPropertyValueCollection Item { get; set; }
 
    }
 
    public class ADDomain
    {
        // Constructor
        public ADDomain() { }
        public ADDomain(System.String identity) { }
        public ADDomain(System.Guid guid) { }
        public ADDomain(System.Security.Principal.SecurityIdentifier sid) { }
        public ADDomain(Microsoft.ActiveDirectory.Management.ADObject adobject) { }
 
        // Property
        public System.Security.Principal.SecurityIdentifier DomainSID { get; set; }
        public Microsoft.ActiveDirectory.Management.ADPropertyValueCollection AllowedDNSSuffixes { get; set; }
        public System.Nullable<System.TimeSpan> LastLogonReplicationInterval { get; set; }
        public System.Nullable<Microsoft.ActiveDirectory.Management.ADDomainMode> DomainMode { get; set; }
        public System.String ManagedBy { get; set; }
        public Microsoft.ActiveDirectory.Management.ADPropertyValueCollection LinkedGroupPolicyObjects { get; set; }
        public Microsoft.ActiveDirectory.Management.ADPropertyValueCollection ChildDomains { get; set; }
        public System.String ComputersContainer { get; set; }
        public System.String DomainControllersContainer { get; set; }
        public System.String ForeignSecurityPrincipalsContainer { get; set; }
        public System.String Forest { get; set; }
        public System.String InfrastructureMaster { get; set; }
        public System.String NetBIOSName { get; set; }
        public System.String PDCEmulator { get; set; }
        public System.String ParentDomain { get; set; }
        public System.String RIDMaster { get; set; }
        public System.String SystemsContainer { get; set; }
        public System.String UsersContainer { get; set; }
        public Microsoft.ActiveDirectory.Management.ADPropertyValueCollection SubordinateReferences { get; set; }
        public System.String DNSRoot { get; set; }
        public System.String LostAndFoundContainer { get; set; }
        public System.String DeletedObjectsContainer { get; set; }
        public System.String QuotasContainer { get; set; }
        public Microsoft.ActiveDirectory.Management.ADPropertyValueCollection ReadOnlyReplicaDirectoryServers { get; set; }
        public Microsoft.ActiveDirectory.Management.ADPropertyValueCollection ReplicaDirectoryServers { get; set; }
        public System.String DistinguishedName { get; set; }
        public System.String Name { get; set; }
        public System.String ObjectClass { get; set; }
        public System.Nullable<System.Guid> ObjectGuid { get; set; }
        public System.Collections.ICollection PropertyNames { get; set; }
        public System.Collections.Generic.ICollection<System.String> AddedProperties { get; set; }
        public System.Collections.Generic.ICollection<System.String> RemovedProperties { get; set; }
        public System.Collections.Generic.ICollection<System.String> ModifiedProperties { get; set; }
        public System.Int32 PropertyCount { get; set; }
        public Microsoft.ActiveDirectory.Management.ADPropertyValueCollection Item { get; set; }
 
    }
 
    public class ADDomainController
    {
        // Constructor
        public ADDomainController() { }
        public ADDomainController(System.String identity) { }
        public ADDomainController(System.Guid guid) { }
        public ADDomainController(System.Security.Principal.SecurityIdentifier sid) { }
        public ADDomainController(Microsoft.ActiveDirectory.Management.ADObject identity) { }
 
        // Property
        public System.String Domain { get; set; }
        public System.String Forest { get; set; }
        public System.String Name { get; set; }
        public System.String Site { get; set; }
        public System.String IPv4Address { get; set; }
        public System.String IPv6Address { get; set; }
        public System.Collections.ICollection PropertyNames { get; set; }
        public System.Collections.Generic.ICollection<System.String> AddedProperties { get; set; }
        public System.Collections.Generic.ICollection<System.String> RemovedProperties { get; set; }
        public System.Collections.Generic.ICollection<System.String> ModifiedProperties { get; set; }
        public System.Int32 PropertyCount { get; set; }
        public Microsoft.ActiveDirectory.Management.ADPropertyValueCollection Item { get; set; }
        public bool IsGlobalCatalog;
        public bool IsReadOnly;
        public Microsoft.ActiveDirectory.Management.ADOperationMasterRole[] OperationMasterRoles;
    }
 
    public enum ADDomainMode : int
    {
        Windows2000Domain = 0,
        Windows2003InterimDomain = 1,
        Windows2003Domain = 2,
        Windows2008Domain = 3,
        Windows2008R2Domain = 4,
        Windows2012Domain = 5,
        Windows2012R2Domain = 6,
        Windows2016Domain = 7,
        UnknownDomain = -1,
    }
 
    public class ADEntity
    {
        // Constructor
        public ADEntity(System.String identity) { }
 
        // Property
        public System.Collections.ICollection PropertyNames { get; set; }
        public System.Collections.Generic.ICollection<System.String> AddedProperties { get; set; }
        public System.Collections.Generic.ICollection<System.String> RemovedProperties { get; set; }
        public System.Collections.Generic.ICollection<System.String> ModifiedProperties { get; set; }
        public System.Int32 PropertyCount { get; set; }
        public Microsoft.ActiveDirectory.Management.ADPropertyValueCollection Item { get; set; }
 
        // Fabricated constructor
        private ADEntity() { }
        public static ADEntity CreateTypeInstance()
        {
            return new ADEntity();
        }
    }
 
    public class ADFineGrainedPasswordPolicy
    {
        // Constructor
        public ADFineGrainedPasswordPolicy() { }
        public ADFineGrainedPasswordPolicy(System.String identity) { }
        public ADFineGrainedPasswordPolicy(System.Guid guid) { }
        public ADFineGrainedPasswordPolicy(Microsoft.ActiveDirectory.Management.ADObject adobject) { }
 
        // Property
        public System.Nullable<System.TimeSpan> LockoutDuration { get; set; }
        public System.Nullable<System.TimeSpan> LockoutObservationWindow { get; set; }
        public System.Nullable<System.Int32> LockoutThreshold { get; set; }
        public System.Nullable<System.TimeSpan> MaxPasswordAge { get; set; }
        public System.Nullable<System.TimeSpan> MinPasswordAge { get; set; }
        public System.Nullable<System.Int32> MinPasswordLength { get; set; }
        public System.Nullable<System.Int32> PasswordHistoryCount { get; set; }
        public System.Nullable<System.Boolean> ComplexityEnabled { get; set; }
        public System.Nullable<System.Boolean> ReversibleEncryptionEnabled { get; set; }
        public System.Nullable<System.Int32> Precedence { get; set; }
        public Microsoft.ActiveDirectory.Management.ADPropertyValueCollection AppliesTo { get; set; }
        public System.String DistinguishedName { get; set; }
        public System.String Name { get; set; }
        public System.String ObjectClass { get; set; }
        public System.Nullable<System.Guid> ObjectGuid { get; set; }
        public System.Collections.ICollection PropertyNames { get; set; }
        public System.Collections.Generic.ICollection<System.String> AddedProperties { get; set; }
        public System.Collections.Generic.ICollection<System.String> RemovedProperties { get; set; }
        public System.Collections.Generic.ICollection<System.String> ModifiedProperties { get; set; }
        public System.Int32 PropertyCount { get; set; }
        public Microsoft.ActiveDirectory.Management.ADPropertyValueCollection Item { get; set; }
 
    }
 
    public class ADForest
    {
        // Constructor
        public ADForest() { }
        public ADForest(System.String identity) { }
        public ADForest(System.Guid guid) { }
        public ADForest(System.Security.Principal.SecurityIdentifier sid) { }
        public ADForest(Microsoft.ActiveDirectory.Management.ADObject adobject) { }
 
        // Property
        public System.String Name { get; set; }
        public Microsoft.ActiveDirectory.Management.ADPropertyValueCollection UPNSuffixes { get; set; }
        public Microsoft.ActiveDirectory.Management.ADPropertyValueCollection SPNSuffixes { get; set; }
        public System.Nullable<Microsoft.ActiveDirectory.Management.ADForestMode> ForestMode { get; set; }
        public Microsoft.ActiveDirectory.Management.ADPropertyValueCollection ApplicationPartitions { get; set; }
        public Microsoft.ActiveDirectory.Management.ADPropertyValueCollection CrossForestReferences { get; set; }
        public Microsoft.ActiveDirectory.Management.ADPropertyValueCollection Domains { get; set; }
        public Microsoft.ActiveDirectory.Management.ADPropertyValueCollection GlobalCatalogs { get; set; }
        public Microsoft.ActiveDirectory.Management.ADPropertyValueCollection Sites { get; set; }
        public System.String DomainNamingMaster { get; set; }
        public System.String RootDomain { get; set; }
        public System.String SchemaMaster { get; set; }
        public System.Collections.ICollection PropertyNames { get; set; }
        public System.Collections.Generic.ICollection<System.String> AddedProperties { get; set; }
        public System.Collections.Generic.ICollection<System.String> RemovedProperties { get; set; }
        public System.Collections.Generic.ICollection<System.String> ModifiedProperties { get; set; }
        public System.Int32 PropertyCount { get; set; }
        public Microsoft.ActiveDirectory.Management.ADPropertyValueCollection Item { get; set; }
 
    }
 
    public enum ADForestMode : int
    {
        Windows2000Forest = 0,
        Windows2003InterimForest = 1,
        Windows2003Forest = 2,
        Windows2008Forest = 3,
        Windows2008R2Forest = 4,
        Windows2012Forest = 5,
        Windows2012R2Forest = 6,
        Windows2016Forest = 7,
        UnknownForest = -1,
    }
 
    public class ADGroup
    {
        // Constructor
        public ADGroup() { }
        public ADGroup(System.String identity) { }
        public ADGroup(System.Guid guid) { }
        public ADGroup(System.Security.Principal.SecurityIdentifier sid) { }
        public ADGroup(Microsoft.ActiveDirectory.Management.ADObject identity) { }
 
        // Property
        public System.Nullable<Microsoft.ActiveDirectory.Management.ADGroupScope> GroupScope { get; set; }
        public System.Nullable<Microsoft.ActiveDirectory.Management.ADGroupCategory> GroupCategory { get; set; }
        public System.String SamAccountName { get; set; }
        public System.Security.Principal.SecurityIdentifier SID { get; set; }
        public System.String DistinguishedName { get; set; }
        public System.String Name { get; set; }
        public System.String ObjectClass { get; set; }
        public System.Nullable<System.Guid> ObjectGuid { get; set; }
        public System.Collections.ICollection PropertyNames { get; set; }
        public System.Collections.Generic.ICollection<System.String> AddedProperties { get; set; }
        public System.Collections.Generic.ICollection<System.String> RemovedProperties { get; set; }
        public System.Collections.Generic.ICollection<System.String> ModifiedProperties { get; set; }
        public System.Int32 PropertyCount { get; set; }
        public Microsoft.ActiveDirectory.Management.ADPropertyValueCollection Item { get; set; }
 
    }
 
    public enum ADGroupCategory : int
    {
        Distribution = 0,
        Security = 1,
    }
 
    public enum ADGroupScope : int
    {
        DomainLocal = 0,
        Global = 1,
        Universal = 2,
    }
 
    public enum ADInterSiteTransportProtocolType : int
    {
        IP = 0,
        SMTP = 1,
    }
 
    [System.Flags]
    public enum ADKerberosEncryptionType : int
    {
        None = 0,
        DES = 3,
        RC4 = 4,
        AES128 = 8,
        AES256 = 16,
    }
 
    public class ADObject
    {
        // Constructor
        public ADObject() { }
        public ADObject(System.String identity) { }
        public ADObject(System.Nullable<System.Guid> objectGuid) { }
 
        // Property
        public System.String DistinguishedName { get; set; }
        public System.String Name { get; set; }
        public System.String ObjectClass { get; set; }
        public System.Nullable<System.Guid> ObjectGuid { get; set; }
        public System.Collections.ICollection PropertyNames { get; set; }
        public System.Collections.Generic.ICollection<System.String> AddedProperties { get; set; }
        public System.Collections.Generic.ICollection<System.String> RemovedProperties { get; set; }
        public System.Collections.Generic.ICollection<System.String> ModifiedProperties { get; set; }
        public System.Int32 PropertyCount { get; set; }
        public Microsoft.ActiveDirectory.Management.ADPropertyValueCollection Item { get; set; }
 
    }
 
    public enum ADOperationMasterRole : int
    {
        PDCEmulator = 0,
        RIDMaster = 1,
        InfrastructureMaster = 2,
        SchemaMaster = 3,
        DomainNamingMaster = 4,
    }
 
    public class ADOptionalFeature
    {
        // Constructor
        public ADOptionalFeature() { }
        public ADOptionalFeature(System.String identity) { }
        public ADOptionalFeature(System.Guid guid) { }
        public ADOptionalFeature(Microsoft.ActiveDirectory.Management.ADObject adobject) { }
 
        // Property
        public System.Nullable<System.Guid> FeatureGUID { get; set; }
        public Microsoft.ActiveDirectory.Management.ADDomainMode RequiredDomainMode { get; set; }
        public Microsoft.ActiveDirectory.Management.ADForestMode RequiredForestMode { get; set; }
        public System.Boolean IsDisableable { get; set; }
        public Microsoft.ActiveDirectory.Management.ADOptionalFeatureScope[] FeatureScope { get; set; }
        public System.String DistinguishedName { get; set; }
        public System.String Name { get; set; }
        public System.String ObjectClass { get; set; }
        public System.Nullable<System.Guid> ObjectGuid { get; set; }
        public System.Collections.ICollection PropertyNames { get; set; }
        public System.Collections.Generic.ICollection<System.String> AddedProperties { get; set; }
        public System.Collections.Generic.ICollection<System.String> RemovedProperties { get; set; }
        public System.Collections.Generic.ICollection<System.String> ModifiedProperties { get; set; }
        public System.Int32 PropertyCount { get; set; }
        public Microsoft.ActiveDirectory.Management.ADPropertyValueCollection Item { get; set; }
 
    }
 
    public enum ADOptionalFeatureScope : int
    {
        Unknown = 0,
        ForestOrConfigurationSet = 1,
        Domain = 2,
    }
 
    public class ADOrganizationalUnit
    {
        // Constructor
        public ADOrganizationalUnit() { }
        public ADOrganizationalUnit(Microsoft.ActiveDirectory.Management.ADObject identity) { }
        public ADOrganizationalUnit(System.String identity) { }
        public ADOrganizationalUnit(System.Guid guid) { }
 
        // Property
        public System.String ManagedBy { get; set; }
        public System.String StreetAddress { get; set; }
        public System.String City { get; set; }
        public System.String State { get; set; }
        public System.String Country { get; set; }
        public System.String PostalCode { get; set; }
        public System.String DistinguishedName { get; set; }
        public System.String Name { get; set; }
        public System.String ObjectClass { get; set; }
        public System.Nullable<System.Guid> ObjectGuid { get; set; }
        public System.Collections.ICollection PropertyNames { get; set; }
        public System.Collections.Generic.ICollection<System.String> AddedProperties { get; set; }
        public System.Collections.Generic.ICollection<System.String> RemovedProperties { get; set; }
        public System.Collections.Generic.ICollection<System.String> ModifiedProperties { get; set; }
        public System.Int32 PropertyCount { get; set; }
        public Microsoft.ActiveDirectory.Management.ADPropertyValueCollection Item { get; set; }
 
    }
 
    public class ADPrincipal
    {
        // Constructor
        public ADPrincipal() { }
        public ADPrincipal(System.String identity) { SamAccountName = identity; }
        public ADPrincipal(System.Guid guid) { }
        public ADPrincipal(System.Security.Principal.SecurityIdentifier sid) { }
        public ADPrincipal(Microsoft.ActiveDirectory.Management.ADObject adobject) { }
 
        // Property
        public System.String SamAccountName { get; set; }
        public System.Security.Principal.SecurityIdentifier SID { get; set; }
        public System.String DistinguishedName { get; set; }
        public System.String Name { get; set; }
        public System.String ObjectClass { get; set; }
        public System.Nullable<System.Guid> ObjectGuid { get; set; }
        public System.Collections.ICollection PropertyNames { get; set; }
        public System.Collections.Generic.ICollection<System.String> AddedProperties { get; set; }
        public System.Collections.Generic.ICollection<System.String> RemovedProperties { get; set; }
        public System.Collections.Generic.ICollection<System.String> ModifiedProperties { get; set; }
        public System.Int32 PropertyCount { get; set; }
        public Microsoft.ActiveDirectory.Management.ADPropertyValueCollection Item { get; set; }
 
        // Method
        public override string ToString()
        {
            return this.SamAccountName;
        }
    }
 
    public class ADPropertyValueCollection
    {
        public bool IsSecondaryStubType = true;
 
        public ADPropertyValueCollection() { }
    }
 
    public class ADReplicationConnection
    {
        // Constructor
        public ADReplicationConnection() { }
        public ADReplicationConnection(System.String identity) { }
        public ADReplicationConnection(System.Guid guid) { }
        public ADReplicationConnection(Microsoft.ActiveDirectory.Management.ADObject identity) { }
 
        // Property
        public System.String DistinguishedName { get; set; }
        public System.String Name { get; set; }
        public System.String ObjectClass { get; set; }
        public System.Nullable<System.Guid> ObjectGuid { get; set; }
        public System.Collections.ICollection PropertyNames { get; set; }
        public System.Collections.Generic.ICollection<System.String> AddedProperties { get; set; }
        public System.Collections.Generic.ICollection<System.String> RemovedProperties { get; set; }
        public System.Collections.Generic.ICollection<System.String> ModifiedProperties { get; set; }
        public System.Int32 PropertyCount { get; set; }
        public Microsoft.ActiveDirectory.Management.ADPropertyValueCollection Item { get; set; }
 
    }
 
    public class ADReplicationSite
    {
        // Constructor
        public ADReplicationSite() { }
        public ADReplicationSite(System.String identity) { }
        public ADReplicationSite(System.Guid guid) { }
        public ADReplicationSite(Microsoft.ActiveDirectory.Management.ADObject identity) { }
        public ADReplicationSite(Microsoft.ActiveDirectory.Management.ADDirectoryServer directoryServer) { }
 
        // Property
        public System.String DistinguishedName { get; set; }
        public System.String Name { get; set; }
        public System.String ObjectClass { get; set; }
        public System.Nullable<System.Guid> ObjectGuid { get; set; }
        public System.Collections.ICollection PropertyNames { get; set; }
        public System.Collections.Generic.ICollection<System.String> AddedProperties { get; set; }
        public System.Collections.Generic.ICollection<System.String> RemovedProperties { get; set; }
        public System.Collections.Generic.ICollection<System.String> ModifiedProperties { get; set; }
        public System.Int32 PropertyCount { get; set; }
        public Microsoft.ActiveDirectory.Management.ADPropertyValueCollection Item { get; set; }
 
    }
 
    public class ADReplicationSiteLink
    {
        // Constructor
        public ADReplicationSiteLink() { }
        public ADReplicationSiteLink(System.String identity) { }
        public ADReplicationSiteLink(System.Guid guid) { }
        public ADReplicationSiteLink(Microsoft.ActiveDirectory.Management.ADObject identity) { }
 
        // Property
        public System.String DistinguishedName { get; set; }
        public System.String Name { get; set; }
        public System.String ObjectClass { get; set; }
        public System.Nullable<System.Guid> ObjectGuid { get; set; }
        public System.Collections.ICollection PropertyNames { get; set; }
        public System.Collections.Generic.ICollection<System.String> AddedProperties { get; set; }
        public System.Collections.Generic.ICollection<System.String> RemovedProperties { get; set; }
        public System.Collections.Generic.ICollection<System.String> ModifiedProperties { get; set; }
        public System.Int32 PropertyCount { get; set; }
        public Microsoft.ActiveDirectory.Management.ADPropertyValueCollection Item { get; set; }
 
    }
 
    public class ADReplicationSiteLinkBridge
    {
        // Constructor
        public ADReplicationSiteLinkBridge() { }
        public ADReplicationSiteLinkBridge(System.String identity) { }
        public ADReplicationSiteLinkBridge(System.Guid guid) { }
        public ADReplicationSiteLinkBridge(Microsoft.ActiveDirectory.Management.ADObject identity) { }
 
        // Property
        public System.String DistinguishedName { get; set; }
        public System.String Name { get; set; }
        public System.String ObjectClass { get; set; }
        public System.Nullable<System.Guid> ObjectGuid { get; set; }
        public System.Collections.ICollection PropertyNames { get; set; }
        public System.Collections.Generic.ICollection<System.String> AddedProperties { get; set; }
        public System.Collections.Generic.ICollection<System.String> RemovedProperties { get; set; }
        public System.Collections.Generic.ICollection<System.String> ModifiedProperties { get; set; }
        public System.Int32 PropertyCount { get; set; }
        public Microsoft.ActiveDirectory.Management.ADPropertyValueCollection Item { get; set; }
 
    }
 
    public class ADReplicationSubnet
    {
        // Constructor
        public ADReplicationSubnet() { }
        public ADReplicationSubnet(System.String identity) { }
        public ADReplicationSubnet(System.Guid guid) { }
        public ADReplicationSubnet(Microsoft.ActiveDirectory.Management.ADObject identity) { }
 
        // Property
        public System.String DistinguishedName { get; set; }
        public System.String Name { get; set; }
        public System.String ObjectClass { get; set; }
        public System.Nullable<System.Guid> ObjectGuid { get; set; }
        public System.Collections.ICollection PropertyNames { get; set; }
        public System.Collections.Generic.ICollection<System.String> AddedProperties { get; set; }
        public System.Collections.Generic.ICollection<System.String> RemovedProperties { get; set; }
        public System.Collections.Generic.ICollection<System.String> ModifiedProperties { get; set; }
        public System.Int32 PropertyCount { get; set; }
        public Microsoft.ActiveDirectory.Management.ADPropertyValueCollection Item { get; set; }
 
    }
 
    public class ADResourceProperty
    {
        // Constructor
        public ADResourceProperty() { }
        public ADResourceProperty(System.String identity) { }
        public ADResourceProperty(System.Guid guid) { }
        public ADResourceProperty(Microsoft.ActiveDirectory.Management.ADClaimTypeBase identity) { }
 
        // Property
        public System.String DistinguishedName { get; set; }
        public System.String Name { get; set; }
        public System.String ObjectClass { get; set; }
        public System.Nullable<System.Guid> ObjectGuid { get; set; }
        public System.Collections.ICollection PropertyNames { get; set; }
        public System.Collections.Generic.ICollection<System.String> AddedProperties { get; set; }
        public System.Collections.Generic.ICollection<System.String> RemovedProperties { get; set; }
        public System.Collections.Generic.ICollection<System.String> ModifiedProperties { get; set; }
        public System.Int32 PropertyCount { get; set; }
        public Microsoft.ActiveDirectory.Management.ADPropertyValueCollection Item { get; set; }
 
    }
 
    public class ADResourcePropertyList
    {
        // Constructor
        public ADResourcePropertyList() { }
        public ADResourcePropertyList(System.String identity) { }
        public ADResourcePropertyList(System.Guid guid) { }
        public ADResourcePropertyList(Microsoft.ActiveDirectory.Management.ADObject identity) { }
 
        // Property
        public System.String DistinguishedName { get; set; }
        public System.String Name { get; set; }
        public System.String ObjectClass { get; set; }
        public System.Nullable<System.Guid> ObjectGuid { get; set; }
        public System.Collections.ICollection PropertyNames { get; set; }
        public System.Collections.Generic.ICollection<System.String> AddedProperties { get; set; }
        public System.Collections.Generic.ICollection<System.String> RemovedProperties { get; set; }
        public System.Collections.Generic.ICollection<System.String> ModifiedProperties { get; set; }
        public System.Int32 PropertyCount { get; set; }
        public Microsoft.ActiveDirectory.Management.ADPropertyValueCollection Item { get; set; }
 
    }
 
    public class ADResourcePropertyValueType
    {
        // Constructor
        public ADResourcePropertyValueType() { }
        public ADResourcePropertyValueType(System.String identity) { }
        public ADResourcePropertyValueType(System.Guid guid) { }
        public ADResourcePropertyValueType(Microsoft.ActiveDirectory.Management.ADObject identity) { }
 
        // Property
        public System.String DistinguishedName { get; set; }
        public System.String Name { get; set; }
        public System.String ObjectClass { get; set; }
        public System.Nullable<System.Guid> ObjectGuid { get; set; }
        public System.Collections.ICollection PropertyNames { get; set; }
        public System.Collections.Generic.ICollection<System.String> AddedProperties { get; set; }
        public System.Collections.Generic.ICollection<System.String> RemovedProperties { get; set; }
        public System.Collections.Generic.ICollection<System.String> ModifiedProperties { get; set; }
        public System.Int32 PropertyCount { get; set; }
        public Microsoft.ActiveDirectory.Management.ADPropertyValueCollection Item { get; set; }
 
    }
 
    public enum ADSearchScope : int
    {
        Base = 0,
        OneLevel = 1,
        Subtree = 2,
    }
 
    public class ADServiceAccount
    {
        // Constructor
        public ADServiceAccount() { }
        public ADServiceAccount(Microsoft.ActiveDirectory.Management.ADObject identity) { }
        public ADServiceAccount(System.String identity) { }
        public ADServiceAccount(System.Guid guid) { }
        public ADServiceAccount(System.Security.Principal.SecurityIdentifier sid) { }
 
        // Property
        public System.String[] ServicePrincipalNames { get; set; }
        public System.String UserPrincipalName { get; set; }
        public System.Boolean Enabled { get; set; }
        public System.String SamAccountName { get; set; }
        public System.Security.Principal.SecurityIdentifier SID { get; set; }
        public System.String DistinguishedName { get; set; }
        public System.String Name { get; set; }
        public System.String ObjectClass { get; set; }
        public System.Nullable<System.Guid> ObjectGuid { get; set; }
        public System.Collections.ICollection PropertyNames { get; set; }
        public System.Collections.Generic.ICollection<System.String> AddedProperties { get; set; }
        public System.Collections.Generic.ICollection<System.String> RemovedProperties { get; set; }
        public System.Collections.Generic.ICollection<System.String> ModifiedProperties { get; set; }
        public System.Int32 PropertyCount { get; set; }
        public Microsoft.ActiveDirectory.Management.ADPropertyValueCollection Item { get; set; }
 
    }
 
    public enum ADStrongNTLMPolicyType : int
    {
        Disabled = 0,
        Optional = 1,
        Required = 2,
    }
 
    public class ADSuggestedValueEntry
    {
        // Constructor
        public ADSuggestedValueEntry() { }
        public ADSuggestedValueEntry(System.Object value, System.String displayName, System.String description, System.String valueGuid) { }
        public ADSuggestedValueEntry(System.Object value, System.String displayName, System.String description) { }
 
        // Property
        public System.Object Value { get; set; }
        public System.String ValueDisplayName { get; set; }
        public System.String ValueDescription { get; set; }
        public System.String ValueGUID { get; set; }
 
    }
 
    public class ADTrust
    {
        // Constructor
        public ADTrust() { }
        public ADTrust(System.String identity) { }
        public ADTrust(System.Guid guid) { }
        public ADTrust(Microsoft.ActiveDirectory.Management.ADObject identity) { }
 
        // Property
        public System.String DistinguishedName { get; set; }
        public System.String Name { get; set; }
        public System.String ObjectClass { get; set; }
        public System.Nullable<System.Guid> ObjectGuid { get; set; }
        public System.Collections.ICollection PropertyNames { get; set; }
        public System.Collections.Generic.ICollection<System.String> AddedProperties { get; set; }
        public System.Collections.Generic.ICollection<System.String> RemovedProperties { get; set; }
        public System.Collections.Generic.ICollection<System.String> ModifiedProperties { get; set; }
        public System.Int32 PropertyCount { get; set; }
        public Microsoft.ActiveDirectory.Management.ADPropertyValueCollection Item { get; set; }
 
    }
 
    public enum ADTrustRole : int
    {
        Trusted = 0,
        Trusting = 1,
    }
 
    public class ADUser
    {
        // Constructor
        public ADUser() { }
        public ADUser(System.String identity) { }
        public ADUser(System.Guid guid) { }
        public ADUser(System.Security.Principal.SecurityIdentifier sid) { }
        public ADUser(Microsoft.ActiveDirectory.Management.ADObject identity) { }
 
        // Property
        public System.String GivenName { get; set; }
        public System.String Surname { get; set; }
        public System.String UserPrincipalName { get; set; }
        public System.Boolean Enabled { get; set; }
        public System.String SamAccountName { get; set; }
        public System.Security.Principal.SecurityIdentifier SID { get; set; }
        public System.String DistinguishedName { get; set; }
        public System.String Name { get; set; }
        public System.String ObjectClass { get; set; }
        public System.Nullable<System.Guid> ObjectGuid { get; set; }
        public System.Collections.ICollection PropertyNames { get; set; }
        public System.Collections.Generic.ICollection<System.String> AddedProperties { get; set; }
        public System.Collections.Generic.ICollection<System.String> RemovedProperties { get; set; }
        public System.Collections.Generic.ICollection<System.String> ModifiedProperties { get; set; }
        public System.Int32 PropertyCount { get; set; }
        public Microsoft.ActiveDirectory.Management.ADPropertyValueCollection Item { get; set; }
 
    }
 
    public class ADException : System.Exception
    {
        // Constructor
        public ADException() { }
        public ADException(System.String message) { }
        public ADException(System.String message, System.Exception innerException) { }
        public ADException(System.String message, System.Int32 errorCode) { }
        public ADException(System.String message, System.Exception inner, System.Int32 errorCode) { }
        public ADException(System.String message, System.String serverErrorMessage) { }
        public ADException(System.String message, System.Int32 errorCode, System.String serverErrorMessage) { }
        public ADException(System.String message, System.Exception inner, System.String serverErrorMessage) { }
        public ADException(System.String message, System.Exception inner, System.Int32 errorCode, System.String serverErrorMessage) { }
 
        // Property
        public System.Int32 ErrorCode { get; set; }
        public System.String ServerErrorMessage { get; set; }
        public System.String Message { get; set; }
        public System.Collections.IDictionary Data { get; set; }
        public System.Exception InnerException { get; set; }
        public System.Reflection.MethodBase TargetSite { get; set; }
        public System.String StackTrace { get; set; }
        public System.String HelpLink { get; set; }
        public System.String Source { get; set; }
        public System.Int32 HResult { get; set; }
 
    }
 
    public class ADIdentityNotFoundException : System.Exception
    {
        // Constructor
        public ADIdentityNotFoundException() { }
        public ADIdentityNotFoundException(System.String message) { }
        public ADIdentityNotFoundException(System.String message, System.Exception innerException) { }
 
        // Property
        public System.String Message { get; set; }
        public System.Collections.IDictionary Data { get; set; }
        public System.Exception InnerException { get; set; }
        public System.Reflection.MethodBase TargetSite { get; set; }
        public System.String StackTrace { get; set; }
        public System.String HelpLink { get; set; }
        public System.String Source { get; set; }
        public System.Int32 HResult { get; set; }
 
    }
 
    public class ADServerDownException : System.Exception
    {
        // Constructor
        public ADServerDownException() { }
        public ADServerDownException(System.String message) { }
        public ADServerDownException(System.String message, System.Exception innerException) { }
        public ADServerDownException(System.String message, System.Int32 errorCode) { }
        public ADServerDownException(System.String message, System.String serverName) { }
        public ADServerDownException(System.String message, System.String serverName, System.Int32 errorCode) { }
        public ADServerDownException(System.String message, System.Exception innerException, System.String serverName) { }
        public ADServerDownException(System.String message, System.Exception innerException, System.String serverName, System.Int32 errorCode) { }
 
        // Property
        public System.Int32 ErrorCode { get; set; }
        public System.String ServerName { get; set; }
        public System.String Message { get; set; }
        public System.Collections.IDictionary Data { get; set; }
        public System.Exception InnerException { get; set; }
        public System.Reflection.MethodBase TargetSite { get; set; }
        public System.String StackTrace { get; set; }
        public System.String HelpLink { get; set; }
        public System.String Source { get; set; }
        public System.Int32 HResult { get; set; }
 
    }
}
 
namespace Microsoft.ActiveDirectory.Management.Commands
{
    public enum ADCurrentDomainType : int
    {
        LocalComputer = 0,
        LoggedOnUser = 1,
    }
 
    public enum ADCurrentForestType : int
    {
        LocalComputer = 0,
        LoggedOnUser = 1,
    }
 
    public enum ADDiscoverableService : int
    {
        PrimaryDC = 1,
        GlobalCatalog = 2,
        KDC = 3,
        TimeService = 4,
        ReliableTimeService = 5,
        ADWS = 6,
    }
 
    public enum ADMinimumDirectoryServiceVersion : int
    {
        Windows2000 = 1,
        Windows2008 = 2,
        Windows2012 = 3,
        Windows2012R2 = 4,
    }
 
    public enum ADPartnerType : int
    {
        Inbound = 1,
        Outbound = 2,
        Both = 3,
    }
 
    public enum ADScopeType : int
    {
        Server = 0,
        Domain = 1,
        Forest = 2,
        Site = 3,
    }
 
}
 
'@


function Add-ADCentralAccessPolicyMember {
    <#
    .SYNOPSIS
        Add-ADCentralAccessPolicyMember [-Identity] <ADCentralAccessPolicy> [-Members] <ADCentralAccessRule[]> [-WhatIf] [-Confirm] [-AuthType <ADAuthType>] [-Credential <pscredential>] [-PassThru] [-Server <string>] [<CommonParameters>]
    #>


    [CmdletBinding(SupportsShouldProcess=$true, ConfirmImpact='Medium', HelpUri='http://go.microsoft.com/fwlink/?LinkId=216340')]
    param ( )

    dynamicparam {
        $parameters = New-Object System.Management.Automation.RuntimeDefinedParameterDictionary

        # AuthType
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("AuthType", [System.Object], $attributes)
        $parameters.Add("AuthType", $parameter)

        # Credential
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.CredentialAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Credential", [System.Management.Automation.PSCredential], $attributes)
        $parameters.Add("Credential", $parameter)

        # Identity
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.Position = 0
        $attribute.Mandatory = $True
        $attribute.ValueFromPipeline = $True
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Identity", [System.Object], $attributes)
        $parameters.Add("Identity", $parameter)

        # Members
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.Position = 1
        $attribute.Mandatory = $True
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Members", [System.Object[]], $attributes)
        $parameters.Add("Members", $parameter)

        # PassThru
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ValidateNotNullAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("PassThru", [System.Management.Automation.SwitchParameter], $attributes)
        $parameters.Add("PassThru", $parameter)

        # Server
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Server", [System.String], $attributes)
        $parameters.Add("Server", $parameter)

        return $parameters
    }

    end {
        throw '{0}: StubNotImplemented' -f $MyInvocation.MyCommand
    }
}

function Add-ADComputerServiceAccount {
    <#
    .SYNOPSIS
        Add-ADComputerServiceAccount [-Identity] <ADComputer> [-ServiceAccount] <ADServiceAccount[]> [-WhatIf] [-Confirm] [-AuthType <ADAuthType>] [-Credential <pscredential>] [-Partition <string>] [-PassThru] [-Server <string>] [<CommonParameters>]
    #>


    [CmdletBinding(SupportsShouldProcess=$true, ConfirmImpact='Medium', HelpUri='http://go.microsoft.com/fwlink/?LinkId=219291')]
    param ( )

    dynamicparam {
        $parameters = New-Object System.Management.Automation.RuntimeDefinedParameterDictionary

        # AuthType
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("AuthType", [System.Object], $attributes)
        $parameters.Add("AuthType", $parameter)

        # Credential
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.CredentialAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Credential", [System.Management.Automation.PSCredential], $attributes)
        $parameters.Add("Credential", $parameter)

        # Identity
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.AliasAttribute('Computer')
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.Position = 0
        $attribute.Mandatory = $True
        $attribute.ValueFromPipeline = $True
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Identity", [System.Object], $attributes)
        $parameters.Add("Identity", $parameter)

        # Partition
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Partition", [System.String], $attributes)
        $parameters.Add("Partition", $parameter)

        # PassThru
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ValidateNotNullAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("PassThru", [System.Management.Automation.SwitchParameter], $attributes)
        $parameters.Add("PassThru", $parameter)

        # Server
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Server", [System.String], $attributes)
        $parameters.Add("Server", $parameter)

        # ServiceAccount
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.Position = 1
        $attribute.Mandatory = $True
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("ServiceAccount", [System.Object[]], $attributes)
        $parameters.Add("ServiceAccount", $parameter)

        return $parameters
    }

    end {
        throw '{0}: StubNotImplemented' -f $MyInvocation.MyCommand
    }
}

function Add-ADDomainControllerPasswordReplicationPolicy {
    <#
    .SYNOPSIS
        Add-ADDomainControllerPasswordReplicationPolicy [[-Identity] <ADDomainController>] -AllowedList <ADPrincipal[]> [-WhatIf] [-Confirm] [-AuthType <ADAuthType>] [-Credential <pscredential>] [-Server <string>] [<CommonParameters>]
 
Add-ADDomainControllerPasswordReplicationPolicy [[-Identity] <ADDomainController>] -DeniedList <ADPrincipal[]> [-WhatIf] [-Confirm] [-AuthType <ADAuthType>] [-Credential <pscredential>] [-Server <string>] [<CommonParameters>]
    #>


    [CmdletBinding(SupportsShouldProcess=$true, ConfirmImpact='Medium', HelpUri='http://go.microsoft.com/fwlink/?LinkId=219290')]
    param ( )

    dynamicparam {
        $parameters = New-Object System.Management.Automation.RuntimeDefinedParameterDictionary

        # AllowedList
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ValidateNotNullAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "AllowedPRP"
        $attribute.Mandatory = $True
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateCountAttribute(1, 2147483647)
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("AllowedList", [System.Object[]], $attributes)
        $parameters.Add("AllowedList", $parameter)

        # AuthType
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("AuthType", [System.Object], $attributes)
        $parameters.Add("AuthType", $parameter)

        # Credential
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.CredentialAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Credential", [System.Management.Automation.PSCredential], $attributes)
        $parameters.Add("Credential", $parameter)

        # DeniedList
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ValidateNotNullAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "DeniedPRP"
        $attribute.Mandatory = $True
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateCountAttribute(1, 2147483647)
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("DeniedList", [System.Object[]], $attributes)
        $parameters.Add("DeniedList", $parameter)

        # Identity
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ValidateNotNullAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.Position = 0
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Identity", [System.Object], $attributes)
        $parameters.Add("Identity", $parameter)

        # Server
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Server", [System.String], $attributes)
        $parameters.Add("Server", $parameter)

        return $parameters
    }

    end {
        throw '{0}: StubNotImplemented' -f $MyInvocation.MyCommand
    }
}

function Add-ADFineGrainedPasswordPolicySubject {
    <#
    .SYNOPSIS
        Add-ADFineGrainedPasswordPolicySubject [-Identity] <ADFineGrainedPasswordPolicy> [-Subjects] <ADPrincipal[]> [-WhatIf] [-Confirm] [-AuthType <ADAuthType>] [-Credential <pscredential>] [-Partition <string>] [-PassThru] [-Server <string>] [<CommonParameters>]
    #>


    [CmdletBinding(SupportsShouldProcess=$true, ConfirmImpact='Medium', HelpUri='http://go.microsoft.com/fwlink/?LinkId=219289')]
    param ( )

    dynamicparam {
        $parameters = New-Object System.Management.Automation.RuntimeDefinedParameterDictionary

        # AuthType
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("AuthType", [System.Object], $attributes)
        $parameters.Add("AuthType", $parameter)

        # Credential
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.CredentialAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Credential", [System.Management.Automation.PSCredential], $attributes)
        $parameters.Add("Credential", $parameter)

        # Identity
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.Position = 0
        $attribute.Mandatory = $True
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Identity", [System.Object], $attributes)
        $parameters.Add("Identity", $parameter)

        # Partition
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Partition", [System.String], $attributes)
        $parameters.Add("Partition", $parameter)

        # PassThru
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("PassThru", [System.Management.Automation.SwitchParameter], $attributes)
        $parameters.Add("PassThru", $parameter)

        # Server
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Server", [System.String], $attributes)
        $parameters.Add("Server", $parameter)

        # Subjects
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.Position = 1
        $attribute.Mandatory = $True
        $attribute.ValueFromPipeline = $True
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Subjects", [System.Object[]], $attributes)
        $parameters.Add("Subjects", $parameter)

        return $parameters
    }

    end {
        throw '{0}: StubNotImplemented' -f $MyInvocation.MyCommand
    }
}

function Add-ADGroupMember {
    <#
    .SYNOPSIS
        Add-ADGroupMember [-Identity] <ADGroup> [-Members] <ADPrincipal[]> [-WhatIf] [-Confirm] [-AuthType <ADAuthType>] [-Credential <pscredential>] [-MemberTimeToLive <timespan>] [-Partition <string>] [-PassThru] [-Server <string>] [<CommonParameters>]
    #>


    [CmdletBinding(SupportsShouldProcess=$true, ConfirmImpact='Medium', HelpUri='http://go.microsoft.com/fwlink/?LinkId=219287')]
    param ( )

    dynamicparam {
        $parameters = New-Object System.Management.Automation.RuntimeDefinedParameterDictionary

        # AuthType
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("AuthType", [System.Object], $attributes)
        $parameters.Add("AuthType", $parameter)

        # Credential
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.CredentialAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Credential", [System.Management.Automation.PSCredential], $attributes)
        $parameters.Add("Credential", $parameter)

        # Identity
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.Position = 0
        $attribute.Mandatory = $True
        $attribute.ValueFromPipeline = $True
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Identity", [System.Object], $attributes)
        $parameters.Add("Identity", $parameter)

        # Members
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.Position = 1
        $attribute.Mandatory = $True
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Members", [System.Object[]], $attributes)
        $parameters.Add("Members", $parameter)

        # MemberTimeToLive
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("MemberTimeToLive", [System.Nullable`1[System.TimeSpan]], $attributes)
        $parameters.Add("MemberTimeToLive", $parameter)

        # Partition
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Partition", [System.String], $attributes)
        $parameters.Add("Partition", $parameter)

        # PassThru
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ValidateNotNullAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("PassThru", [System.Management.Automation.SwitchParameter], $attributes)
        $parameters.Add("PassThru", $parameter)

        # Server
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Server", [System.String], $attributes)
        $parameters.Add("Server", $parameter)

        return $parameters
    }

    end {
        throw '{0}: StubNotImplemented' -f $MyInvocation.MyCommand
    }
}

function Add-ADPrincipalGroupMembership {
    <#
    .SYNOPSIS
        Add-ADPrincipalGroupMembership [-Identity] <ADPrincipal> [-MemberOf] <ADGroup[]> [-WhatIf] [-Confirm] [-AuthType <ADAuthType>] [-Credential <pscredential>] [-Partition <string>] [-PassThru] [-Server <string>] [<CommonParameters>]
    #>


    [CmdletBinding(SupportsShouldProcess=$true, ConfirmImpact='Medium', HelpUri='http://go.microsoft.com/fwlink/?LinkId=219288')]
    param ( )

    dynamicparam {
        $parameters = New-Object System.Management.Automation.RuntimeDefinedParameterDictionary

        # AuthType
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("AuthType", [System.Object], $attributes)
        $parameters.Add("AuthType", $parameter)

        # Credential
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.CredentialAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Credential", [System.Management.Automation.PSCredential], $attributes)
        $parameters.Add("Credential", $parameter)

        # Identity
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.Position = 0
        $attribute.Mandatory = $True
        $attribute.ValueFromPipeline = $True
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Identity", [System.Object], $attributes)
        $parameters.Add("Identity", $parameter)

        # MemberOf
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.Position = 1
        $attribute.Mandatory = $True
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("MemberOf", [System.Object[]], $attributes)
        $parameters.Add("MemberOf", $parameter)

        # Partition
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Partition", [System.String], $attributes)
        $parameters.Add("Partition", $parameter)

        # PassThru
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("PassThru", [System.Management.Automation.SwitchParameter], $attributes)
        $parameters.Add("PassThru", $parameter)

        # Server
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Server", [System.String], $attributes)
        $parameters.Add("Server", $parameter)

        return $parameters
    }

    end {
        throw '{0}: StubNotImplemented' -f $MyInvocation.MyCommand
    }
}

function Add-ADResourcePropertyListMember {
    <#
    .SYNOPSIS
        Add-ADResourcePropertyListMember [-Identity] <ADResourcePropertyList> [-Members] <ADResourceProperty[]> [-WhatIf] [-Confirm] [-AuthType <ADAuthType>] [-Credential <pscredential>] [-PassThru] [-Server <string>] [<CommonParameters>]
    #>


    [CmdletBinding(SupportsShouldProcess=$true, ConfirmImpact='Medium', HelpUri='http://go.microsoft.com/fwlink/?LinkId=216341')]
    param ( )

    dynamicparam {
        $parameters = New-Object System.Management.Automation.RuntimeDefinedParameterDictionary

        # AuthType
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("AuthType", [System.Object], $attributes)
        $parameters.Add("AuthType", $parameter)

        # Credential
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.CredentialAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Credential", [System.Management.Automation.PSCredential], $attributes)
        $parameters.Add("Credential", $parameter)

        # Identity
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ValidateNotNullAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.Position = 0
        $attribute.Mandatory = $True
        $attribute.ValueFromPipeline = $True
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Identity", [System.Object], $attributes)
        $parameters.Add("Identity", $parameter)

        # Members
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.Position = 1
        $attribute.Mandatory = $True
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Members", [System.Object[]], $attributes)
        $parameters.Add("Members", $parameter)

        # PassThru
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("PassThru", [System.Management.Automation.SwitchParameter], $attributes)
        $parameters.Add("PassThru", $parameter)

        # Server
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Server", [System.String], $attributes)
        $parameters.Add("Server", $parameter)

        return $parameters
    }

    end {
        throw '{0}: StubNotImplemented' -f $MyInvocation.MyCommand
    }
}

function Clear-ADAccountExpiration {
    <#
    .SYNOPSIS
        Clear-ADAccountExpiration [-Identity] <ADAccount> [-WhatIf] [-Confirm] [-AuthType <ADAuthType>] [-Credential <pscredential>] [-Partition <string>] [-PassThru] [-Server <string>] [<CommonParameters>]
    #>


    [CmdletBinding(SupportsShouldProcess=$true, ConfirmImpact='Medium', HelpUri='http://go.microsoft.com/fwlink/?LinkId=219293')]
    param ( )

    dynamicparam {
        $parameters = New-Object System.Management.Automation.RuntimeDefinedParameterDictionary

        # AuthType
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("AuthType", [System.Object], $attributes)
        $parameters.Add("AuthType", $parameter)

        # Credential
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.CredentialAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Credential", [System.Management.Automation.PSCredential], $attributes)
        $parameters.Add("Credential", $parameter)

        # Identity
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.Position = 0
        $attribute.Mandatory = $True
        $attribute.ValueFromPipeline = $True
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Identity", [System.Object], $attributes)
        $parameters.Add("Identity", $parameter)

        # Partition
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Partition", [System.String], $attributes)
        $parameters.Add("Partition", $parameter)

        # PassThru
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("PassThru", [System.Management.Automation.SwitchParameter], $attributes)
        $parameters.Add("PassThru", $parameter)

        # Server
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Server", [System.String], $attributes)
        $parameters.Add("Server", $parameter)

        return $parameters
    }

    end {
        throw '{0}: StubNotImplemented' -f $MyInvocation.MyCommand
    }
}

function Clear-ADClaimTransformLink {
    <#
    .SYNOPSIS
        Clear-ADClaimTransformLink [-Identity] <ADTrust> [-WhatIf] [-Confirm] [-AuthType <ADAuthType>] [-Credential <pscredential>] [-PassThru] [-Policy <ADClaimTransformPolicy>] [-Server <string>] [-TrustRole <ADTrustRole>] [<CommonParameters>]
    #>


    [CmdletBinding(SupportsShouldProcess=$true, ConfirmImpact='Medium', HelpUri='http://go.microsoft.com/fwlink/?LinkId=216342')]
    param ( )

    dynamicparam {
        $parameters = New-Object System.Management.Automation.RuntimeDefinedParameterDictionary

        # AuthType
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("AuthType", [System.Object], $attributes)
        $parameters.Add("AuthType", $parameter)

        # Credential
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.CredentialAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Credential", [System.Management.Automation.PSCredential], $attributes)
        $parameters.Add("Credential", $parameter)

        # Identity
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.Position = 0
        $attribute.Mandatory = $True
        $attribute.ValueFromPipeline = $True
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Identity", [System.Object], $attributes)
        $parameters.Add("Identity", $parameter)

        # PassThru
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ValidateNotNullAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("PassThru", [System.Management.Automation.SwitchParameter], $attributes)
        $parameters.Add("PassThru", $parameter)

        # Policy
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Policy", [System.Object], $attributes)
        $parameters.Add("Policy", $parameter)

        # Server
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Server", [System.String], $attributes)
        $parameters.Add("Server", $parameter)

        # TrustRole
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("TrustRole", [System.Object], $attributes)
        $parameters.Add("TrustRole", $parameter)

        return $parameters
    }

    end {
        throw '{0}: StubNotImplemented' -f $MyInvocation.MyCommand
    }
}

function Disable-ADAccount {
    <#
    .SYNOPSIS
        Disable-ADAccount [-Identity] <ADAccount> [-WhatIf] [-Confirm] [-AuthType <ADAuthType>] [-Credential <pscredential>] [-Partition <string>] [-PassThru] [-Server <string>] [<CommonParameters>]
    #>


    [CmdletBinding(SupportsShouldProcess=$true, ConfirmImpact='Medium', HelpUri='http://go.microsoft.com/fwlink/?LinkId=219294')]
    param ( )

    dynamicparam {
        $parameters = New-Object System.Management.Automation.RuntimeDefinedParameterDictionary

        # AuthType
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("AuthType", [System.Object], $attributes)
        $parameters.Add("AuthType", $parameter)

        # Credential
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.CredentialAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Credential", [System.Management.Automation.PSCredential], $attributes)
        $parameters.Add("Credential", $parameter)

        # Identity
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.Position = 0
        $attribute.Mandatory = $True
        $attribute.ValueFromPipeline = $True
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Identity", [System.Object], $attributes)
        $parameters.Add("Identity", $parameter)

        # Partition
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Partition", [System.String], $attributes)
        $parameters.Add("Partition", $parameter)

        # PassThru
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("PassThru", [System.Management.Automation.SwitchParameter], $attributes)
        $parameters.Add("PassThru", $parameter)

        # Server
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Server", [System.String], $attributes)
        $parameters.Add("Server", $parameter)

        return $parameters
    }

    end {
        throw '{0}: StubNotImplemented' -f $MyInvocation.MyCommand
    }
}

function Disable-ADOptionalFeature {
    <#
    .SYNOPSIS
        Disable-ADOptionalFeature [-Identity] <ADOptionalFeature> [-Scope] <ADOptionalFeatureScope> [-Target] <ADEntity> [-WhatIf] [-Confirm] [-AuthType <ADAuthType>] [-Credential <pscredential>] [-PassThru] [-Server <string>] [<CommonParameters>]
    #>


    [CmdletBinding(SupportsShouldProcess=$true, ConfirmImpact='High', HelpUri='http://go.microsoft.com/fwlink/?LinkId=219295')]
    param ( )

    dynamicparam {
        $parameters = New-Object System.Management.Automation.RuntimeDefinedParameterDictionary

        # AuthType
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("AuthType", [System.Object], $attributes)
        $parameters.Add("AuthType", $parameter)

        # Credential
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.CredentialAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Credential", [System.Management.Automation.PSCredential], $attributes)
        $parameters.Add("Credential", $parameter)

        # Identity
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ValidateNotNullAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.Position = 0
        $attribute.Mandatory = $True
        $attribute.ValueFromPipeline = $True
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Identity", [System.Object], $attributes)
        $parameters.Add("Identity", $parameter)

        # PassThru
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("PassThru", [System.Management.Automation.SwitchParameter], $attributes)
        $parameters.Add("PassThru", $parameter)

        # Scope
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.Position = 2
        $attribute.Mandatory = $True
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Scope", [System.Object], $attributes)
        $parameters.Add("Scope", $parameter)

        # Server
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Server", [System.String], $attributes)
        $parameters.Add("Server", $parameter)

        # Target
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.Position = 3
        $attribute.Mandatory = $True
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Target", [System.Object], $attributes)
        $parameters.Add("Target", $parameter)

        return $parameters
    }

    end {
        throw '{0}: StubNotImplemented' -f $MyInvocation.MyCommand
    }
}

function Enable-ADAccount {
    <#
    .SYNOPSIS
        Enable-ADAccount [-Identity] <ADAccount> [-WhatIf] [-Confirm] [-AuthType <ADAuthType>] [-Credential <pscredential>] [-Partition <string>] [-PassThru] [-Server <string>] [<CommonParameters>]
    #>


    [CmdletBinding(SupportsShouldProcess=$true, ConfirmImpact='Medium', HelpUri='http://go.microsoft.com/fwlink/?LinkId=219296')]
    param ( )

    dynamicparam {
        $parameters = New-Object System.Management.Automation.RuntimeDefinedParameterDictionary

        # AuthType
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("AuthType", [System.Object], $attributes)
        $parameters.Add("AuthType", $parameter)

        # Credential
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.CredentialAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Credential", [System.Management.Automation.PSCredential], $attributes)
        $parameters.Add("Credential", $parameter)

        # Identity
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.Position = 0
        $attribute.Mandatory = $True
        $attribute.ValueFromPipeline = $True
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Identity", [System.Object], $attributes)
        $parameters.Add("Identity", $parameter)

        # Partition
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Partition", [System.String], $attributes)
        $parameters.Add("Partition", $parameter)

        # PassThru
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("PassThru", [System.Management.Automation.SwitchParameter], $attributes)
        $parameters.Add("PassThru", $parameter)

        # Server
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Server", [System.String], $attributes)
        $parameters.Add("Server", $parameter)

        return $parameters
    }

    end {
        throw '{0}: StubNotImplemented' -f $MyInvocation.MyCommand
    }
}

function Enable-ADOptionalFeature {
    <#
    .SYNOPSIS
        Enable-ADOptionalFeature [-Identity] <ADOptionalFeature> [-Scope] <ADOptionalFeatureScope> [-Target] <ADEntity> [-WhatIf] [-Confirm] [-AuthType <ADAuthType>] [-Credential <pscredential>] [-PassThru] [-Server <string>] [<CommonParameters>]
    #>


    [CmdletBinding(SupportsShouldProcess=$true, ConfirmImpact='High', HelpUri='http://go.microsoft.com/fwlink/?LinkId=219297')]
    param ( )

    dynamicparam {
        $parameters = New-Object System.Management.Automation.RuntimeDefinedParameterDictionary

        # AuthType
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("AuthType", [System.Object], $attributes)
        $parameters.Add("AuthType", $parameter)

        # Credential
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.CredentialAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Credential", [System.Management.Automation.PSCredential], $attributes)
        $parameters.Add("Credential", $parameter)

        # Identity
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.Position = 0
        $attribute.Mandatory = $True
        $attribute.ValueFromPipeline = $True
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Identity", [System.Object], $attributes)
        $parameters.Add("Identity", $parameter)

        # PassThru
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("PassThru", [System.Management.Automation.SwitchParameter], $attributes)
        $parameters.Add("PassThru", $parameter)

        # Scope
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.Position = 2
        $attribute.Mandatory = $True
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Scope", [System.Object], $attributes)
        $parameters.Add("Scope", $parameter)

        # Server
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Server", [System.String], $attributes)
        $parameters.Add("Server", $parameter)

        # Target
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.Position = 3
        $attribute.Mandatory = $True
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Target", [System.Object], $attributes)
        $parameters.Add("Target", $parameter)

        return $parameters
    }

    end {
        throw '{0}: StubNotImplemented' -f $MyInvocation.MyCommand
    }
}

function Get-ADAccountAuthorizationGroup {
    <#
    .SYNOPSIS
        Get-ADAccountAuthorizationGroup [-Identity] <ADAccount> [-AuthType <ADAuthType>] [-Credential <pscredential>] [-Partition <string>] [-Server <string>] [<CommonParameters>]
    #>


    [CmdletBinding(DefaultParameterSetName='Identity', HelpUri='http://go.microsoft.com/fwlink/?LinkId=219317')]
    param ( )

    dynamicparam {
        $parameters = New-Object System.Management.Automation.RuntimeDefinedParameterDictionary

        # AuthType
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("AuthType", [System.Object], $attributes)
        $parameters.Add("AuthType", $parameter)

        # Credential
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.CredentialAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Credential", [System.Management.Automation.PSCredential], $attributes)
        $parameters.Add("Credential", $parameter)

        # Identity
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.Position = 0
        $attribute.Mandatory = $True
        $attribute.ValueFromPipeline = $True
        $attribute.HelpMessageBaseName = "Microsoft.ActiveDirectory.Management"
        $attribute.HelpMessageResourceId = "ADAccountAuthGroupIdentityHM"
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Identity", [System.Object], $attributes)
        $parameters.Add("Identity", $parameter)

        # Partition
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Partition", [System.String], $attributes)
        $parameters.Add("Partition", $parameter)

        # Server
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Server", [System.String], $attributes)
        $parameters.Add("Server", $parameter)

        return $parameters
    }

    end {
        throw '{0}: StubNotImplemented' -f $MyInvocation.MyCommand
    }
}

function Get-ADAccountResultantPasswordReplicationPolicy {
    <#
    .SYNOPSIS
        Get-ADAccountResultantPasswordReplicationPolicy [-Identity] <ADAccount> [-DomainController] <ADDomainController> [-AuthType <ADAuthType>] [-Credential <pscredential>] [-Partition <string>] [-Server <string>] [<CommonParameters>]
    #>


    [CmdletBinding(HelpUri='http://go.microsoft.com/fwlink/?LinkId=219312')]
    param ( )

    dynamicparam {
        $parameters = New-Object System.Management.Automation.RuntimeDefinedParameterDictionary

        # AuthType
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("AuthType", [System.Object], $attributes)
        $parameters.Add("AuthType", $parameter)

        # Credential
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.CredentialAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Credential", [System.Management.Automation.PSCredential], $attributes)
        $parameters.Add("Credential", $parameter)

        # DomainController
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.Position = 1
        $attribute.Mandatory = $True
        $attribute.HelpMessageBaseName = "Microsoft.ActiveDirectory.Management"
        $attribute.HelpMessageResourceId = "ADAccountRPRPDomainControllerHM"
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("DomainController", [System.Object], $attributes)
        $parameters.Add("DomainController", $parameter)

        # Identity
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.Position = 0
        $attribute.Mandatory = $True
        $attribute.ValueFromPipeline = $True
        $attribute.HelpMessageBaseName = "Microsoft.ActiveDirectory.Management"
        $attribute.HelpMessageResourceId = "ADAccountRPRPIdentityHM"
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Identity", [System.Object], $attributes)
        $parameters.Add("Identity", $parameter)

        # Partition
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ValidateNotNullAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Partition", [System.String], $attributes)
        $parameters.Add("Partition", $parameter)

        # Server
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Server", [System.String], $attributes)
        $parameters.Add("Server", $parameter)

        return $parameters
    }

    end {
        throw '{0}: StubNotImplemented' -f $MyInvocation.MyCommand
    }
}

function Get-ADAuthenticationPolicy {
    <#
    .SYNOPSIS
        Get-ADAuthenticationPolicy -Filter <string> [-AuthType <ADAuthType>] [-Credential <pscredential>] [-Properties <string[]>] [-ResultPageSize <int>] [-ResultSetSize <int>] [-Server <string>] [<CommonParameters>]
 
Get-ADAuthenticationPolicy [-Identity] <ADAuthenticationPolicy> [-AuthType <ADAuthType>] [-Credential <pscredential>] [-Properties <string[]>] [-Server <string>] [<CommonParameters>]
 
Get-ADAuthenticationPolicy -LDAPFilter <string> [-AuthType <ADAuthType>] [-Credential <pscredential>] [-Properties <string[]>] [-ResultPageSize <int>] [-ResultSetSize <int>] [-Server <string>] [<CommonParameters>]
    #>


    [CmdletBinding(DefaultParameterSetName='Filter', HelpUri='http://go.microsoft.com/fwlink/?LinkId=301405')]
    param ( )

    dynamicparam {
        $parameters = New-Object System.Management.Automation.RuntimeDefinedParameterDictionary

        # AuthType
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("AuthType", [System.Object], $attributes)
        $parameters.Add("AuthType", $parameter)

        # Credential
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.CredentialAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Credential", [System.Management.Automation.PSCredential], $attributes)
        $parameters.Add("Credential", $parameter)

        # Filter
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Filter"
        $attribute.Mandatory = $True
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Filter", [System.String], $attributes)
        $parameters.Add("Filter", $parameter)

        # Identity
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.Position = 0
        $attribute.ParameterSetName = "Identity"
        $attribute.Mandatory = $True
        $attribute.ValueFromPipeline = $True
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Identity", [System.Object], $attributes)
        $parameters.Add("Identity", $parameter)

        # LDAPFilter
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "LdapFilter"
        $attribute.Mandatory = $True
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("LDAPFilter", [System.String], $attributes)
        $parameters.Add("LDAPFilter", $parameter)

        # Properties
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.AliasAttribute('Property')
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Properties", [System.String[]], $attributes)
        $parameters.Add("Properties", $parameter)

        # ResultPageSize
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "LdapFilter"
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Filter"
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateRangeAttribute(0, 2147483647)
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("ResultPageSize", [System.Int32], $attributes)
        $parameters.Add("ResultPageSize", $parameter)

        # ResultSetSize
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "LdapFilter"
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Filter"
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("ResultSetSize", [System.Nullable`1[System.Int32]], $attributes)
        $parameters.Add("ResultSetSize", $parameter)

        # Server
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Server", [System.String], $attributes)
        $parameters.Add("Server", $parameter)

        return $parameters
    }

    end {
        throw '{0}: StubNotImplemented' -f $MyInvocation.MyCommand
    }
}

function Get-ADAuthenticationPolicySilo {
    <#
    .SYNOPSIS
        Get-ADAuthenticationPolicySilo -Filter <string> [-AuthType <ADAuthType>] [-Credential <pscredential>] [-Properties <string[]>] [-ResultPageSize <int>] [-ResultSetSize <int>] [-Server <string>] [<CommonParameters>]
 
Get-ADAuthenticationPolicySilo [-Identity] <ADAuthenticationPolicySilo> [-AuthType <ADAuthType>] [-Credential <pscredential>] [-Properties <string[]>] [-Server <string>] [<CommonParameters>]
 
Get-ADAuthenticationPolicySilo -LDAPFilter <string> [-AuthType <ADAuthType>] [-Credential <pscredential>] [-Properties <string[]>] [-ResultPageSize <int>] [-ResultSetSize <int>] [-Server <string>] [<CommonParameters>]
    #>


    [CmdletBinding(DefaultParameterSetName='Filter', HelpUri='http://go.microsoft.com/fwlink/?LinkId=301410')]
    param ( )

    dynamicparam {
        $parameters = New-Object System.Management.Automation.RuntimeDefinedParameterDictionary

        # AuthType
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("AuthType", [System.Object], $attributes)
        $parameters.Add("AuthType", $parameter)

        # Credential
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.CredentialAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Credential", [System.Management.Automation.PSCredential], $attributes)
        $parameters.Add("Credential", $parameter)

        # Filter
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Filter"
        $attribute.Mandatory = $True
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Filter", [System.String], $attributes)
        $parameters.Add("Filter", $parameter)

        # Identity
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ValidateNotNullAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.Position = 0
        $attribute.ParameterSetName = "Identity"
        $attribute.Mandatory = $True
        $attribute.ValueFromPipeline = $True
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Identity", [System.Object], $attributes)
        $parameters.Add("Identity", $parameter)

        # LDAPFilter
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "LdapFilter"
        $attribute.Mandatory = $True
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("LDAPFilter", [System.String], $attributes)
        $parameters.Add("LDAPFilter", $parameter)

        # Properties
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.AliasAttribute('Property')
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Properties", [System.String[]], $attributes)
        $parameters.Add("Properties", $parameter)

        # ResultPageSize
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "LdapFilter"
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Filter"
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateRangeAttribute(0, 2147483647)
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("ResultPageSize", [System.Int32], $attributes)
        $parameters.Add("ResultPageSize", $parameter)

        # ResultSetSize
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "LdapFilter"
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Filter"
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("ResultSetSize", [System.Nullable`1[System.Int32]], $attributes)
        $parameters.Add("ResultSetSize", $parameter)

        # Server
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Server", [System.String], $attributes)
        $parameters.Add("Server", $parameter)

        return $parameters
    }

    end {
        throw '{0}: StubNotImplemented' -f $MyInvocation.MyCommand
    }
}

function Get-ADCentralAccessPolicy {
    <#
    .SYNOPSIS
        Get-ADCentralAccessPolicy -Filter <string> [-AuthType <ADAuthType>] [-Credential <pscredential>] [-Properties <string[]>] [-ResultPageSize <int>] [-ResultSetSize <int>] [-Server <string>] [<CommonParameters>]
 
Get-ADCentralAccessPolicy [-Identity] <ADCentralAccessPolicy> [-AuthType <ADAuthType>] [-Credential <pscredential>] [-Properties <string[]>] [-Server <string>] [<CommonParameters>]
 
Get-ADCentralAccessPolicy -LDAPFilter <string> [-AuthType <ADAuthType>] [-Credential <pscredential>] [-Properties <string[]>] [-ResultPageSize <int>] [-ResultSetSize <int>] [-Server <string>] [<CommonParameters>]
    #>


    [CmdletBinding(DefaultParameterSetName='Filter', HelpUri='http://go.microsoft.com/fwlink/?LinkId=216345')]
    param ( )

    dynamicparam {
        $parameters = New-Object System.Management.Automation.RuntimeDefinedParameterDictionary

        # AuthType
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("AuthType", [System.Object], $attributes)
        $parameters.Add("AuthType", $parameter)

        # Credential
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.CredentialAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Credential", [System.Management.Automation.PSCredential], $attributes)
        $parameters.Add("Credential", $parameter)

        # Filter
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Filter"
        $attribute.Mandatory = $True
        $attribute.HelpMessageBaseName = "Microsoft.ActiveDirectory.Management"
        $attribute.HelpMessageResourceId = "ADUserFilterHM"
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Filter", [System.String], $attributes)
        $parameters.Add("Filter", $parameter)

        # Identity
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ValidateNotNullAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.Position = 0
        $attribute.ParameterSetName = "Identity"
        $attribute.Mandatory = $True
        $attribute.ValueFromPipeline = $True
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Identity", [System.Object], $attributes)
        $parameters.Add("Identity", $parameter)

        # LDAPFilter
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "LdapFilter"
        $attribute.Mandatory = $True
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("LDAPFilter", [System.String], $attributes)
        $parameters.Add("LDAPFilter", $parameter)

        # Properties
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.AliasAttribute('Property')
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Properties", [System.String[]], $attributes)
        $parameters.Add("Properties", $parameter)

        # ResultPageSize
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Filter"
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "LdapFilter"
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateRangeAttribute(0, 2147483647)
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("ResultPageSize", [System.Int32], $attributes)
        $parameters.Add("ResultPageSize", $parameter)

        # ResultSetSize
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Filter"
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "LdapFilter"
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("ResultSetSize", [System.Nullable`1[System.Int32]], $attributes)
        $parameters.Add("ResultSetSize", $parameter)

        # Server
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Server", [System.String], $attributes)
        $parameters.Add("Server", $parameter)

        return $parameters
    }

    end {
        throw '{0}: StubNotImplemented' -f $MyInvocation.MyCommand
    }
}

function Get-ADCentralAccessRule {
    <#
    .SYNOPSIS
        Get-ADCentralAccessRule -Filter <string> [-AuthType <ADAuthType>] [-Credential <pscredential>] [-Properties <string[]>] [-ResultPageSize <int>] [-ResultSetSize <int>] [-Server <string>] [<CommonParameters>]
 
Get-ADCentralAccessRule [-Identity] <ADCentralAccessRule> [-AuthType <ADAuthType>] [-Credential <pscredential>] [-Properties <string[]>] [-Server <string>] [<CommonParameters>]
 
Get-ADCentralAccessRule -LDAPFilter <string> [-AuthType <ADAuthType>] [-Credential <pscredential>] [-Properties <string[]>] [-ResultPageSize <int>] [-ResultSetSize <int>] [-Server <string>] [<CommonParameters>]
    #>


    [CmdletBinding(DefaultParameterSetName='Filter', HelpUri='http://go.microsoft.com/fwlink/?LinkId=216346')]
    param ( )

    dynamicparam {
        $parameters = New-Object System.Management.Automation.RuntimeDefinedParameterDictionary

        # AuthType
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("AuthType", [System.Object], $attributes)
        $parameters.Add("AuthType", $parameter)

        # Credential
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.CredentialAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Credential", [System.Management.Automation.PSCredential], $attributes)
        $parameters.Add("Credential", $parameter)

        # Filter
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Filter"
        $attribute.Mandatory = $True
        $attribute.HelpMessageBaseName = "Microsoft.ActiveDirectory.Management"
        $attribute.HelpMessageResourceId = "ADUserFilterHM"
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Filter", [System.String], $attributes)
        $parameters.Add("Filter", $parameter)

        # Identity
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ValidateNotNullAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.Position = 0
        $attribute.ParameterSetName = "Identity"
        $attribute.Mandatory = $True
        $attribute.ValueFromPipeline = $True
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Identity", [System.Object], $attributes)
        $parameters.Add("Identity", $parameter)

        # LDAPFilter
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "LdapFilter"
        $attribute.Mandatory = $True
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("LDAPFilter", [System.String], $attributes)
        $parameters.Add("LDAPFilter", $parameter)

        # Properties
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.AliasAttribute('Property')
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Properties", [System.String[]], $attributes)
        $parameters.Add("Properties", $parameter)

        # ResultPageSize
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Filter"
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "LdapFilter"
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateRangeAttribute(0, 2147483647)
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("ResultPageSize", [System.Int32], $attributes)
        $parameters.Add("ResultPageSize", $parameter)

        # ResultSetSize
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "LdapFilter"
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Filter"
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("ResultSetSize", [System.Nullable`1[System.Int32]], $attributes)
        $parameters.Add("ResultSetSize", $parameter)

        # Server
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Server", [System.String], $attributes)
        $parameters.Add("Server", $parameter)

        return $parameters
    }

    end {
        throw '{0}: StubNotImplemented' -f $MyInvocation.MyCommand
    }
}

function Get-ADClaimTransformPolicy {
    <#
    .SYNOPSIS
        Get-ADClaimTransformPolicy -Filter <string> [-AuthType <ADAuthType>] [-Credential <pscredential>] [-Properties <string[]>] [-Server <string>] [<CommonParameters>]
 
Get-ADClaimTransformPolicy [[-Identity] <ADClaimTransformPolicy>] [-AuthType <ADAuthType>] [-Credential <pscredential>] [-Properties <string[]>] [-Server <string>] [<CommonParameters>]
 
Get-ADClaimTransformPolicy -LDAPFilter <string> [-AuthType <ADAuthType>] [-Credential <pscredential>] [-Properties <string[]>] [-Server <string>] [<CommonParameters>]
    #>


    [CmdletBinding(DefaultParameterSetName='Filter', HelpUri='http://go.microsoft.com/fwlink/?LinkId=216347')]
    param ( )

    dynamicparam {
        $parameters = New-Object System.Management.Automation.RuntimeDefinedParameterDictionary

        # AuthType
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("AuthType", [System.Object], $attributes)
        $parameters.Add("AuthType", $parameter)

        # Credential
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.CredentialAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Credential", [System.Management.Automation.PSCredential], $attributes)
        $parameters.Add("Credential", $parameter)

        # Filter
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Filter"
        $attribute.Mandatory = $True
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Filter", [System.String], $attributes)
        $parameters.Add("Filter", $parameter)

        # Identity
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ValidateNotNullAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.Position = 0
        $attribute.ParameterSetName = "Identity"
        $attribute.ValueFromPipeline = $True
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Identity", [System.Object], $attributes)
        $parameters.Add("Identity", $parameter)

        # LDAPFilter
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "LdapFilter"
        $attribute.Mandatory = $True
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("LDAPFilter", [System.String], $attributes)
        $parameters.Add("LDAPFilter", $parameter)

        # Properties
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.AliasAttribute('Property')
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Properties", [System.String[]], $attributes)
        $parameters.Add("Properties", $parameter)

        # Server
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Server", [System.String], $attributes)
        $parameters.Add("Server", $parameter)

        return $parameters
    }

    end {
        throw '{0}: StubNotImplemented' -f $MyInvocation.MyCommand
    }
}

function Get-ADClaimType {
    <#
    .SYNOPSIS
        Get-ADClaimType -Filter <string> [-AuthType <ADAuthType>] [-Credential <pscredential>] [-Properties <string[]>] [-ResultPageSize <int>] [-ResultSetSize <int>] [-Server <string>] [<CommonParameters>]
 
Get-ADClaimType [-Identity] <ADClaimType> [-AuthType <ADAuthType>] [-Credential <pscredential>] [-Properties <string[]>] [-Server <string>] [<CommonParameters>]
 
Get-ADClaimType -LDAPFilter <string> [-AuthType <ADAuthType>] [-Credential <pscredential>] [-Properties <string[]>] [-ResultPageSize <int>] [-ResultSetSize <int>] [-Server <string>] [<CommonParameters>]
    #>


    [CmdletBinding(DefaultParameterSetName='Filter', HelpUri='http://go.microsoft.com/fwlink/?LinkId=216348')]
    param ( )

    dynamicparam {
        $parameters = New-Object System.Management.Automation.RuntimeDefinedParameterDictionary

        # AuthType
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("AuthType", [System.Object], $attributes)
        $parameters.Add("AuthType", $parameter)

        # Credential
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.CredentialAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Credential", [System.Management.Automation.PSCredential], $attributes)
        $parameters.Add("Credential", $parameter)

        # Filter
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Filter"
        $attribute.Mandatory = $True
        $attribute.HelpMessageBaseName = "Microsoft.ActiveDirectory.Management"
        $attribute.HelpMessageResourceId = "ADUserFilterHM"
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Filter", [System.String], $attributes)
        $parameters.Add("Filter", $parameter)

        # Identity
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.Position = 0
        $attribute.ParameterSetName = "Identity"
        $attribute.Mandatory = $True
        $attribute.ValueFromPipeline = $True
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Identity", [System.Object], $attributes)
        $parameters.Add("Identity", $parameter)

        # LDAPFilter
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "LdapFilter"
        $attribute.Mandatory = $True
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("LDAPFilter", [System.String], $attributes)
        $parameters.Add("LDAPFilter", $parameter)

        # Properties
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.AliasAttribute('Property')
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Properties", [System.String[]], $attributes)
        $parameters.Add("Properties", $parameter)

        # ResultPageSize
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Filter"
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "LdapFilter"
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateRangeAttribute(0, 2147483647)
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("ResultPageSize", [System.Int32], $attributes)
        $parameters.Add("ResultPageSize", $parameter)

        # ResultSetSize
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Filter"
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "LdapFilter"
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("ResultSetSize", [System.Nullable`1[System.Int32]], $attributes)
        $parameters.Add("ResultSetSize", $parameter)

        # Server
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Server", [System.String], $attributes)
        $parameters.Add("Server", $parameter)

        return $parameters
    }

    end {
        throw '{0}: StubNotImplemented' -f $MyInvocation.MyCommand
    }
}

function Get-ADComputer {
    <#
    .SYNOPSIS
        Get-ADComputer -Filter <string> [-AuthType <ADAuthType>] [-Credential <pscredential>] [-Properties <string[]>] [-ResultPageSize <int>] [-ResultSetSize <int>] [-SearchBase <string>] [-SearchScope <ADSearchScope>] [-Server <string>] [<CommonParameters>]
 
Get-ADComputer [-Identity] <ADComputer> [-AuthType <ADAuthType>] [-Credential <pscredential>] [-Partition <string>] [-Properties <string[]>] [-Server <string>] [<CommonParameters>]
 
Get-ADComputer -LDAPFilter <string> [-AuthType <ADAuthType>] [-Credential <pscredential>] [-Properties <string[]>] [-ResultPageSize <int>] [-ResultSetSize <int>] [-SearchBase <string>] [-SearchScope <ADSearchScope>] [-Server <string>] [<CommonParameters>]
    #>


    [CmdletBinding(DefaultParameterSetName='Filter', HelpUri='http://go.microsoft.com/fwlink/?LinkId=301396')]
    param ( )

    dynamicparam {
        $parameters = New-Object System.Management.Automation.RuntimeDefinedParameterDictionary

        # AuthType
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("AuthType", [System.Object], $attributes)
        $parameters.Add("AuthType", $parameter)

        # Credential
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.CredentialAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Credential", [System.Management.Automation.PSCredential], $attributes)
        $parameters.Add("Credential", $parameter)

        # Filter
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Filter"
        $attribute.Mandatory = $True
        $attribute.HelpMessageBaseName = "Microsoft.ActiveDirectory.Management"
        $attribute.HelpMessageResourceId = "ADComputerFilterHM"
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Filter", [System.String], $attributes)
        $parameters.Add("Filter", $parameter)

        # Identity
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.Position = 0
        $attribute.ParameterSetName = "Identity"
        $attribute.Mandatory = $True
        $attribute.ValueFromPipeline = $True
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Identity", [System.Object], $attributes)
        $parameters.Add("Identity", $parameter)

        # LDAPFilter
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "LdapFilter"
        $attribute.Mandatory = $True
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("LDAPFilter", [System.String], $attributes)
        $parameters.Add("LDAPFilter", $parameter)

        # Partition
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Identity"
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Partition", [System.String], $attributes)
        $parameters.Add("Partition", $parameter)

        # Properties
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.AliasAttribute('Property')
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Properties", [System.String[]], $attributes)
        $parameters.Add("Properties", $parameter)

        # ResultPageSize
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ValidateRangeAttribute(0, 2147483647)
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Filter"
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "LdapFilter"
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("ResultPageSize", [System.Int32], $attributes)
        $parameters.Add("ResultPageSize", $parameter)

        # ResultSetSize
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Filter"
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "LdapFilter"
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("ResultSetSize", [System.Nullable`1[System.Int32]], $attributes)
        $parameters.Add("ResultSetSize", $parameter)

        # SearchBase
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ValidateNotNullAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "LdapFilter"
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Filter"
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("SearchBase", [System.String], $attributes)
        $parameters.Add("SearchBase", $parameter)

        # SearchScope
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "LdapFilter"
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Filter"
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("SearchScope", [System.Object], $attributes)
        $parameters.Add("SearchScope", $parameter)

        # Server
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Server", [System.String], $attributes)
        $parameters.Add("Server", $parameter)

        return $parameters
    }

    end {
        throw '{0}: StubNotImplemented' -f $MyInvocation.MyCommand
    }
}

function Get-ADComputerServiceAccount {
    <#
    .SYNOPSIS
        Get-ADComputerServiceAccount [-Identity] <ADComputer> [-AuthType <ADAuthType>] [-Credential <pscredential>] [-Partition <string>] [-Server <string>] [<CommonParameters>]
    #>


    [CmdletBinding(HelpUri='http://go.microsoft.com/fwlink/?LinkId=219315')]
    param ( )

    dynamicparam {
        $parameters = New-Object System.Management.Automation.RuntimeDefinedParameterDictionary

        # AuthType
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("AuthType", [System.Object], $attributes)
        $parameters.Add("AuthType", $parameter)

        # Credential
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.CredentialAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Credential", [System.Management.Automation.PSCredential], $attributes)
        $parameters.Add("Credential", $parameter)

        # Identity
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.Position = 0
        $attribute.Mandatory = $True
        $attribute.ValueFromPipeline = $True
        $attribute.HelpMessageBaseName = "Microsoft.ActiveDirectory.Management"
        $attribute.HelpMessageResourceId = "ADComputerServiceAccountIdentityHM"
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Identity", [System.Object], $attributes)
        $parameters.Add("Identity", $parameter)

        # Partition
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Partition", [System.String], $attributes)
        $parameters.Add("Partition", $parameter)

        # Server
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Server", [System.String], $attributes)
        $parameters.Add("Server", $parameter)

        return $parameters
    }

    end {
        throw '{0}: StubNotImplemented' -f $MyInvocation.MyCommand
    }
}

function Get-ADDCCloningExcludedApplicationList {
    <#
    .SYNOPSIS
        Get-ADDCCloningExcludedApplicationList [<CommonParameters>]
 
Get-ADDCCloningExcludedApplicationList -GenerateXml [-Force] [-Path <string>] [<CommonParameters>]
    #>


    [CmdletBinding(DefaultParameterSetName='Default', HelpUri='http://go.microsoft.com/fwlink/?LinkId=219594')]
    param ( )

    dynamicparam {
        $parameters = New-Object System.Management.Automation.RuntimeDefinedParameterDictionary

        # Force
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Xml"
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Force", [System.Management.Automation.SwitchParameter], $attributes)
        $parameters.Add("Force", $parameter)

        # GenerateXml
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Xml"
        $attribute.Mandatory = $True
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("GenerateXml", [System.Management.Automation.SwitchParameter], $attributes)
        $parameters.Add("GenerateXml", $parameter)

        # Path
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Xml"
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Path", [System.String], $attributes)
        $parameters.Add("Path", $parameter)

        return $parameters
    }

    end {
        throw '{0}: StubNotImplemented' -f $MyInvocation.MyCommand
    }
}

function Get-ADDefaultDomainPasswordPolicy {
    <#
    .SYNOPSIS
        Get-ADDefaultDomainPasswordPolicy [[-Current] <ADCurrentDomainType>] [-AuthType <ADAuthType>] [-Credential <pscredential>] [-Server <string>] [<CommonParameters>]
 
Get-ADDefaultDomainPasswordPolicy [-Identity] <ADDefaultDomainPasswordPolicy> [-AuthType <ADAuthType>] [-Credential <pscredential>] [-Server <string>] [<CommonParameters>]
    #>


    [CmdletBinding(DefaultParameterSetName='Current', HelpUri='http://go.microsoft.com/fwlink/?LinkId=219316')]
    param ( )

    dynamicparam {
        $parameters = New-Object System.Management.Automation.RuntimeDefinedParameterDictionary

        # AuthType
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("AuthType", [System.Object], $attributes)
        $parameters.Add("AuthType", $parameter)

        # Credential
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.CredentialAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Credential", [System.Management.Automation.PSCredential], $attributes)
        $parameters.Add("Credential", $parameter)

        # Current
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.Position = 1
        $attribute.ParameterSetName = "Current"
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Current", [System.Object], $attributes)
        $parameters.Add("Current", $parameter)

        # Identity
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.Position = 0
        $attribute.ParameterSetName = "Identity"
        $attribute.Mandatory = $True
        $attribute.ValueFromPipeline = $True
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Identity", [System.Object], $attributes)
        $parameters.Add("Identity", $parameter)

        # Server
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Server", [System.String], $attributes)
        $parameters.Add("Server", $parameter)

        return $parameters
    }

    end {
        throw '{0}: StubNotImplemented' -f $MyInvocation.MyCommand
    }
}

function Get-ADDomain {
    <#
    .SYNOPSIS
        Get-ADDomain [-AuthType <ADAuthType>] [-Credential <pscredential>] [-Current <ADCurrentDomainType>] [-Server <string>] [<CommonParameters>]
 
Get-ADDomain [-Identity] <ADDomain> [-AuthType <ADAuthType>] [-Credential <pscredential>] [-Server <string>] [<CommonParameters>]
    #>


    [CmdletBinding(DefaultParameterSetName='Current', HelpUri='http://go.microsoft.com/fwlink/?LinkId=219304')]
    param ( )

    dynamicparam {
        $parameters = New-Object System.Management.Automation.RuntimeDefinedParameterDictionary

        # AuthType
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("AuthType", [System.Object], $attributes)
        $parameters.Add("AuthType", $parameter)

        # Credential
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.CredentialAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Credential", [System.Management.Automation.PSCredential], $attributes)
        $parameters.Add("Credential", $parameter)

        # Current
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Current"
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Current", [System.Object], $attributes)
        $parameters.Add("Current", $parameter)

        # Identity
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.Position = 0
        $attribute.ParameterSetName = "Identity"
        $attribute.Mandatory = $True
        $attribute.ValueFromPipeline = $True
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Identity", [System.Object], $attributes)
        $parameters.Add("Identity", $parameter)

        # Server
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Server", [System.String], $attributes)
        $parameters.Add("Server", $parameter)

        return $parameters
    }

    end {
        throw '{0}: StubNotImplemented' -f $MyInvocation.MyCommand
    }
}

function Get-ADDomainController {
    <#
    .SYNOPSIS
        Get-ADDomainController [[-Identity] <ADDomainController>] [-AuthType <ADAuthType>] [-Credential <pscredential>] [-Server <string>] [<CommonParameters>]
 
Get-ADDomainController -Discover [-AuthType <ADAuthType>] [-AvoidSelf] [-DomainName <string>] [-ForceDiscover] [-MinimumDirectoryServiceVersion <ADMinimumDirectoryServiceVersion>] [-NextClosestSite] [-Service <ADDiscoverableService[]>] [-SiteName <string>] [-Writable] [<CommonParameters>]
 
Get-ADDomainController -Filter <string> [-AuthType <ADAuthType>] [-Credential <pscredential>] [-Server <string>] [<CommonParameters>]
    #>


    [CmdletBinding(DefaultParameterSetName='Identity', HelpUri='http://go.microsoft.com/fwlink/?LinkId=219306')]
    param ( )

    dynamicparam {
        $parameters = New-Object System.Management.Automation.RuntimeDefinedParameterDictionary

        # AuthType
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("AuthType", [System.Object], $attributes)
        $parameters.Add("AuthType", $parameter)

        # AvoidSelf
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "DiscoverByService"
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("AvoidSelf", [System.Management.Automation.SwitchParameter], $attributes)
        $parameters.Add("AvoidSelf", $parameter)

        # Credential
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Filter"
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Identity"
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.CredentialAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Credential", [System.Management.Automation.PSCredential], $attributes)
        $parameters.Add("Credential", $parameter)

        # Discover
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "DiscoverByService"
        $attribute.Mandatory = $True
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Discover", [System.Management.Automation.SwitchParameter], $attributes)
        $parameters.Add("Discover", $parameter)

        # DomainName
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "DiscoverByService"
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("DomainName", [System.String], $attributes)
        $parameters.Add("DomainName", $parameter)

        # Filter
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Filter"
        $attribute.Mandatory = $True
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Filter", [System.String], $attributes)
        $parameters.Add("Filter", $parameter)

        # ForceDiscover
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "DiscoverByService"
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("ForceDiscover", [System.Management.Automation.SwitchParameter], $attributes)
        $parameters.Add("ForceDiscover", $parameter)

        # Identity
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.Position = 0
        $attribute.ParameterSetName = "Identity"
        $attribute.ValueFromPipeline = $True
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Identity", [System.Object], $attributes)
        $parameters.Add("Identity", $parameter)

        # MinimumDirectoryServiceVersion
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "DiscoverByService"
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("MinimumDirectoryServiceVersion", [System.Object], $attributes)
        $parameters.Add("MinimumDirectoryServiceVersion", $parameter)

        # NextClosestSite
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "DiscoverByService"
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("NextClosestSite", [System.Management.Automation.SwitchParameter], $attributes)
        $parameters.Add("NextClosestSite", $parameter)

        # Server
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Identity"
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Filter"
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Server", [System.String], $attributes)
        $parameters.Add("Server", $parameter)

        # Service
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "DiscoverByService"
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Service", [System.Object[]], $attributes)
        $parameters.Add("Service", $parameter)

        # SiteName
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "DiscoverByService"
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("SiteName", [System.String], $attributes)
        $parameters.Add("SiteName", $parameter)

        # Writable
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "DiscoverByService"
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Writable", [System.Management.Automation.SwitchParameter], $attributes)
        $parameters.Add("Writable", $parameter)

        return $parameters
    }

    end {
        throw '{0}: StubNotImplemented' -f $MyInvocation.MyCommand
    }
}

function Get-ADDomainControllerPasswordReplicationPolicy {
    <#
    .SYNOPSIS
        Get-ADDomainControllerPasswordReplicationPolicy [-Identity] <ADDomainController> [-Allowed] [-AuthType <ADAuthType>] [-Credential <pscredential>] [-Server <string>] [<CommonParameters>]
 
Get-ADDomainControllerPasswordReplicationPolicy [-Identity] <ADDomainController> -Denied [-AuthType <ADAuthType>] [-Credential <pscredential>] [-Server <string>] [<CommonParameters>]
    #>


    [CmdletBinding(DefaultParameterSetName='AllowedPRP', HelpUri='http://go.microsoft.com/fwlink/?LinkId=219311')]
    param ( )

    dynamicparam {
        $parameters = New-Object System.Management.Automation.RuntimeDefinedParameterDictionary

        # Allowed
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "AllowedPRP"
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Allowed", [System.Management.Automation.SwitchParameter], $attributes)
        $parameters.Add("Allowed", $parameter)

        # AuthType
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("AuthType", [System.Object], $attributes)
        $parameters.Add("AuthType", $parameter)

        # Credential
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.CredentialAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Credential", [System.Management.Automation.PSCredential], $attributes)
        $parameters.Add("Credential", $parameter)

        # Denied
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ValidateNotNullAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "DeniedPRP"
        $attribute.Mandatory = $True
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Denied", [System.Management.Automation.SwitchParameter], $attributes)
        $parameters.Add("Denied", $parameter)

        # Identity
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.Position = 0
        $attribute.Mandatory = $True
        $attribute.ValueFromPipeline = $True
        $attribute.HelpMessageBaseName = "Microsoft.ActiveDirectory.Management"
        $attribute.HelpMessageResourceId = "ADDCPRPIdentityHM"
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Identity", [System.Object], $attributes)
        $parameters.Add("Identity", $parameter)

        # Server
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Server", [System.String], $attributes)
        $parameters.Add("Server", $parameter)

        return $parameters
    }

    end {
        throw '{0}: StubNotImplemented' -f $MyInvocation.MyCommand
    }
}

function Get-ADDomainControllerPasswordReplicationPolicyUsage {
    <#
    .SYNOPSIS
        Get-ADDomainControllerPasswordReplicationPolicyUsage [-Identity] <ADDomainController> [-AuthType <ADAuthType>] [-Credential <pscredential>] [-RevealedAccounts] [-Server <string>] [<CommonParameters>]
 
Get-ADDomainControllerPasswordReplicationPolicyUsage [-Identity] <ADDomainController> -AuthenticatedAccounts [-AuthType <ADAuthType>] [-Credential <pscredential>] [-Server <string>] [<CommonParameters>]
    #>


    [CmdletBinding(DefaultParameterSetName='RevealedAccounts', HelpUri='http://go.microsoft.com/fwlink/?LinkId=216349')]
    param ( )

    dynamicparam {
        $parameters = New-Object System.Management.Automation.RuntimeDefinedParameterDictionary

        # AuthenticatedAccounts
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "AuthenticatedAccounts"
        $attribute.Mandatory = $True
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("AuthenticatedAccounts", [System.Management.Automation.SwitchParameter], $attributes)
        $parameters.Add("AuthenticatedAccounts", $parameter)

        # AuthType
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("AuthType", [System.Object], $attributes)
        $parameters.Add("AuthType", $parameter)

        # Credential
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.CredentialAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Credential", [System.Management.Automation.PSCredential], $attributes)
        $parameters.Add("Credential", $parameter)

        # Identity
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.Position = 0
        $attribute.Mandatory = $True
        $attribute.ValueFromPipeline = $True
        $attribute.HelpMessageBaseName = "Microsoft.ActiveDirectory.Management"
        $attribute.HelpMessageResourceId = "ADDCPRPUIdentityHM"
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Identity", [System.Object], $attributes)
        $parameters.Add("Identity", $parameter)

        # RevealedAccounts
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "RevealedAccounts"
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("RevealedAccounts", [System.Management.Automation.SwitchParameter], $attributes)
        $parameters.Add("RevealedAccounts", $parameter)

        # Server
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Server", [System.String], $attributes)
        $parameters.Add("Server", $parameter)

        return $parameters
    }

    end {
        throw '{0}: StubNotImplemented' -f $MyInvocation.MyCommand
    }
}

function Get-ADFineGrainedPasswordPolicy {
    <#
    .SYNOPSIS
        Get-ADFineGrainedPasswordPolicy -Filter <string> [-AuthType <ADAuthType>] [-Credential <pscredential>] [-Properties <string[]>] [-ResultPageSize <int>] [-ResultSetSize <int>] [-SearchBase <string>] [-SearchScope <ADSearchScope>] [-Server <string>] [<CommonParameters>]
 
Get-ADFineGrainedPasswordPolicy [-Identity] <ADFineGrainedPasswordPolicy> [-AuthType <ADAuthType>] [-Credential <pscredential>] [-Properties <string[]>] [-Server <string>] [<CommonParameters>]
 
Get-ADFineGrainedPasswordPolicy -LDAPFilter <string> [-AuthType <ADAuthType>] [-Credential <pscredential>] [-Properties <string[]>] [-ResultPageSize <int>] [-ResultSetSize <int>] [-SearchBase <string>] [-SearchScope <ADSearchScope>] [-Server <string>] [<CommonParameters>]
    #>


    [CmdletBinding(DefaultParameterSetName='Filter', HelpUri='http://go.microsoft.com/fwlink/?LinkId=219303')]
    param ( )

    dynamicparam {
        $parameters = New-Object System.Management.Automation.RuntimeDefinedParameterDictionary

        # AuthType
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("AuthType", [System.Object], $attributes)
        $parameters.Add("AuthType", $parameter)

        # Credential
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.CredentialAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Credential", [System.Management.Automation.PSCredential], $attributes)
        $parameters.Add("Credential", $parameter)

        # Filter
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Filter"
        $attribute.Mandatory = $True
        $attribute.HelpMessageBaseName = "Microsoft.ActiveDirectory.Management"
        $attribute.HelpMessageResourceId = "ADFineGrainedPPFilterHM"
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Filter", [System.String], $attributes)
        $parameters.Add("Filter", $parameter)

        # Identity
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ValidateNotNullAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.Position = 0
        $attribute.ParameterSetName = "Identity"
        $attribute.Mandatory = $True
        $attribute.ValueFromPipeline = $True
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Identity", [System.Object], $attributes)
        $parameters.Add("Identity", $parameter)

        # LDAPFilter
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "LdapFilter"
        $attribute.Mandatory = $True
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("LDAPFilter", [System.String], $attributes)
        $parameters.Add("LDAPFilter", $parameter)

        # Properties
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.AliasAttribute('Property')
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Properties", [System.String[]], $attributes)
        $parameters.Add("Properties", $parameter)

        # ResultPageSize
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "LdapFilter"
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Filter"
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateRangeAttribute(0, 2147483647)
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("ResultPageSize", [System.Int32], $attributes)
        $parameters.Add("ResultPageSize", $parameter)

        # ResultSetSize
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Filter"
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "LdapFilter"
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("ResultSetSize", [System.Nullable`1[System.Int32]], $attributes)
        $parameters.Add("ResultSetSize", $parameter)

        # SearchBase
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Filter"
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "LdapFilter"
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("SearchBase", [System.String], $attributes)
        $parameters.Add("SearchBase", $parameter)

        # SearchScope
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Filter"
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "LdapFilter"
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("SearchScope", [System.Object], $attributes)
        $parameters.Add("SearchScope", $parameter)

        # Server
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Server", [System.String], $attributes)
        $parameters.Add("Server", $parameter)

        return $parameters
    }

    end {
        throw '{0}: StubNotImplemented' -f $MyInvocation.MyCommand
    }
}

function Get-ADFineGrainedPasswordPolicySubject {
    <#
    .SYNOPSIS
        Get-ADFineGrainedPasswordPolicySubject [-Identity] <ADFineGrainedPasswordPolicy> [-AuthType <ADAuthType>] [-Credential <pscredential>] [-Server <string>] [<CommonParameters>]
    #>


    [CmdletBinding(HelpUri='http://go.microsoft.com/fwlink/?LinkId=219310')]
    param ( )

    dynamicparam {
        $parameters = New-Object System.Management.Automation.RuntimeDefinedParameterDictionary

        # AuthType
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("AuthType", [System.Object], $attributes)
        $parameters.Add("AuthType", $parameter)

        # Credential
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.CredentialAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Credential", [System.Management.Automation.PSCredential], $attributes)
        $parameters.Add("Credential", $parameter)

        # Identity
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.Position = 0
        $attribute.Mandatory = $True
        $attribute.ValueFromPipeline = $True
        $attribute.HelpMessageBaseName = "Microsoft.ActiveDirectory.Management"
        $attribute.HelpMessageResourceId = "ADFGPPSubjectIdentityHM"
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Identity", [System.Object], $attributes)
        $parameters.Add("Identity", $parameter)

        # Server
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Server", [System.String], $attributes)
        $parameters.Add("Server", $parameter)

        return $parameters
    }

    end {
        throw '{0}: StubNotImplemented' -f $MyInvocation.MyCommand
    }
}

function Get-ADForest {
    <#
    .SYNOPSIS
        Get-ADForest [-AuthType <ADAuthType>] [-Credential <pscredential>] [-Current <ADCurrentForestType>] [-Server <string>] [<CommonParameters>]
 
Get-ADForest [-Identity] <ADForest> [-AuthType <ADAuthType>] [-Credential <pscredential>] [-Server <string>] [<CommonParameters>]
    #>


    [CmdletBinding(DefaultParameterSetName='Current', HelpUri='http://go.microsoft.com/fwlink/?LinkId=219305')]
    param ( )

    dynamicparam {
        $parameters = New-Object System.Management.Automation.RuntimeDefinedParameterDictionary

        # AuthType
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("AuthType", [System.Object], $attributes)
        $parameters.Add("AuthType", $parameter)

        # Credential
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.CredentialAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Credential", [System.Management.Automation.PSCredential], $attributes)
        $parameters.Add("Credential", $parameter)

        # Current
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Current"
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Current", [System.Object], $attributes)
        $parameters.Add("Current", $parameter)

        # Identity
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.Position = 0
        $attribute.ParameterSetName = "Identity"
        $attribute.Mandatory = $True
        $attribute.ValueFromPipeline = $True
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Identity", [System.Object], $attributes)
        $parameters.Add("Identity", $parameter)

        # Server
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Server", [System.String], $attributes)
        $parameters.Add("Server", $parameter)

        return $parameters
    }

    end {
        throw '{0}: StubNotImplemented' -f $MyInvocation.MyCommand
    }
}

function Get-ADGroup {
    <#
    .SYNOPSIS
        Get-ADGroup -Filter <string> [-AuthType <ADAuthType>] [-Credential <pscredential>] [-Properties <string[]>] [-ResultPageSize <int>] [-ResultSetSize <int>] [-SearchBase <string>] [-SearchScope <ADSearchScope>] [-Server <string>] [-ShowMemberTimeToLive] [<CommonParameters>]
 
Get-ADGroup [-Identity] <ADGroup> [-AuthType <ADAuthType>] [-Credential <pscredential>] [-Partition <string>] [-Properties <string[]>] [-Server <string>] [-ShowMemberTimeToLive] [<CommonParameters>]
 
Get-ADGroup -LDAPFilter <string> [-AuthType <ADAuthType>] [-Credential <pscredential>] [-Properties <string[]>] [-ResultPageSize <int>] [-ResultSetSize <int>] [-SearchBase <string>] [-SearchScope <ADSearchScope>] [-Server <string>] [-ShowMemberTimeToLive] [<CommonParameters>]
    #>


    [CmdletBinding(DefaultParameterSetName='Filter', HelpUri='http://go.microsoft.com/fwlink/?LinkId=219302')]
    param ( )

    dynamicparam {
        $parameters = New-Object System.Management.Automation.RuntimeDefinedParameterDictionary

        # AuthType
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("AuthType", [System.Object], $attributes)
        $parameters.Add("AuthType", $parameter)

        # Credential
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.CredentialAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Credential", [System.Management.Automation.PSCredential], $attributes)
        $parameters.Add("Credential", $parameter)

        # Filter
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Filter"
        $attribute.Mandatory = $True
        $attribute.HelpMessageBaseName = "Microsoft.ActiveDirectory.Management"
        $attribute.HelpMessageResourceId = "ADGroupFilterHM"
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Filter", [System.String], $attributes)
        $parameters.Add("Filter", $parameter)

        # Identity
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.Position = 0
        $attribute.ParameterSetName = "Identity"
        $attribute.Mandatory = $True
        $attribute.ValueFromPipeline = $True
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Identity", [System.Object], $attributes)
        $parameters.Add("Identity", $parameter)

        # LDAPFilter
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "LdapFilter"
        $attribute.Mandatory = $True
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("LDAPFilter", [System.String], $attributes)
        $parameters.Add("LDAPFilter", $parameter)

        # Partition
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Identity"
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Partition", [System.String], $attributes)
        $parameters.Add("Partition", $parameter)

        # Properties
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.AliasAttribute('Property')
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Properties", [System.String[]], $attributes)
        $parameters.Add("Properties", $parameter)

        # ResultPageSize
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Filter"
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "LdapFilter"
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateRangeAttribute(0, 2147483647)
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("ResultPageSize", [System.Int32], $attributes)
        $parameters.Add("ResultPageSize", $parameter)

        # ResultSetSize
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Filter"
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "LdapFilter"
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("ResultSetSize", [System.Nullable`1[System.Int32]], $attributes)
        $parameters.Add("ResultSetSize", $parameter)

        # SearchBase
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Filter"
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "LdapFilter"
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("SearchBase", [System.String], $attributes)
        $parameters.Add("SearchBase", $parameter)

        # SearchScope
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Filter"
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "LdapFilter"
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("SearchScope", [System.Object], $attributes)
        $parameters.Add("SearchScope", $parameter)

        # Server
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Server", [System.String], $attributes)
        $parameters.Add("Server", $parameter)

        # ShowMemberTimeToLive
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("ShowMemberTimeToLive", [System.Management.Automation.SwitchParameter], $attributes)
        $parameters.Add("ShowMemberTimeToLive", $parameter)

        return $parameters
    }

    end {
        throw '{0}: StubNotImplemented' -f $MyInvocation.MyCommand
    }
}

function Get-ADGroupMember {
    <#
    .SYNOPSIS
        Get-ADGroupMember [-Identity] <ADGroup> [-AuthType <ADAuthType>] [-Credential <pscredential>] [-Partition <string>] [-Recursive] [-Server <string>] [<CommonParameters>]
    #>


    [CmdletBinding(HelpUri='http://go.microsoft.com/fwlink/?LinkId=219308')]
    param ( )

    dynamicparam {
        $parameters = New-Object System.Management.Automation.RuntimeDefinedParameterDictionary

        # AuthType
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("AuthType", [System.Object], $attributes)
        $parameters.Add("AuthType", $parameter)

        # Credential
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.CredentialAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Credential", [System.Management.Automation.PSCredential], $attributes)
        $parameters.Add("Credential", $parameter)

        # Identity
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.Position = 0
        $attribute.Mandatory = $True
        $attribute.ValueFromPipeline = $True
        $attribute.HelpMessageBaseName = "Microsoft.ActiveDirectory.Management"
        $attribute.HelpMessageResourceId = "ADGroupMemberIdentityHM"
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Identity", [System.Object], $attributes)
        $parameters.Add("Identity", $parameter)

        # Partition
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ValidateNotNullAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Partition", [System.String], $attributes)
        $parameters.Add("Partition", $parameter)

        # Recursive
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Recursive", [System.Management.Automation.SwitchParameter], $attributes)
        $parameters.Add("Recursive", $parameter)

        # Server
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Server", [System.String], $attributes)
        $parameters.Add("Server", $parameter)

        return $parameters
    }

    end {
        throw '{0}: StubNotImplemented' -f $MyInvocation.MyCommand
    }
}

function Get-ADObject {
    <#
    .SYNOPSIS
        Get-ADObject -Filter <string> [-AuthType <ADAuthType>] [-Credential <pscredential>] [-IncludeDeletedObjects] [-Properties <string[]>] [-ResultPageSize <int>] [-ResultSetSize <int>] [-SearchBase <string>] [-SearchScope <ADSearchScope>] [-Server <string>] [<CommonParameters>]
 
Get-ADObject [-Identity] <ADObject> [-AuthType <ADAuthType>] [-Credential <pscredential>] [-IncludeDeletedObjects] [-Partition <string>] [-Properties <string[]>] [-Server <string>] [<CommonParameters>]
 
Get-ADObject -LDAPFilter <string> [-AuthType <ADAuthType>] [-Credential <pscredential>] [-IncludeDeletedObjects] [-Properties <string[]>] [-ResultPageSize <int>] [-ResultSetSize <int>] [-SearchBase <string>] [-SearchScope <ADSearchScope>] [-Server <string>] [<CommonParameters>]
    #>


    [CmdletBinding(DefaultParameterSetName='Filter', HelpUri='http://go.microsoft.com/fwlink/?LinkId=219298')]
    param ( )

    dynamicparam {
        $parameters = New-Object System.Management.Automation.RuntimeDefinedParameterDictionary

        # AuthType
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("AuthType", [System.Object], $attributes)
        $parameters.Add("AuthType", $parameter)

        # Credential
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.CredentialAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Credential", [System.Management.Automation.PSCredential], $attributes)
        $parameters.Add("Credential", $parameter)

        # Filter
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Filter"
        $attribute.Mandatory = $True
        $attribute.HelpMessageBaseName = "Microsoft.ActiveDirectory.Management"
        $attribute.HelpMessageResourceId = "ADObjectFilterHM"
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Filter", [System.String], $attributes)
        $parameters.Add("Filter", $parameter)

        # Identity
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ValidateNotNullAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.Position = 0
        $attribute.ParameterSetName = "Identity"
        $attribute.Mandatory = $True
        $attribute.ValueFromPipeline = $True
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Identity", [System.Object], $attributes)
        $parameters.Add("Identity", $parameter)

        # IncludeDeletedObjects
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("IncludeDeletedObjects", [System.Management.Automation.SwitchParameter], $attributes)
        $parameters.Add("IncludeDeletedObjects", $parameter)

        # LDAPFilter
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "LdapFilter"
        $attribute.Mandatory = $True
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("LDAPFilter", [System.String], $attributes)
        $parameters.Add("LDAPFilter", $parameter)

        # Partition
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Identity"
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Partition", [System.String], $attributes)
        $parameters.Add("Partition", $parameter)

        # Properties
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.AliasAttribute('Property')
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Properties", [System.String[]], $attributes)
        $parameters.Add("Properties", $parameter)

        # ResultPageSize
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "LdapFilter"
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Filter"
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateRangeAttribute(0, 2147483647)
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("ResultPageSize", [System.Int32], $attributes)
        $parameters.Add("ResultPageSize", $parameter)

        # ResultSetSize
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Filter"
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "LdapFilter"
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("ResultSetSize", [System.Nullable`1[System.Int32]], $attributes)
        $parameters.Add("ResultSetSize", $parameter)

        # SearchBase
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ValidateNotNullAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "LdapFilter"
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Filter"
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("SearchBase", [System.String], $attributes)
        $parameters.Add("SearchBase", $parameter)

        # SearchScope
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "LdapFilter"
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Filter"
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("SearchScope", [System.Object], $attributes)
        $parameters.Add("SearchScope", $parameter)

        # Server
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Server", [System.String], $attributes)
        $parameters.Add("Server", $parameter)

        return $parameters
    }

    end {
        throw '{0}: StubNotImplemented' -f $MyInvocation.MyCommand
    }
}

function Get-ADOptionalFeature {
    <#
    .SYNOPSIS
        Get-ADOptionalFeature -Filter <string> [-AuthType <ADAuthType>] [-Credential <pscredential>] [-Properties <string[]>] [-ResultPageSize <int>] [-ResultSetSize <int>] [-SearchBase <string>] [-SearchScope <ADSearchScope>] [-Server <string>] [<CommonParameters>]
 
Get-ADOptionalFeature [-Identity] <ADOptionalFeature> [-AuthType <ADAuthType>] [-Credential <pscredential>] [-Properties <string[]>] [-Server <string>] [<CommonParameters>]
 
Get-ADOptionalFeature -LDAPFilter <string> [-AuthType <ADAuthType>] [-Credential <pscredential>] [-Properties <string[]>] [-ResultPageSize <int>] [-ResultSetSize <int>] [-SearchBase <string>] [-SearchScope <ADSearchScope>] [-Server <string>] [<CommonParameters>]
    #>


    [CmdletBinding(DefaultParameterSetName='Filter', HelpUri='http://go.microsoft.com/fwlink/?LinkId=219318')]
    param ( )

    dynamicparam {
        $parameters = New-Object System.Management.Automation.RuntimeDefinedParameterDictionary

        # AuthType
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("AuthType", [System.Object], $attributes)
        $parameters.Add("AuthType", $parameter)

        # Credential
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.CredentialAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Credential", [System.Management.Automation.PSCredential], $attributes)
        $parameters.Add("Credential", $parameter)

        # Filter
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Filter"
        $attribute.Mandatory = $True
        $attribute.HelpMessageBaseName = "Microsoft.ActiveDirectory.Management"
        $attribute.HelpMessageResourceId = "ADOFFilterHM"
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Filter", [System.String], $attributes)
        $parameters.Add("Filter", $parameter)

        # Identity
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.Position = 0
        $attribute.ParameterSetName = "Identity"
        $attribute.Mandatory = $True
        $attribute.ValueFromPipeline = $True
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Identity", [System.Object], $attributes)
        $parameters.Add("Identity", $parameter)

        # LDAPFilter
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "LdapFilter"
        $attribute.Mandatory = $True
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("LDAPFilter", [System.String], $attributes)
        $parameters.Add("LDAPFilter", $parameter)

        # Properties
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.AliasAttribute('Property')
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Properties", [System.String[]], $attributes)
        $parameters.Add("Properties", $parameter)

        # ResultPageSize
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "LdapFilter"
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Filter"
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateRangeAttribute(0, 2147483647)
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("ResultPageSize", [System.Int32], $attributes)
        $parameters.Add("ResultPageSize", $parameter)

        # ResultSetSize
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Filter"
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "LdapFilter"
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("ResultSetSize", [System.Nullable`1[System.Int32]], $attributes)
        $parameters.Add("ResultSetSize", $parameter)

        # SearchBase
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "LdapFilter"
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Filter"
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("SearchBase", [System.String], $attributes)
        $parameters.Add("SearchBase", $parameter)

        # SearchScope
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Filter"
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "LdapFilter"
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("SearchScope", [System.Object], $attributes)
        $parameters.Add("SearchScope", $parameter)

        # Server
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Server", [System.String], $attributes)
        $parameters.Add("Server", $parameter)

        return $parameters
    }

    end {
        throw '{0}: StubNotImplemented' -f $MyInvocation.MyCommand
    }
}

function Get-ADOrganizationalUnit {
    <#
    .SYNOPSIS
        Get-ADOrganizationalUnit -Filter <string> [-AuthType <ADAuthType>] [-Credential <pscredential>] [-Properties <string[]>] [-ResultPageSize <int>] [-ResultSetSize <int>] [-SearchBase <string>] [-SearchScope <ADSearchScope>] [-Server <string>] [<CommonParameters>]
 
Get-ADOrganizationalUnit [-Identity] <ADOrganizationalUnit> [-AuthType <ADAuthType>] [-Credential <pscredential>] [-Partition <string>] [-Properties <string[]>] [-Server <string>] [<CommonParameters>]
 
Get-ADOrganizationalUnit -LDAPFilter <string> [-AuthType <ADAuthType>] [-Credential <pscredential>] [-Properties <string[]>] [-ResultPageSize <int>] [-ResultSetSize <int>] [-SearchBase <string>] [-SearchScope <ADSearchScope>] [-Server <string>] [<CommonParameters>]
    #>


    [CmdletBinding(DefaultParameterSetName='Filter', HelpUri='http://go.microsoft.com/fwlink/?LinkId=219307')]
    param ( )

    dynamicparam {
        $parameters = New-Object System.Management.Automation.RuntimeDefinedParameterDictionary

        # AuthType
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("AuthType", [System.Object], $attributes)
        $parameters.Add("AuthType", $parameter)

        # Credential
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.CredentialAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Credential", [System.Management.Automation.PSCredential], $attributes)
        $parameters.Add("Credential", $parameter)

        # Filter
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Filter"
        $attribute.Mandatory = $True
        $attribute.HelpMessageBaseName = "Microsoft.ActiveDirectory.Management"
        $attribute.HelpMessageResourceId = "ADOUFilterHM"
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Filter", [System.String], $attributes)
        $parameters.Add("Filter", $parameter)

        # Identity
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ValidateNotNullAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.Position = 0
        $attribute.ParameterSetName = "Identity"
        $attribute.Mandatory = $True
        $attribute.ValueFromPipeline = $True
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Identity", [System.Object], $attributes)
        $parameters.Add("Identity", $parameter)

        # LDAPFilter
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "LdapFilter"
        $attribute.Mandatory = $True
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("LDAPFilter", [System.String], $attributes)
        $parameters.Add("LDAPFilter", $parameter)

        # Partition
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Identity"
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Partition", [System.String], $attributes)
        $parameters.Add("Partition", $parameter)

        # Properties
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.AliasAttribute('Property')
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Properties", [System.String[]], $attributes)
        $parameters.Add("Properties", $parameter)

        # ResultPageSize
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "LdapFilter"
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Filter"
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateRangeAttribute(0, 2147483647)
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("ResultPageSize", [System.Int32], $attributes)
        $parameters.Add("ResultPageSize", $parameter)

        # ResultSetSize
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "LdapFilter"
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Filter"
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("ResultSetSize", [System.Nullable`1[System.Int32]], $attributes)
        $parameters.Add("ResultSetSize", $parameter)

        # SearchBase
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "LdapFilter"
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Filter"
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("SearchBase", [System.String], $attributes)
        $parameters.Add("SearchBase", $parameter)

        # SearchScope
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "LdapFilter"
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Filter"
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("SearchScope", [System.Object], $attributes)
        $parameters.Add("SearchScope", $parameter)

        # Server
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Server", [System.String], $attributes)
        $parameters.Add("Server", $parameter)

        return $parameters
    }

    end {
        throw '{0}: StubNotImplemented' -f $MyInvocation.MyCommand
    }
}

function Get-ADPrincipalGroupMembership {
    <#
    .SYNOPSIS
        Get-ADPrincipalGroupMembership [-Identity] <ADPrincipal> [-AuthType <ADAuthType>] [-Credential <pscredential>] [-Partition <string>] [-ResourceContextPartition <string>] [-ResourceContextServer <string>] [-Server <string>] [<CommonParameters>]
    #>


    [CmdletBinding(DefaultParameterSetName='Identity', HelpUri='http://go.microsoft.com/fwlink/?LinkId=219309')]
    param ( )

    dynamicparam {
        $parameters = New-Object System.Management.Automation.RuntimeDefinedParameterDictionary

        # AuthType
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("AuthType", [System.Object], $attributes)
        $parameters.Add("AuthType", $parameter)

        # Credential
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.CredentialAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Credential", [System.Management.Automation.PSCredential], $attributes)
        $parameters.Add("Credential", $parameter)

        # Identity
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.Position = 0
        $attribute.Mandatory = $True
        $attribute.ValueFromPipeline = $True
        $attribute.HelpMessageBaseName = "Microsoft.ActiveDirectory.Management"
        $attribute.HelpMessageResourceId = "ADPrincipalGMIdentityHM"
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Identity", [System.Object], $attributes)
        $parameters.Add("Identity", $parameter)

        # Partition
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ValidateNotNullAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Partition", [System.String], $attributes)
        $parameters.Add("Partition", $parameter)

        # ResourceContextPartition
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("ResourceContextPartition", [System.String], $attributes)
        $parameters.Add("ResourceContextPartition", $parameter)

        # ResourceContextServer
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("ResourceContextServer", [System.String], $attributes)
        $parameters.Add("ResourceContextServer", $parameter)

        # Server
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Server", [System.String], $attributes)
        $parameters.Add("Server", $parameter)

        return $parameters
    }

    end {
        throw '{0}: StubNotImplemented' -f $MyInvocation.MyCommand
    }
}

function Get-ADReplicationAttributeMetadata {
    <#
    .SYNOPSIS
        Get-ADReplicationAttributeMetadata [-Object] <ADObject> [-Server] <string> [[-Properties] <string[]>] [-AuthType <ADAuthType>] [-Credential <pscredential>] [-Filter <string>] [-IncludeDeletedObjects] [-ShowAllLinkedValues] [<CommonParameters>]
    #>


    [CmdletBinding(HelpUri='http://go.microsoft.com/fwlink/?LinkId=216351')]
    param ( )

    dynamicparam {
        $parameters = New-Object System.Management.Automation.RuntimeDefinedParameterDictionary

        # AuthType
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("AuthType", [System.Object], $attributes)
        $parameters.Add("AuthType", $parameter)

        # Credential
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.CredentialAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Credential", [System.Management.Automation.PSCredential], $attributes)
        $parameters.Add("Credential", $parameter)

        # Filter
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Filter", [System.String], $attributes)
        $parameters.Add("Filter", $parameter)

        # IncludeDeletedObjects
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("IncludeDeletedObjects", [System.Management.Automation.SwitchParameter], $attributes)
        $parameters.Add("IncludeDeletedObjects", $parameter)

        # Object
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.Position = 0
        $attribute.Mandatory = $True
        $attribute.ValueFromPipeline = $True
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Object", [System.Object], $attributes)
        $parameters.Add("Object", $parameter)

        # Properties
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.AliasAttribute('Property', 'Attribute', 'Attributes')
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.Position = 2
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Properties", [System.String[]], $attributes)
        $parameters.Add("Properties", $parameter)

        # Server
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.Position = 1
        $attribute.Mandatory = $True
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Server", [System.String], $attributes)
        $parameters.Add("Server", $parameter)

        # ShowAllLinkedValues
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("ShowAllLinkedValues", [System.Management.Automation.SwitchParameter], $attributes)
        $parameters.Add("ShowAllLinkedValues", $parameter)

        return $parameters
    }

    end {
        throw '{0}: StubNotImplemented' -f $MyInvocation.MyCommand
    }
}

function Get-ADReplicationConnection {
    <#
    .SYNOPSIS
        Get-ADReplicationConnection [-AuthType <ADAuthType>] [-Credential <pscredential>] [-Filter <string>] [-Properties <string[]>] [-Server <string>] [<CommonParameters>]
 
Get-ADReplicationConnection [-Identity] <ADReplicationConnection> [-AuthType <ADAuthType>] [-Credential <pscredential>] [-Properties <string[]>] [-Server <string>] [<CommonParameters>]
    #>


    [CmdletBinding(DefaultParameterSetName='Filter', HelpUri='http://go.microsoft.com/fwlink/?LinkId=216352')]
    param ( )

    dynamicparam {
        $parameters = New-Object System.Management.Automation.RuntimeDefinedParameterDictionary

        # AuthType
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("AuthType", [System.Object], $attributes)
        $parameters.Add("AuthType", $parameter)

        # Credential
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.CredentialAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Credential", [System.Management.Automation.PSCredential], $attributes)
        $parameters.Add("Credential", $parameter)

        # Filter
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Filter"
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Filter", [System.String], $attributes)
        $parameters.Add("Filter", $parameter)

        # Identity
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.Position = 0
        $attribute.ParameterSetName = "Identity"
        $attribute.Mandatory = $True
        $attribute.ValueFromPipeline = $True
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Identity", [System.Object], $attributes)
        $parameters.Add("Identity", $parameter)

        # Properties
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.AliasAttribute('Property')
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Properties", [System.String[]], $attributes)
        $parameters.Add("Properties", $parameter)

        # Server
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Server", [System.String], $attributes)
        $parameters.Add("Server", $parameter)

        return $parameters
    }

    end {
        throw '{0}: StubNotImplemented' -f $MyInvocation.MyCommand
    }
}

function Get-ADReplicationFailure {
    <#
    .SYNOPSIS
        Get-ADReplicationFailure [-Target] <Object[]> [-AuthType <ADAuthType>] [-Credential <pscredential>] [-EnumeratingServer <string>] [-Filter <string>] [<CommonParameters>]
 
Get-ADReplicationFailure [[-Target] <Object[]>] [-Scope] <ADScopeType> [-AuthType <ADAuthType>] [-Credential <pscredential>] [-EnumeratingServer <string>] [-Filter <string>] [<CommonParameters>]
    #>


    [CmdletBinding(DefaultParameterSetName='Target', HelpUri='http://go.microsoft.com/fwlink/?LinkId=216353')]
    param ( )

    dynamicparam {
        $parameters = New-Object System.Management.Automation.RuntimeDefinedParameterDictionary

        # AuthType
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("AuthType", [System.Object], $attributes)
        $parameters.Add("AuthType", $parameter)

        # Credential
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.CredentialAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Credential", [System.Management.Automation.PSCredential], $attributes)
        $parameters.Add("Credential", $parameter)

        # EnumeratingServer
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("EnumeratingServer", [System.String], $attributes)
        $parameters.Add("EnumeratingServer", $parameter)

        # Filter
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Filter", [System.String], $attributes)
        $parameters.Add("Filter", $parameter)

        # Scope
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.Position = 1
        $attribute.ParameterSetName = "Scope"
        $attribute.Mandatory = $True
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.AliasAttribute('ReplicationSite')
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Scope", [System.Object], $attributes)
        $parameters.Add("Scope", $parameter)

        # Target
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.Position = 0
        $attribute.ParameterSetName = "Scope"
        $attribute.ValueFromPipeline = $True
        $attribute.HelpMessageBaseName = "Microsoft.ActiveDirectory.Management"
        $attribute.HelpMessageResourceId = "TargetParameterHM"
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.Position = 0
        $attribute.ParameterSetName = "Target"
        $attribute.Mandatory = $True
        $attribute.ValueFromPipeline = $True
        $attribute.HelpMessageBaseName = "Microsoft.ActiveDirectory.Management"
        $attribute.HelpMessageResourceId = "TargetParameterHM"
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.AliasAttribute('Name', 'HostName', 'Site', 'Domain', 'Forest')
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Target", [System.Object[]], $attributes)
        $parameters.Add("Target", $parameter)

        return $parameters
    }

    end {
        throw '{0}: StubNotImplemented' -f $MyInvocation.MyCommand
    }
}

function Get-ADReplicationPartnerMetadata {
    <#
    .SYNOPSIS
        Get-ADReplicationPartnerMetadata [-Target] <Object[]> [[-Partition] <string[]>] [[-PartnerType] <ADPartnerType>] [-AuthType <ADAuthType>] [-Credential <pscredential>] [-EnumerationServer <string>] [-Filter <string>] [<CommonParameters>]
 
Get-ADReplicationPartnerMetadata [[-Target] <Object[]>] [-Scope] <ADScopeType> [[-Partition] <string[]>] [[-PartnerType] <ADPartnerType>] [-AuthType <ADAuthType>] [-Credential <pscredential>] [-EnumerationServer <string>] [-Filter <string>] [<CommonParameters>]
    #>


    [CmdletBinding(DefaultParameterSetName='Target', HelpUri='http://go.microsoft.com/fwlink/?LinkId=216354')]
    param ( )

    dynamicparam {
        $parameters = New-Object System.Management.Automation.RuntimeDefinedParameterDictionary

        # AuthType
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("AuthType", [System.Object], $attributes)
        $parameters.Add("AuthType", $parameter)

        # Credential
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.CredentialAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Credential", [System.Management.Automation.PSCredential], $attributes)
        $parameters.Add("Credential", $parameter)

        # EnumerationServer
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("EnumerationServer", [System.String], $attributes)
        $parameters.Add("EnumerationServer", $parameter)

        # Filter
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Filter", [System.String], $attributes)
        $parameters.Add("Filter", $parameter)

        # Partition
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.Position = 2
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.AliasAttribute('NC', 'NamingContext')
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Partition", [System.String[]], $attributes)
        $parameters.Add("Partition", $parameter)

        # PartnerType
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.Position = 3
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("PartnerType", [System.Object], $attributes)
        $parameters.Add("PartnerType", $parameter)

        # Scope
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.Position = 1
        $attribute.ParameterSetName = "Scope"
        $attribute.Mandatory = $True
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Scope", [System.Object], $attributes)
        $parameters.Add("Scope", $parameter)

        # Target
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.AliasAttribute('Name', 'HostName', 'Site', 'Domain', 'Forest')
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.Position = 0
        $attribute.ParameterSetName = "Scope"
        $attribute.ValueFromPipeline = $True
        $attribute.HelpMessageBaseName = "Microsoft.ActiveDirectory.Management"
        $attribute.HelpMessageResourceId = "TargetParameterHM"
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.Position = 0
        $attribute.ParameterSetName = "Target"
        $attribute.Mandatory = $True
        $attribute.ValueFromPipeline = $True
        $attribute.HelpMessageBaseName = "Microsoft.ActiveDirectory.Management"
        $attribute.HelpMessageResourceId = "TargetParameterHM"
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Target", [System.Object[]], $attributes)
        $parameters.Add("Target", $parameter)

        return $parameters
    }

    end {
        throw '{0}: StubNotImplemented' -f $MyInvocation.MyCommand
    }
}

function Get-ADReplicationQueueOperation {
    <#
    .SYNOPSIS
        Get-ADReplicationQueueOperation [-Server] <string> [[-Partition] <string[]>] [-AuthType <ADAuthType>] [-Credential <pscredential>] [-Filter <string>] [<CommonParameters>]
    #>


    [CmdletBinding(HelpUri='http://go.microsoft.com/fwlink/?LinkId=216355')]
    param ( )

    dynamicparam {
        $parameters = New-Object System.Management.Automation.RuntimeDefinedParameterDictionary

        # AuthType
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("AuthType", [System.Object], $attributes)
        $parameters.Add("AuthType", $parameter)

        # Credential
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.CredentialAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Credential", [System.Management.Automation.PSCredential], $attributes)
        $parameters.Add("Credential", $parameter)

        # Server
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.Position = 1
        $attribute.Mandatory = $True
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Server", [System.String], $attributes)
        $parameters.Add("Server", $parameter)

        # Filter
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Filter", [System.String], $attributes)
        $parameters.Add("Filter", $parameter)

        # Partition
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.Position = 2
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.AliasAttribute('NC', 'NamingContext')
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Partition", [System.String[]], $attributes)
        $parameters.Add("Partition", $parameter)

        return $parameters
    }

    end {
        throw '{0}: StubNotImplemented' -f $MyInvocation.MyCommand
    }
}

function Get-ADReplicationSite {
    <#
    .SYNOPSIS
        Get-ADReplicationSite [[-Identity] <ADReplicationSite>] [-AuthType <ADAuthType>] [-Credential <pscredential>] [-Properties <string[]>] [-Server <string>] [<CommonParameters>]
 
Get-ADReplicationSite -Filter <string> [-AuthType <ADAuthType>] [-Credential <pscredential>] [-Properties <string[]>] [-Server <string>] [<CommonParameters>]
    #>


    [CmdletBinding(DefaultParameterSetName='Identity', HelpUri='http://go.microsoft.com/fwlink/?LinkId=216357')]
    param ( )

    dynamicparam {
        $parameters = New-Object System.Management.Automation.RuntimeDefinedParameterDictionary

        # AuthType
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("AuthType", [System.Object], $attributes)
        $parameters.Add("AuthType", $parameter)

        # Credential
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.CredentialAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Credential", [System.Management.Automation.PSCredential], $attributes)
        $parameters.Add("Credential", $parameter)

        # Filter
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Filter"
        $attribute.Mandatory = $True
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Filter", [System.String], $attributes)
        $parameters.Add("Filter", $parameter)

        # Identity
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ValidateNotNullAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.Position = 0
        $attribute.ParameterSetName = "Identity"
        $attribute.ValueFromPipeline = $True
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Identity", [System.Object], $attributes)
        $parameters.Add("Identity", $parameter)

        # Properties
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.AliasAttribute('Property')
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Properties", [System.String[]], $attributes)
        $parameters.Add("Properties", $parameter)

        # Server
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Server", [System.String], $attributes)
        $parameters.Add("Server", $parameter)

        return $parameters
    }

    end {
        throw '{0}: StubNotImplemented' -f $MyInvocation.MyCommand
    }
}

function Get-ADReplicationSiteLink {
    <#
    .SYNOPSIS
        Get-ADReplicationSiteLink -Filter <string> [-AuthType <ADAuthType>] [-Credential <pscredential>] [-Properties <string[]>] [-Server <string>] [<CommonParameters>]
 
Get-ADReplicationSiteLink [-Identity] <ADReplicationSiteLink> [-AuthType <ADAuthType>] [-Credential <pscredential>] [-Properties <string[]>] [-Server <string>] [<CommonParameters>]
    #>


    [CmdletBinding(DefaultParameterSetName='Filter', HelpUri='http://go.microsoft.com/fwlink/?LinkId=216358')]
    param ( )

    dynamicparam {
        $parameters = New-Object System.Management.Automation.RuntimeDefinedParameterDictionary

        # AuthType
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("AuthType", [System.Object], $attributes)
        $parameters.Add("AuthType", $parameter)

        # Credential
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.CredentialAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Credential", [System.Management.Automation.PSCredential], $attributes)
        $parameters.Add("Credential", $parameter)

        # Filter
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Filter"
        $attribute.Mandatory = $True
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Filter", [System.String], $attributes)
        $parameters.Add("Filter", $parameter)

        # Identity
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ValidateNotNullAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.Position = 0
        $attribute.ParameterSetName = "Identity"
        $attribute.Mandatory = $True
        $attribute.ValueFromPipeline = $True
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Identity", [System.Object], $attributes)
        $parameters.Add("Identity", $parameter)

        # Properties
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.AliasAttribute('Property')
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Properties", [System.String[]], $attributes)
        $parameters.Add("Properties", $parameter)

        # Server
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Server", [System.String], $attributes)
        $parameters.Add("Server", $parameter)

        return $parameters
    }

    end {
        throw '{0}: StubNotImplemented' -f $MyInvocation.MyCommand
    }
}

function Get-ADReplicationSiteLinkBridge {
    <#
    .SYNOPSIS
        Get-ADReplicationSiteLinkBridge -Filter <string> [-AuthType <ADAuthType>] [-Credential <pscredential>] [-Properties <string[]>] [-Server <string>] [<CommonParameters>]
 
Get-ADReplicationSiteLinkBridge [-Identity] <ADReplicationSiteLinkBridge> [-AuthType <ADAuthType>] [-Credential <pscredential>] [-Properties <string[]>] [-Server <string>] [<CommonParameters>]
    #>


    [CmdletBinding(DefaultParameterSetName='Filter', HelpUri='http://go.microsoft.com/fwlink/?LinkId=216359')]
    param ( )

    dynamicparam {
        $parameters = New-Object System.Management.Automation.RuntimeDefinedParameterDictionary

        # AuthType
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("AuthType", [System.Object], $attributes)
        $parameters.Add("AuthType", $parameter)

        # Credential
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.CredentialAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Credential", [System.Management.Automation.PSCredential], $attributes)
        $parameters.Add("Credential", $parameter)

        # Filter
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Filter"
        $attribute.Mandatory = $True
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Filter", [System.String], $attributes)
        $parameters.Add("Filter", $parameter)

        # Identity
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.Position = 0
        $attribute.ParameterSetName = "Identity"
        $attribute.Mandatory = $True
        $attribute.ValueFromPipeline = $True
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Identity", [System.Object], $attributes)
        $parameters.Add("Identity", $parameter)

        # Properties
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.AliasAttribute('Property')
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Properties", [System.String[]], $attributes)
        $parameters.Add("Properties", $parameter)

        # Server
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Server", [System.String], $attributes)
        $parameters.Add("Server", $parameter)

        return $parameters
    }

    end {
        throw '{0}: StubNotImplemented' -f $MyInvocation.MyCommand
    }
}

function Get-ADReplicationSubnet {
    <#
    .SYNOPSIS
        Get-ADReplicationSubnet -Filter <string> [-AuthType <ADAuthType>] [-Credential <pscredential>] [-Properties <string[]>] [-Server <string>] [<CommonParameters>]
 
Get-ADReplicationSubnet [-Identity] <ADReplicationSubnet> [-AuthType <ADAuthType>] [-Credential <pscredential>] [-Properties <string[]>] [-Server <string>] [<CommonParameters>]
    #>


    [CmdletBinding(DefaultParameterSetName='Filter', HelpUri='http://go.microsoft.com/fwlink/?LinkId=216360')]
    param ( )

    dynamicparam {
        $parameters = New-Object System.Management.Automation.RuntimeDefinedParameterDictionary

        # AuthType
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("AuthType", [System.Object], $attributes)
        $parameters.Add("AuthType", $parameter)

        # Credential
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.CredentialAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Credential", [System.Management.Automation.PSCredential], $attributes)
        $parameters.Add("Credential", $parameter)

        # Filter
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Filter"
        $attribute.Mandatory = $True
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Filter", [System.String], $attributes)
        $parameters.Add("Filter", $parameter)

        # Identity
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.Position = 0
        $attribute.ParameterSetName = "Identity"
        $attribute.Mandatory = $True
        $attribute.ValueFromPipeline = $True
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Identity", [System.Object], $attributes)
        $parameters.Add("Identity", $parameter)

        # Properties
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.AliasAttribute('Property')
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Properties", [System.String[]], $attributes)
        $parameters.Add("Properties", $parameter)

        # Server
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Server", [System.String], $attributes)
        $parameters.Add("Server", $parameter)

        return $parameters
    }

    end {
        throw '{0}: StubNotImplemented' -f $MyInvocation.MyCommand
    }
}

function Get-ADReplicationUpToDatenessVectorTable {
    <#
    .SYNOPSIS
        Get-ADReplicationUpToDatenessVectorTable [-Target] <Object[]> [[-Partition] <string[]>] [-AuthType <ADAuthType>] [-Credential <pscredential>] [-EnumerationServer <string>] [-Filter <string>] [<CommonParameters>]
 
Get-ADReplicationUpToDatenessVectorTable [[-Target] <Object[]>] [-Scope] <ADScopeType> [[-Partition] <string[]>] [-AuthType <ADAuthType>] [-Credential <pscredential>] [-EnumerationServer <string>] [-Filter <string>] [<CommonParameters>]
    #>


    [CmdletBinding(DefaultParameterSetName='Target', HelpUri='http://go.microsoft.com/fwlink/?LinkId=216361')]
    param ( )

    dynamicparam {
        $parameters = New-Object System.Management.Automation.RuntimeDefinedParameterDictionary

        # AuthType
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("AuthType", [System.Object], $attributes)
        $parameters.Add("AuthType", $parameter)

        # Credential
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.CredentialAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Credential", [System.Management.Automation.PSCredential], $attributes)
        $parameters.Add("Credential", $parameter)

        # EnumerationServer
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("EnumerationServer", [System.String], $attributes)
        $parameters.Add("EnumerationServer", $parameter)

        # Filter
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Filter", [System.String], $attributes)
        $parameters.Add("Filter", $parameter)

        # Partition
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.Position = 2
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.AliasAttribute('NC', 'NamingContext')
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Partition", [System.String[]], $attributes)
        $parameters.Add("Partition", $parameter)

        # Scope
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.AliasAttribute('ReplicationSite')
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.Position = 1
        $attribute.ParameterSetName = "Scope"
        $attribute.Mandatory = $True
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Scope", [System.Object], $attributes)
        $parameters.Add("Scope", $parameter)

        # Target
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.Position = 0
        $attribute.ParameterSetName = "Target"
        $attribute.Mandatory = $True
        $attribute.ValueFromPipeline = $True
        $attribute.HelpMessageBaseName = "Microsoft.ActiveDirectory.Management"
        $attribute.HelpMessageResourceId = "TargetParameterHM"
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.Position = 0
        $attribute.ParameterSetName = "Scope"
        $attribute.ValueFromPipeline = $True
        $attribute.HelpMessageBaseName = "Microsoft.ActiveDirectory.Management"
        $attribute.HelpMessageResourceId = "TargetParameterHM"
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.AliasAttribute('Name', 'HostName', 'Site', 'Domain', 'Forest')
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Target", [System.Object[]], $attributes)
        $parameters.Add("Target", $parameter)

        return $parameters
    }

    end {
        throw '{0}: StubNotImplemented' -f $MyInvocation.MyCommand
    }
}

function Get-ADResourceProperty {
    <#
    .SYNOPSIS
        Get-ADResourceProperty -Filter <string> [-AuthType <ADAuthType>] [-Credential <pscredential>] [-Properties <string[]>] [-ResultPageSize <int>] [-ResultSetSize <int>] [-Server <string>] [<CommonParameters>]
 
Get-ADResourceProperty [-Identity] <ADResourceProperty> [-AuthType <ADAuthType>] [-Credential <pscredential>] [-Properties <string[]>] [-Server <string>] [<CommonParameters>]
 
Get-ADResourceProperty -LDAPFilter <string> [-AuthType <ADAuthType>] [-Credential <pscredential>] [-Properties <string[]>] [-ResultPageSize <int>] [-ResultSetSize <int>] [-Server <string>] [<CommonParameters>]
    #>


    [CmdletBinding(DefaultParameterSetName='Filter', HelpUri='http://go.microsoft.com/fwlink/?LinkId=216362')]
    param ( )

    dynamicparam {
        $parameters = New-Object System.Management.Automation.RuntimeDefinedParameterDictionary

        # AuthType
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("AuthType", [System.Object], $attributes)
        $parameters.Add("AuthType", $parameter)

        # Credential
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.CredentialAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Credential", [System.Management.Automation.PSCredential], $attributes)
        $parameters.Add("Credential", $parameter)

        # Filter
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Filter"
        $attribute.Mandatory = $True
        $attribute.HelpMessageBaseName = "Microsoft.ActiveDirectory.Management"
        $attribute.HelpMessageResourceId = "ADUserFilterHM"
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Filter", [System.String], $attributes)
        $parameters.Add("Filter", $parameter)

        # Identity
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.Position = 0
        $attribute.ParameterSetName = "Identity"
        $attribute.Mandatory = $True
        $attribute.ValueFromPipeline = $True
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Identity", [System.Object], $attributes)
        $parameters.Add("Identity", $parameter)

        # LDAPFilter
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "LdapFilter"
        $attribute.Mandatory = $True
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("LDAPFilter", [System.String], $attributes)
        $parameters.Add("LDAPFilter", $parameter)

        # Properties
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.AliasAttribute('Property')
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Properties", [System.String[]], $attributes)
        $parameters.Add("Properties", $parameter)

        # ResultPageSize
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Filter"
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "LdapFilter"
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateRangeAttribute(0, 2147483647)
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("ResultPageSize", [System.Int32], $attributes)
        $parameters.Add("ResultPageSize", $parameter)

        # ResultSetSize
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Filter"
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "LdapFilter"
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("ResultSetSize", [System.Nullable`1[System.Int32]], $attributes)
        $parameters.Add("ResultSetSize", $parameter)

        # Server
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Server", [System.String], $attributes)
        $parameters.Add("Server", $parameter)

        return $parameters
    }

    end {
        throw '{0}: StubNotImplemented' -f $MyInvocation.MyCommand
    }
}

function Get-ADResourcePropertyList {
    <#
    .SYNOPSIS
        Get-ADResourcePropertyList -Filter <string> [-AuthType <ADAuthType>] [-Credential <pscredential>] [-Properties <string[]>] [-ResultPageSize <int>] [-ResultSetSize <int>] [-Server <string>] [<CommonParameters>]
 
Get-ADResourcePropertyList [-Identity] <ADResourcePropertyList> [-AuthType <ADAuthType>] [-Credential <pscredential>] [-Properties <string[]>] [-Server <string>] [<CommonParameters>]
 
Get-ADResourcePropertyList -LDAPFilter <string> [-AuthType <ADAuthType>] [-Credential <pscredential>] [-Properties <string[]>] [-ResultPageSize <int>] [-ResultSetSize <int>] [-Server <string>] [<CommonParameters>]
    #>


    [CmdletBinding(DefaultParameterSetName='Filter', HelpUri='http://go.microsoft.com/fwlink/?LinkId=216363')]
    param ( )

    dynamicparam {
        $parameters = New-Object System.Management.Automation.RuntimeDefinedParameterDictionary

        # AuthType
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("AuthType", [System.Object], $attributes)
        $parameters.Add("AuthType", $parameter)

        # Credential
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.CredentialAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Credential", [System.Management.Automation.PSCredential], $attributes)
        $parameters.Add("Credential", $parameter)

        # Filter
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Filter"
        $attribute.Mandatory = $True
        $attribute.HelpMessageBaseName = "Microsoft.ActiveDirectory.Management"
        $attribute.HelpMessageResourceId = "ADUserFilterHM"
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Filter", [System.String], $attributes)
        $parameters.Add("Filter", $parameter)

        # Identity
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ValidateNotNullAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.Position = 0
        $attribute.ParameterSetName = "Identity"
        $attribute.Mandatory = $True
        $attribute.ValueFromPipeline = $True
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Identity", [System.Object], $attributes)
        $parameters.Add("Identity", $parameter)

        # LDAPFilter
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "LdapFilter"
        $attribute.Mandatory = $True
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("LDAPFilter", [System.String], $attributes)
        $parameters.Add("LDAPFilter", $parameter)

        # Properties
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.AliasAttribute('Property')
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Properties", [System.String[]], $attributes)
        $parameters.Add("Properties", $parameter)

        # ResultPageSize
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Filter"
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "LdapFilter"
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateRangeAttribute(0, 2147483647)
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("ResultPageSize", [System.Int32], $attributes)
        $parameters.Add("ResultPageSize", $parameter)

        # ResultSetSize
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "LdapFilter"
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Filter"
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("ResultSetSize", [System.Nullable`1[System.Int32]], $attributes)
        $parameters.Add("ResultSetSize", $parameter)

        # Server
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Server", [System.String], $attributes)
        $parameters.Add("Server", $parameter)

        return $parameters
    }

    end {
        throw '{0}: StubNotImplemented' -f $MyInvocation.MyCommand
    }
}

function Get-ADResourcePropertyValueType {
    <#
    .SYNOPSIS
        Get-ADResourcePropertyValueType -Filter <string> [-AuthType <ADAuthType>] [-Credential <pscredential>] [-Properties <string[]>] [-Server <string>] [<CommonParameters>]
 
Get-ADResourcePropertyValueType [-Identity] <ADResourcePropertyValueType> [-AuthType <ADAuthType>] [-Credential <pscredential>] [-Properties <string[]>] [-Server <string>] [<CommonParameters>]
 
Get-ADResourcePropertyValueType -LDAPFilter <string> [-AuthType <ADAuthType>] [-Credential <pscredential>] [-Properties <string[]>] [-Server <string>] [<CommonParameters>]
    #>


    [CmdletBinding(DefaultParameterSetName='Filter', HelpUri='http://go.microsoft.com/fwlink/?LinkId=216364')]
    param ( )

    dynamicparam {
        $parameters = New-Object System.Management.Automation.RuntimeDefinedParameterDictionary

        # AuthType
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("AuthType", [System.Object], $attributes)
        $parameters.Add("AuthType", $parameter)

        # Credential
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.CredentialAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Credential", [System.Management.Automation.PSCredential], $attributes)
        $parameters.Add("Credential", $parameter)

        # Filter
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Filter"
        $attribute.Mandatory = $True
        $attribute.HelpMessageBaseName = "Microsoft.ActiveDirectory.Management"
        $attribute.HelpMessageResourceId = "ADUserFilterHM"
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Filter", [System.String], $attributes)
        $parameters.Add("Filter", $parameter)

        # Identity
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ValidateNotNullAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.Position = 0
        $attribute.ParameterSetName = "Identity"
        $attribute.Mandatory = $True
        $attribute.ValueFromPipeline = $True
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Identity", [System.Object], $attributes)
        $parameters.Add("Identity", $parameter)

        # LDAPFilter
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "LdapFilter"
        $attribute.Mandatory = $True
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("LDAPFilter", [System.String], $attributes)
        $parameters.Add("LDAPFilter", $parameter)

        # Properties
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.AliasAttribute('Property')
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Properties", [System.String[]], $attributes)
        $parameters.Add("Properties", $parameter)

        # Server
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Server", [System.String], $attributes)
        $parameters.Add("Server", $parameter)

        return $parameters
    }

    end {
        throw '{0}: StubNotImplemented' -f $MyInvocation.MyCommand
    }
}

function Get-ADRootDSE {
    <#
    .SYNOPSIS
        Get-ADRootDSE [-AuthType <ADAuthType>] [-Credential <pscredential>] [-Properties <string[]>] [-Server <string>] [<CommonParameters>]
    #>


    [CmdletBinding(HelpUri='http://go.microsoft.com/fwlink/?LinkId=219299')]
    param ( )

    dynamicparam {
        $parameters = New-Object System.Management.Automation.RuntimeDefinedParameterDictionary

        # AuthType
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("AuthType", [System.Object], $attributes)
        $parameters.Add("AuthType", $parameter)

        # Credential
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.CredentialAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Credential", [System.Management.Automation.PSCredential], $attributes)
        $parameters.Add("Credential", $parameter)

        # Properties
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.AliasAttribute('Property')
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Properties", [System.String[]], $attributes)
        $parameters.Add("Properties", $parameter)

        # Server
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Server", [System.String], $attributes)
        $parameters.Add("Server", $parameter)

        return $parameters
    }

    end {
        throw '{0}: StubNotImplemented' -f $MyInvocation.MyCommand
    }
}

function Get-ADServiceAccount {
    <#
    .SYNOPSIS
        Get-ADServiceAccount -Filter <string> [-AuthType <ADAuthType>] [-Credential <pscredential>] [-Properties <string[]>] [-ResultPageSize <int>] [-ResultSetSize <int>] [-SearchBase <string>] [-SearchScope <ADSearchScope>] [-Server <string>] [<CommonParameters>]
 
Get-ADServiceAccount [-Identity] <ADServiceAccount> [-AuthType <ADAuthType>] [-Credential <pscredential>] [-Partition <string>] [-Properties <string[]>] [-Server <string>] [<CommonParameters>]
 
Get-ADServiceAccount -LDAPFilter <string> [-AuthType <ADAuthType>] [-Credential <pscredential>] [-Properties <string[]>] [-ResultPageSize <int>] [-ResultSetSize <int>] [-SearchBase <string>] [-SearchScope <ADSearchScope>] [-Server <string>] [<CommonParameters>]
    #>


    [CmdletBinding(DefaultParameterSetName='Filter', HelpUri='http://go.microsoft.com/fwlink/?LinkId=301398')]
    param ( )

    dynamicparam {
        $parameters = New-Object System.Management.Automation.RuntimeDefinedParameterDictionary

        # AuthType
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("AuthType", [System.Object], $attributes)
        $parameters.Add("AuthType", $parameter)

        # Credential
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.CredentialAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Credential", [System.Management.Automation.PSCredential], $attributes)
        $parameters.Add("Credential", $parameter)

        # Filter
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Filter"
        $attribute.Mandatory = $True
        $attribute.HelpMessageBaseName = "Microsoft.ActiveDirectory.Management"
        $attribute.HelpMessageResourceId = "ADServiceAccountFilterHM"
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Filter", [System.String], $attributes)
        $parameters.Add("Filter", $parameter)

        # Identity
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ValidateNotNullAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.Position = 0
        $attribute.ParameterSetName = "Identity"
        $attribute.Mandatory = $True
        $attribute.ValueFromPipeline = $True
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Identity", [System.Object], $attributes)
        $parameters.Add("Identity", $parameter)

        # LDAPFilter
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "LdapFilter"
        $attribute.Mandatory = $True
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("LDAPFilter", [System.String], $attributes)
        $parameters.Add("LDAPFilter", $parameter)

        # Partition
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Identity"
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Partition", [System.String], $attributes)
        $parameters.Add("Partition", $parameter)

        # Properties
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.AliasAttribute('Property')
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Properties", [System.String[]], $attributes)
        $parameters.Add("Properties", $parameter)

        # ResultPageSize
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Filter"
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "LdapFilter"
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateRangeAttribute(0, 2147483647)
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("ResultPageSize", [System.Int32], $attributes)
        $parameters.Add("ResultPageSize", $parameter)

        # ResultSetSize
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "LdapFilter"
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Filter"
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("ResultSetSize", [System.Nullable`1[System.Int32]], $attributes)
        $parameters.Add("ResultSetSize", $parameter)

        # SearchBase
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "LdapFilter"
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Filter"
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("SearchBase", [System.String], $attributes)
        $parameters.Add("SearchBase", $parameter)

        # SearchScope
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "LdapFilter"
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Filter"
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("SearchScope", [System.Object], $attributes)
        $parameters.Add("SearchScope", $parameter)

        # Server
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Server", [System.String], $attributes)
        $parameters.Add("Server", $parameter)

        return $parameters
    }

    end {
        throw '{0}: StubNotImplemented' -f $MyInvocation.MyCommand
    }
}

function Get-ADTrust {
    <#
    .SYNOPSIS
        Get-ADTrust -Filter <string> [-AuthType <ADAuthType>] [-Credential <pscredential>] [-Properties <string[]>] [-Server <string>] [<CommonParameters>]
 
Get-ADTrust [-Identity] <ADTrust> [-AuthType <ADAuthType>] [-Credential <pscredential>] [-Properties <string[]>] [-Server <string>] [<CommonParameters>]
 
Get-ADTrust -InputObject <Object> [-AuthType <ADAuthType>] [-Credential <pscredential>] [-Properties <string[]>] [-Server <string>] [<CommonParameters>]
 
Get-ADTrust -LDAPFilter <string> [-AuthType <ADAuthType>] [-Credential <pscredential>] [-Properties <string[]>] [-Server <string>] [<CommonParameters>]
    #>


    [CmdletBinding(DefaultParameterSetName='Filter', HelpUri='http://go.microsoft.com/fwlink/?LinkId=216369')]
    param ( )

    dynamicparam {
        $parameters = New-Object System.Management.Automation.RuntimeDefinedParameterDictionary

        # AuthType
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("AuthType", [System.Object], $attributes)
        $parameters.Add("AuthType", $parameter)

        # Credential
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.CredentialAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Credential", [System.Management.Automation.PSCredential], $attributes)
        $parameters.Add("Credential", $parameter)

        # Filter
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Filter"
        $attribute.Mandatory = $True
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Filter", [System.String], $attributes)
        $parameters.Add("Filter", $parameter)

        # Identity
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.Position = 0
        $attribute.ParameterSetName = "Identity"
        $attribute.Mandatory = $True
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Identity", [System.Object], $attributes)
        $parameters.Add("Identity", $parameter)

        # InputObject
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ValidateNotNullAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "InputObject"
        $attribute.Mandatory = $True
        $attribute.ValueFromPipeline = $True
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("InputObject", [System.Object], $attributes)
        $parameters.Add("InputObject", $parameter)

        # LDAPFilter
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "LdapFilter"
        $attribute.Mandatory = $True
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("LDAPFilter", [System.String], $attributes)
        $parameters.Add("LDAPFilter", $parameter)

        # Properties
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.AliasAttribute('Property')
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Properties", [System.String[]], $attributes)
        $parameters.Add("Properties", $parameter)

        # Server
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Server", [System.String], $attributes)
        $parameters.Add("Server", $parameter)

        return $parameters
    }

    end {
        throw '{0}: StubNotImplemented' -f $MyInvocation.MyCommand
    }
}

function Get-ADUser {
    <#
    .SYNOPSIS
        Get-ADUser -Filter <string> [-AuthType <ADAuthType>] [-Credential <pscredential>] [-Properties <string[]>] [-ResultPageSize <int>] [-ResultSetSize <int>] [-SearchBase <string>] [-SearchScope <ADSearchScope>] [-Server <string>] [<CommonParameters>]
 
Get-ADUser [-Identity] <ADUser> [-AuthType <ADAuthType>] [-Credential <pscredential>] [-Partition <string>] [-Properties <string[]>] [-Server <string>] [<CommonParameters>]
 
Get-ADUser -LDAPFilter <string> [-AuthType <ADAuthType>] [-Credential <pscredential>] [-Properties <string[]>] [-ResultPageSize <int>] [-ResultSetSize <int>] [-SearchBase <string>] [-SearchScope <ADSearchScope>] [-Server <string>] [<CommonParameters>]
    #>


    [CmdletBinding(DefaultParameterSetName='Filter', HelpUri='http://go.microsoft.com/fwlink/?LinkId=301397')]
    param ( )

    dynamicparam {
        $parameters = New-Object System.Management.Automation.RuntimeDefinedParameterDictionary

        # AuthType
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("AuthType", [System.Object], $attributes)
        $parameters.Add("AuthType", $parameter)

        # Credential
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.CredentialAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Credential", [System.Management.Automation.PSCredential], $attributes)
        $parameters.Add("Credential", $parameter)

        # Filter
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Filter"
        $attribute.Mandatory = $True
        $attribute.HelpMessageBaseName = "Microsoft.ActiveDirectory.Management"
        $attribute.HelpMessageResourceId = "ADUserFilterHM"
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Filter", [System.String], $attributes)
        $parameters.Add("Filter", $parameter)

        # Identity
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ValidateNotNullAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.Position = 0
        $attribute.ParameterSetName = "Identity"
        $attribute.Mandatory = $True
        $attribute.ValueFromPipeline = $True
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Identity", [System.Object], $attributes)
        $parameters.Add("Identity", $parameter)

        # LDAPFilter
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "LdapFilter"
        $attribute.Mandatory = $True
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("LDAPFilter", [System.String], $attributes)
        $parameters.Add("LDAPFilter", $parameter)

        # Partition
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Identity"
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Partition", [System.String], $attributes)
        $parameters.Add("Partition", $parameter)

        # Properties
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.AliasAttribute('Property')
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Properties", [System.String[]], $attributes)
        $parameters.Add("Properties", $parameter)

        # ResultPageSize
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "LdapFilter"
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Filter"
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateRangeAttribute(0, 2147483647)
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("ResultPageSize", [System.Int32], $attributes)
        $parameters.Add("ResultPageSize", $parameter)

        # ResultSetSize
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Filter"
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "LdapFilter"
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("ResultSetSize", [System.Nullable`1[System.Int32]], $attributes)
        $parameters.Add("ResultSetSize", $parameter)

        # SearchBase
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Filter"
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "LdapFilter"
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("SearchBase", [System.String], $attributes)
        $parameters.Add("SearchBase", $parameter)

        # SearchScope
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "LdapFilter"
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Filter"
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("SearchScope", [System.Object], $attributes)
        $parameters.Add("SearchScope", $parameter)

        # Server
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Server", [System.String], $attributes)
        $parameters.Add("Server", $parameter)

        return $parameters
    }

    end {
        throw '{0}: StubNotImplemented' -f $MyInvocation.MyCommand
    }
}

function Get-ADUserResultantPasswordPolicy {
    <#
    .SYNOPSIS
        Get-ADUserResultantPasswordPolicy [-Identity] <ADUser> [-AuthType <ADAuthType>] [-Credential <pscredential>] [-Partition <string>] [-Server <string>] [<CommonParameters>]
    #>


    [CmdletBinding(DefaultParameterSetName='Identity', HelpUri='http://go.microsoft.com/fwlink/?LinkId=219313')]
    param ( )

    dynamicparam {
        $parameters = New-Object System.Management.Automation.RuntimeDefinedParameterDictionary

        # AuthType
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("AuthType", [System.Object], $attributes)
        $parameters.Add("AuthType", $parameter)

        # Credential
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.CredentialAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Credential", [System.Management.Automation.PSCredential], $attributes)
        $parameters.Add("Credential", $parameter)

        # Identity
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.Position = 0
        $attribute.Mandatory = $True
        $attribute.ValueFromPipeline = $True
        $attribute.HelpMessageBaseName = "Microsoft.ActiveDirectory.Management"
        $attribute.HelpMessageResourceId = "ADUserResultantPPIdentityHM"
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Identity", [System.Object], $attributes)
        $parameters.Add("Identity", $parameter)

        # Partition
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ValidateNotNullAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Partition", [System.String], $attributes)
        $parameters.Add("Partition", $parameter)

        # Server
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Server", [System.String], $attributes)
        $parameters.Add("Server", $parameter)

        return $parameters
    }

    end {
        throw '{0}: StubNotImplemented' -f $MyInvocation.MyCommand
    }
}

function Grant-ADAuthenticationPolicySiloAccess {
    <#
    .SYNOPSIS
        Grant-ADAuthenticationPolicySiloAccess [-Identity] <ADAuthenticationPolicySilo> [-Account] <ADAccount> [-WhatIf] [-Confirm] [-AuthType <ADAuthType>] [-Credential <pscredential>] [-PassThru] [-Server <string>] [<CommonParameters>]
    #>


    [CmdletBinding(SupportsShouldProcess=$true, ConfirmImpact='Medium', HelpUri='http://go.microsoft.com/fwlink/?LinkId=301414')]
    param ( )

    dynamicparam {
        $parameters = New-Object System.Management.Automation.RuntimeDefinedParameterDictionary

        # Account
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.Position = 1
        $attribute.Mandatory = $True
        $attribute.ValueFromPipeline = $True
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Account", [System.Object], $attributes)
        $parameters.Add("Account", $parameter)

        # AuthType
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("AuthType", [System.Object], $attributes)
        $parameters.Add("AuthType", $parameter)

        # Credential
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.CredentialAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Credential", [System.Management.Automation.PSCredential], $attributes)
        $parameters.Add("Credential", $parameter)

        # Identity
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.Position = 0
        $attribute.Mandatory = $True
        $attribute.ValueFromPipeline = $True
        $attribute.HelpMessageBaseName = "Microsoft.ActiveDirectory.Management"
        $attribute.HelpMessageResourceId = "ADPrincipalGMIdentityHM"
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Identity", [System.Object], $attributes)
        $parameters.Add("Identity", $parameter)

        # PassThru
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ValidateNotNullAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("PassThru", [System.Management.Automation.SwitchParameter], $attributes)
        $parameters.Add("PassThru", $parameter)

        # Server
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Server", [System.String], $attributes)
        $parameters.Add("Server", $parameter)

        return $parameters
    }

    end {
        throw '{0}: StubNotImplemented' -f $MyInvocation.MyCommand
    }
}

function Install-ADServiceAccount {
    <#
    .SYNOPSIS
        Install-ADServiceAccount [-Identity] <ADServiceAccount> [-WhatIf] [-Confirm] [-AccountPassword <securestring>] [-AuthType <ADAuthType>] [-Force] [-PromptForPassword] [<CommonParameters>]
    #>


    [CmdletBinding(SupportsShouldProcess=$true, ConfirmImpact='Medium', HelpUri='http://go.microsoft.com/fwlink/?LinkId=219319')]
    param ( )

    dynamicparam {
        $parameters = New-Object System.Management.Automation.RuntimeDefinedParameterDictionary

        # AccountPassword
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("AccountPassword", [System.Security.SecureString], $attributes)
        $parameters.Add("AccountPassword", $parameter)

        # AuthType
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("AuthType", [System.Object], $attributes)
        $parameters.Add("AuthType", $parameter)

        # Force
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Identity"
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Force", [System.Management.Automation.SwitchParameter], $attributes)
        $parameters.Add("Force", $parameter)

        # Identity
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.Position = 0
        $attribute.ParameterSetName = "Identity"
        $attribute.Mandatory = $True
        $attribute.ValueFromPipeline = $True
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Identity", [System.Object], $attributes)
        $parameters.Add("Identity", $parameter)

        # PromptForPassword
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("PromptForPassword", [System.Management.Automation.SwitchParameter], $attributes)
        $parameters.Add("PromptForPassword", $parameter)

        return $parameters
    }

    end {
        throw '{0}: StubNotImplemented' -f $MyInvocation.MyCommand
    }
}

function Move-ADDirectoryServer {
    <#
    .SYNOPSIS
        Move-ADDirectoryServer [-Identity] <ADDirectoryServer> [-Site] <ADReplicationSite> [-WhatIf] [-Confirm] [-AuthType <ADAuthType>] [-Credential <pscredential>] [-Server <string>] [<CommonParameters>]
    #>


    [CmdletBinding(SupportsShouldProcess=$true, ConfirmImpact='Medium', HelpUri='http://go.microsoft.com/fwlink/?LinkId=219321')]
    param ( )

    dynamicparam {
        $parameters = New-Object System.Management.Automation.RuntimeDefinedParameterDictionary

        # AuthType
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("AuthType", [System.Object], $attributes)
        $parameters.Add("AuthType", $parameter)

        # Credential
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.CredentialAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Credential", [System.Management.Automation.PSCredential], $attributes)
        $parameters.Add("Credential", $parameter)

        # Identity
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.Position = 0
        $attribute.Mandatory = $True
        $attribute.ValueFromPipeline = $True
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Identity", [System.Object], $attributes)
        $parameters.Add("Identity", $parameter)

        # Server
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Server", [System.String], $attributes)
        $parameters.Add("Server", $parameter)

        # Site
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.Position = 1
        $attribute.Mandatory = $True
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Site", [System.Object], $attributes)
        $parameters.Add("Site", $parameter)

        return $parameters
    }

    end {
        throw '{0}: StubNotImplemented' -f $MyInvocation.MyCommand
    }
}

function Move-ADDirectoryServerOperationMasterRole {
    <#
    .SYNOPSIS
        Move-ADDirectoryServerOperationMasterRole [-Identity] <ADDirectoryServer> [-OperationMasterRole] <ADOperationMasterRole[]> [-WhatIf] [-Confirm] [-AuthType <ADAuthType>] [-Credential <pscredential>] [-Force] [-PassThru] [-Server <string>] [<CommonParameters>]
    #>


    [CmdletBinding(SupportsShouldProcess=$true, ConfirmImpact='High', HelpUri='http://go.microsoft.com/fwlink/?LinkId=219322')]
    param ( )

    dynamicparam {
        $parameters = New-Object System.Management.Automation.RuntimeDefinedParameterDictionary

        # AuthType
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("AuthType", [System.Object], $attributes)
        $parameters.Add("AuthType", $parameter)

        # Credential
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.CredentialAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Credential", [System.Management.Automation.PSCredential], $attributes)
        $parameters.Add("Credential", $parameter)

        # Force
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Force", [System.Management.Automation.SwitchParameter], $attributes)
        $parameters.Add("Force", $parameter)

        # Identity
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.Position = 0
        $attribute.Mandatory = $True
        $attribute.ValueFromPipeline = $True
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Identity", [System.Object], $attributes)
        $parameters.Add("Identity", $parameter)

        # OperationMasterRole
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ValidateCountAttribute(0, 5)
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.Position = 1
        $attribute.Mandatory = $True
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("OperationMasterRole", [System.Object[]], $attributes)
        $parameters.Add("OperationMasterRole", $parameter)

        # PassThru
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("PassThru", [System.Management.Automation.SwitchParameter], $attributes)
        $parameters.Add("PassThru", $parameter)

        # Server
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Server", [System.String], $attributes)
        $parameters.Add("Server", $parameter)

        return $parameters
    }

    end {
        throw '{0}: StubNotImplemented' -f $MyInvocation.MyCommand
    }
}

function Move-ADObject {
    <#
    .SYNOPSIS
        Move-ADObject [-Identity] <ADObject> [-TargetPath] <string> [-WhatIf] [-Confirm] [-AuthType <ADAuthType>] [-Credential <pscredential>] [-Partition <string>] [-PassThru] [-Server <string>] [-TargetServer <string>] [<CommonParameters>]
    #>


    [CmdletBinding(SupportsShouldProcess=$true, ConfirmImpact='Medium', HelpUri='http://go.microsoft.com/fwlink/?LinkId=219320')]
    param ( )

    dynamicparam {
        $parameters = New-Object System.Management.Automation.RuntimeDefinedParameterDictionary

        # AuthType
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("AuthType", [System.Object], $attributes)
        $parameters.Add("AuthType", $parameter)

        # Credential
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.CredentialAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Credential", [System.Management.Automation.PSCredential], $attributes)
        $parameters.Add("Credential", $parameter)

        # Identity
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ValidateNotNullAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.Position = 0
        $attribute.Mandatory = $True
        $attribute.ValueFromPipeline = $True
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Identity", [System.Object], $attributes)
        $parameters.Add("Identity", $parameter)

        # Partition
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Partition", [System.String], $attributes)
        $parameters.Add("Partition", $parameter)

        # PassThru
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("PassThru", [System.Management.Automation.SwitchParameter], $attributes)
        $parameters.Add("PassThru", $parameter)

        # Server
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Server", [System.String], $attributes)
        $parameters.Add("Server", $parameter)

        # TargetPath
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.Position = 1
        $attribute.Mandatory = $True
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("TargetPath", [System.String], $attributes)
        $parameters.Add("TargetPath", $parameter)

        # TargetServer
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("TargetServer", [System.String], $attributes)
        $parameters.Add("TargetServer", $parameter)

        return $parameters
    }

    end {
        throw '{0}: StubNotImplemented' -f $MyInvocation.MyCommand
    }
}

function New-ADAuthenticationPolicy {
    <#
    .SYNOPSIS
        New-ADAuthenticationPolicy [-Name] <string> [-WhatIf] [-Confirm] [-AuthType <ADAuthType>] [-ComputerAllowedToAuthenticateTo <string>] [-ComputerTGTLifetimeMins <int>] [-Credential <pscredential>] [-Description <string>] [-Enforce] [-Instance <ADAuthenticationPolicy>] [-OtherAttributes <hashtable>] [-PassThru] [-ProtectedFromAccidentalDeletion <bool>] [-RollingNTLMSecret <ADStrongNTLMPolicyType>] [-Server <string>] [-ServiceAllowedToAuthenticateFrom <string>] [-ServiceAllowedToAuthenticateTo <string>] [-ServiceAllowedNTLMNetworkAuthentication] [-ServiceTGTLifetimeMins <int>] [-UserAllowedToAuthenticateFrom <string>] [-UserAllowedToAuthenticateTo <string>] [-UserAllowedNTLMNetworkAuthentication] [-UserTGTLifetimeMins <int>] [<CommonParameters>]
    #>


    [CmdletBinding(SupportsShouldProcess=$true, ConfirmImpact='Medium', HelpUri='http://go.microsoft.com/fwlink/?LinkId=301406')]
    param ( )

    dynamicparam {
        $parameters = New-Object System.Management.Automation.RuntimeDefinedParameterDictionary

        # AuthType
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("AuthType", [System.Object], $attributes)
        $parameters.Add("AuthType", $parameter)

        # ComputerAllowedToAuthenticateTo
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ValueFromPipelineByPropertyName = $True
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("ComputerAllowedToAuthenticateTo", [System.String], $attributes)
        $parameters.Add("ComputerAllowedToAuthenticateTo", $parameter)

        # ComputerTGTLifetimeMins
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ValidateRangeAttribute(45, 2147483647)
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ValueFromPipelineByPropertyName = $True
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("ComputerTGTLifetimeMins", [System.Nullable`1[System.Int32]], $attributes)
        $parameters.Add("ComputerTGTLifetimeMins", $parameter)

        # Credential
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.CredentialAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Credential", [System.Management.Automation.PSCredential], $attributes)
        $parameters.Add("Credential", $parameter)

        # Description
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ValueFromPipelineByPropertyName = $True
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Description", [System.String], $attributes)
        $parameters.Add("Description", $parameter)

        # Enforce
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ValueFromPipelineByPropertyName = $True
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Enforce", [System.Management.Automation.SwitchParameter], $attributes)
        $parameters.Add("Enforce", $parameter)

        # Instance
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Instance", [System.Object], $attributes)
        $parameters.Add("Instance", $parameter)

        # Name
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.Position = 1
        $attribute.Mandatory = $True
        $attribute.ValueFromPipelineByPropertyName = $True
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Name", [System.String], $attributes)
        $parameters.Add("Name", $parameter)

        # OtherAttributes
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("OtherAttributes", [System.Collections.Hashtable], $attributes)
        $parameters.Add("OtherAttributes", $parameter)

        # PassThru
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("PassThru", [System.Management.Automation.SwitchParameter], $attributes)
        $parameters.Add("PassThru", $parameter)

        # ProtectedFromAccidentalDeletion
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ValueFromPipelineByPropertyName = $True
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("ProtectedFromAccidentalDeletion", [System.Nullable`1[System.Boolean]], $attributes)
        $parameters.Add("ProtectedFromAccidentalDeletion", $parameter)

        # RollingNTLMSecret
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ValueFromPipelineByPropertyName = $True
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("RollingNTLMSecret", [System.Object], $attributes)
        $parameters.Add("RollingNTLMSecret", $parameter)

        # Server
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Server", [System.String], $attributes)
        $parameters.Add("Server", $parameter)

        # ServiceAllowedToAuthenticateFrom
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ValidateNotNullAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ValueFromPipelineByPropertyName = $True
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("ServiceAllowedToAuthenticateFrom", [System.String], $attributes)
        $parameters.Add("ServiceAllowedToAuthenticateFrom", $parameter)

        # ServiceAllowedToAuthenticateTo
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ValidateNotNullAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ValueFromPipelineByPropertyName = $True
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("ServiceAllowedToAuthenticateTo", [System.String], $attributes)
        $parameters.Add("ServiceAllowedToAuthenticateTo", $parameter)

        # ServiceAllowedNTLMNetworkAuthentication
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ValueFromPipelineByPropertyName = $True
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("ServiceAllowedNTLMNetworkAuthentication", [System.Management.Automation.SwitchParameter], $attributes)
        $parameters.Add("ServiceAllowedNTLMNetworkAuthentication", $parameter)

        # ServiceTGTLifetimeMins
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ValueFromPipelineByPropertyName = $True
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateRangeAttribute(45, 2147483647)
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("ServiceTGTLifetimeMins", [System.Nullable`1[System.Int32]], $attributes)
        $parameters.Add("ServiceTGTLifetimeMins", $parameter)

        # UserAllowedToAuthenticateFrom
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ValueFromPipelineByPropertyName = $True
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("UserAllowedToAuthenticateFrom", [System.String], $attributes)
        $parameters.Add("UserAllowedToAuthenticateFrom", $parameter)

        # UserAllowedToAuthenticateTo
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ValidateNotNullAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ValueFromPipelineByPropertyName = $True
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("UserAllowedToAuthenticateTo", [System.String], $attributes)
        $parameters.Add("UserAllowedToAuthenticateTo", $parameter)

        # UserAllowedNTLMNetworkAuthentication
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ValueFromPipelineByPropertyName = $True
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("UserAllowedNTLMNetworkAuthentication", [System.Management.Automation.SwitchParameter], $attributes)
        $parameters.Add("UserAllowedNTLMNetworkAuthentication", $parameter)

        # UserTGTLifetimeMins
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ValueFromPipelineByPropertyName = $True
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateRangeAttribute(45, 2147483647)
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("UserTGTLifetimeMins", [System.Nullable`1[System.Int32]], $attributes)
        $parameters.Add("UserTGTLifetimeMins", $parameter)

        return $parameters
    }

    end {
        throw '{0}: StubNotImplemented' -f $MyInvocation.MyCommand
    }
}

function New-ADAuthenticationPolicySilo {
    <#
    .SYNOPSIS
        New-ADAuthenticationPolicySilo [-Name] <string> [-WhatIf] [-Confirm] [-AuthType <ADAuthType>] [-ComputerAuthenticationPolicy <ADAuthenticationPolicy>] [-Credential <pscredential>] [-Description <string>] [-Enforce] [-Instance <ADAuthenticationPolicySilo>] [-OtherAttributes <hashtable>] [-PassThru] [-ProtectedFromAccidentalDeletion <bool>] [-Server <string>] [-ServiceAuthenticationPolicy <ADAuthenticationPolicy>] [-UserAuthenticationPolicy <ADAuthenticationPolicy>] [<CommonParameters>]
    #>


    [CmdletBinding(SupportsShouldProcess=$true, ConfirmImpact='Medium', HelpUri='http://go.microsoft.com/fwlink/?LinkId=301411')]
    param ( )

    dynamicparam {
        $parameters = New-Object System.Management.Automation.RuntimeDefinedParameterDictionary

        # AuthType
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("AuthType", [System.Object], $attributes)
        $parameters.Add("AuthType", $parameter)

        # ComputerAuthenticationPolicy
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ValueFromPipelineByPropertyName = $True
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("ComputerAuthenticationPolicy", [System.Object], $attributes)
        $parameters.Add("ComputerAuthenticationPolicy", $parameter)

        # Credential
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.CredentialAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Credential", [System.Management.Automation.PSCredential], $attributes)
        $parameters.Add("Credential", $parameter)

        # Description
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ValueFromPipelineByPropertyName = $True
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Description", [System.String], $attributes)
        $parameters.Add("Description", $parameter)

        # Enforce
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ValueFromPipelineByPropertyName = $True
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Enforce", [System.Management.Automation.SwitchParameter], $attributes)
        $parameters.Add("Enforce", $parameter)

        # Instance
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Instance", [System.Object], $attributes)
        $parameters.Add("Instance", $parameter)

        # Name
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.Position = 1
        $attribute.Mandatory = $True
        $attribute.ValueFromPipelineByPropertyName = $True
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Name", [System.String], $attributes)
        $parameters.Add("Name", $parameter)

        # OtherAttributes
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("OtherAttributes", [System.Collections.Hashtable], $attributes)
        $parameters.Add("OtherAttributes", $parameter)

        # PassThru
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("PassThru", [System.Management.Automation.SwitchParameter], $attributes)
        $parameters.Add("PassThru", $parameter)

        # ProtectedFromAccidentalDeletion
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ValueFromPipelineByPropertyName = $True
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("ProtectedFromAccidentalDeletion", [System.Nullable`1[System.Boolean]], $attributes)
        $parameters.Add("ProtectedFromAccidentalDeletion", $parameter)

        # Server
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Server", [System.String], $attributes)
        $parameters.Add("Server", $parameter)

        # ServiceAuthenticationPolicy
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ValueFromPipelineByPropertyName = $True
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("ServiceAuthenticationPolicy", [System.Object], $attributes)
        $parameters.Add("ServiceAuthenticationPolicy", $parameter)

        # UserAuthenticationPolicy
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ValueFromPipelineByPropertyName = $True
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("UserAuthenticationPolicy", [System.Object], $attributes)
        $parameters.Add("UserAuthenticationPolicy", $parameter)

        return $parameters
    }

    end {
        throw '{0}: StubNotImplemented' -f $MyInvocation.MyCommand
    }
}

function New-ADCentralAccessPolicy {
    <#
    .SYNOPSIS
        New-ADCentralAccessPolicy [-Name] <string> [-WhatIf] [-Confirm] [-AuthType <ADAuthType>] [-Credential <pscredential>] [-Description <string>] [-Instance <ADCentralAccessPolicy>] [-PassThru] [-ProtectedFromAccidentalDeletion <bool>] [-Server <string>] [<CommonParameters>]
    #>


    [CmdletBinding(SupportsShouldProcess=$true, ConfirmImpact='Medium', HelpUri='http://go.microsoft.com/fwlink/?LinkId=216373')]
    param ( )

    dynamicparam {
        $parameters = New-Object System.Management.Automation.RuntimeDefinedParameterDictionary

        # AuthType
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("AuthType", [System.Object], $attributes)
        $parameters.Add("AuthType", $parameter)

        # Credential
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.CredentialAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Credential", [System.Management.Automation.PSCredential], $attributes)
        $parameters.Add("Credential", $parameter)

        # Description
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ValueFromPipelineByPropertyName = $True
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Description", [System.String], $attributes)
        $parameters.Add("Description", $parameter)

        # Instance
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ValidateNotNullAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Instance", [System.Object], $attributes)
        $parameters.Add("Instance", $parameter)

        # Name
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.Position = 1
        $attribute.Mandatory = $True
        $attribute.ValueFromPipelineByPropertyName = $True
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Name", [System.String], $attributes)
        $parameters.Add("Name", $parameter)

        # PassThru
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("PassThru", [System.Management.Automation.SwitchParameter], $attributes)
        $parameters.Add("PassThru", $parameter)

        # ProtectedFromAccidentalDeletion
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ValueFromPipelineByPropertyName = $True
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("ProtectedFromAccidentalDeletion", [System.Nullable`1[System.Boolean]], $attributes)
        $parameters.Add("ProtectedFromAccidentalDeletion", $parameter)

        # Server
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Server", [System.String], $attributes)
        $parameters.Add("Server", $parameter)

        return $parameters
    }

    end {
        throw '{0}: StubNotImplemented' -f $MyInvocation.MyCommand
    }
}

function New-ADCentralAccessRule {
    <#
    .SYNOPSIS
        New-ADCentralAccessRule [-Name] <string> [-WhatIf] [-Confirm] [-AuthType <ADAuthType>] [-Credential <pscredential>] [-CurrentAcl <string>] [-Description <string>] [-Instance <ADCentralAccessRule>] [-PassThru] [-ProposedAcl <string>] [-ProtectedFromAccidentalDeletion <bool>] [-ResourceCondition <string>] [-Server <string>] [<CommonParameters>]
    #>


    [CmdletBinding(SupportsShouldProcess=$true, ConfirmImpact='Medium', HelpUri='http://go.microsoft.com/fwlink/?LinkId=219593')]
    param ( )

    dynamicparam {
        $parameters = New-Object System.Management.Automation.RuntimeDefinedParameterDictionary

        # AuthType
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("AuthType", [System.Object], $attributes)
        $parameters.Add("AuthType", $parameter)

        # Credential
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.CredentialAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Credential", [System.Management.Automation.PSCredential], $attributes)
        $parameters.Add("Credential", $parameter)

        # CurrentAcl
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ValueFromPipelineByPropertyName = $True
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("CurrentAcl", [System.String], $attributes)
        $parameters.Add("CurrentAcl", $parameter)

        # Description
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ValueFromPipelineByPropertyName = $True
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Description", [System.String], $attributes)
        $parameters.Add("Description", $parameter)

        # Instance
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Instance", [System.Object], $attributes)
        $parameters.Add("Instance", $parameter)

        # Name
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.Position = 1
        $attribute.Mandatory = $True
        $attribute.ValueFromPipelineByPropertyName = $True
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Name", [System.String], $attributes)
        $parameters.Add("Name", $parameter)

        # PassThru
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ValidateNotNullAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("PassThru", [System.Management.Automation.SwitchParameter], $attributes)
        $parameters.Add("PassThru", $parameter)

        # ProposedAcl
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ValueFromPipelineByPropertyName = $True
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("ProposedAcl", [System.String], $attributes)
        $parameters.Add("ProposedAcl", $parameter)

        # ProtectedFromAccidentalDeletion
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ValueFromPipelineByPropertyName = $True
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("ProtectedFromAccidentalDeletion", [System.Nullable`1[System.Boolean]], $attributes)
        $parameters.Add("ProtectedFromAccidentalDeletion", $parameter)

        # ResourceCondition
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ValueFromPipelineByPropertyName = $True
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("ResourceCondition", [System.String], $attributes)
        $parameters.Add("ResourceCondition", $parameter)

        # Server
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Server", [System.String], $attributes)
        $parameters.Add("Server", $parameter)

        return $parameters
    }

    end {
        throw '{0}: StubNotImplemented' -f $MyInvocation.MyCommand
    }
}

function New-ADClaimTransformPolicy {
    <#
    .SYNOPSIS
        New-ADClaimTransformPolicy [-Name] <string> -AllowAll [-WhatIf] [-Confirm] [-AuthType <ADAuthType>] [-Credential <pscredential>] [-Description <string>] [-PassThru] [-ProtectedFromAccidentalDeletion <bool>] [-Server <string>] [<CommonParameters>]
 
New-ADClaimTransformPolicy [-Name] <string> -AllowAllExcept <ADClaimType[]> [-WhatIf] [-Confirm] [-AuthType <ADAuthType>] [-Credential <pscredential>] [-Description <string>] [-PassThru] [-ProtectedFromAccidentalDeletion <bool>] [-Server <string>] [<CommonParameters>]
 
New-ADClaimTransformPolicy [-Name] <string> -DenyAll [-WhatIf] [-Confirm] [-AuthType <ADAuthType>] [-Credential <pscredential>] [-Description <string>] [-PassThru] [-ProtectedFromAccidentalDeletion <bool>] [-Server <string>] [<CommonParameters>]
 
New-ADClaimTransformPolicy [-Name] <string> -DenyAllExcept <ADClaimType[]> [-WhatIf] [-Confirm] [-AuthType <ADAuthType>] [-Credential <pscredential>] [-Description <string>] [-PassThru] [-ProtectedFromAccidentalDeletion <bool>] [-Server <string>] [<CommonParameters>]
 
New-ADClaimTransformPolicy [-Name] <string> -Rule <string> [-WhatIf] [-Confirm] [-AuthType <ADAuthType>] [-Credential <pscredential>] [-Description <string>] [-Instance <ADClaimTransformPolicy>] [-PassThru] [-ProtectedFromAccidentalDeletion <bool>] [-Server <string>] [<CommonParameters>]
    #>


    [CmdletBinding(SupportsShouldProcess=$true, ConfirmImpact='Medium', HelpUri='http://go.microsoft.com/fwlink/?LinkId=216374')]
    param ( )

    dynamicparam {
        $parameters = New-Object System.Management.Automation.RuntimeDefinedParameterDictionary

        # AllowAll
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ValidateNotNullAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "AllowAll"
        $attribute.Mandatory = $True
        $attribute.ValueFromPipelineByPropertyName = $True
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateSetAttribute('true')
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("AllowAll", [System.Management.Automation.SwitchParameter], $attributes)
        $parameters.Add("AllowAll", $parameter)

        # AllowAllExcept
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "AllowAllExcept"
        $attribute.Mandatory = $True
        $attribute.ValueFromPipelineByPropertyName = $True
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("AllowAllExcept", [System.Object[]], $attributes)
        $parameters.Add("AllowAllExcept", $parameter)

        # AuthType
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("AuthType", [System.Object], $attributes)
        $parameters.Add("AuthType", $parameter)

        # Credential
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.CredentialAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Credential", [System.Management.Automation.PSCredential], $attributes)
        $parameters.Add("Credential", $parameter)

        # DenyAll
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "DenyAll"
        $attribute.Mandatory = $True
        $attribute.ValueFromPipelineByPropertyName = $True
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateSetAttribute('true')
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("DenyAll", [System.Management.Automation.SwitchParameter], $attributes)
        $parameters.Add("DenyAll", $parameter)

        # DenyAllExcept
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "DenyAllExcept"
        $attribute.Mandatory = $True
        $attribute.ValueFromPipelineByPropertyName = $True
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("DenyAllExcept", [System.Object[]], $attributes)
        $parameters.Add("DenyAllExcept", $parameter)

        # Description
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Description", [System.String], $attributes)
        $parameters.Add("Description", $parameter)

        # Instance
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Identity"
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Instance", [System.Object], $attributes)
        $parameters.Add("Instance", $parameter)

        # Name
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ValidateNotNullAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.Position = 0
        $attribute.Mandatory = $True
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Name", [System.String], $attributes)
        $parameters.Add("Name", $parameter)

        # PassThru
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ValidateNotNullAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("PassThru", [System.Management.Automation.SwitchParameter], $attributes)
        $parameters.Add("PassThru", $parameter)

        # ProtectedFromAccidentalDeletion
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("ProtectedFromAccidentalDeletion", [System.Nullable`1[System.Boolean]], $attributes)
        $parameters.Add("ProtectedFromAccidentalDeletion", $parameter)

        # Rule
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Identity"
        $attribute.Mandatory = $True
        $attribute.ValueFromPipelineByPropertyName = $True
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Rule", [System.String], $attributes)
        $parameters.Add("Rule", $parameter)

        # Server
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Server", [System.String], $attributes)
        $parameters.Add("Server", $parameter)

        return $parameters
    }

    end {
        throw '{0}: StubNotImplemented' -f $MyInvocation.MyCommand
    }
}

function New-ADClaimType {
    <#
    .SYNOPSIS
        New-ADClaimType [-DisplayName] <string> -SourceAttribute <string> [-WhatIf] [-Confirm] [-AppliesToClasses <string[]>] [-AuthType <ADAuthType>] [-Credential <pscredential>] [-Description <string>] [-Enabled <bool>] [-ID <string>] [-Instance <ADClaimType>] [-IsSingleValued <bool>] [-OtherAttributes <hashtable>] [-PassThru] [-ProtectedFromAccidentalDeletion <bool>] [-RestrictValues <bool>] [-Server <string>] [-SuggestedValues <ADSuggestedValueEntry[]>] [<CommonParameters>]
 
New-ADClaimType [-DisplayName] <string> -SourceOID <string> [-WhatIf] [-Confirm] [-AppliesToClasses <string[]>] [-AuthType <ADAuthType>] [-Credential <pscredential>] [-Description <string>] [-Enabled <bool>] [-ID <string>] [-Instance <ADClaimType>] [-IsSingleValued <bool>] [-OtherAttributes <hashtable>] [-PassThru] [-ProtectedFromAccidentalDeletion <bool>] [-RestrictValues <bool>] [-Server <string>] [<CommonParameters>]
 
New-ADClaimType [-DisplayName] <string> -SourceTransformPolicy -ValueType <ADClaimValueType> [-WhatIf] [-Confirm] [-AppliesToClasses <string[]>] [-AuthType <ADAuthType>] [-Credential <pscredential>] [-Description <string>] [-Enabled <bool>] [-ID <string>] [-Instance <ADClaimType>] [-IsSingleValued <bool>] [-OtherAttributes <hashtable>] [-PassThru] [-ProtectedFromAccidentalDeletion <bool>] [-RestrictValues <bool>] [-Server <string>] [-SuggestedValues <ADSuggestedValueEntry[]>] [<CommonParameters>]
    #>


    [CmdletBinding(DefaultParameterSetName='SourceAttribute', SupportsShouldProcess=$true, ConfirmImpact='Medium', HelpUri='http://go.microsoft.com/fwlink/?LinkId=216375')]
    param ( )

    dynamicparam {
        $parameters = New-Object System.Management.Automation.RuntimeDefinedParameterDictionary

        # AppliesToClasses
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ValueFromPipelineByPropertyName = $True
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("AppliesToClasses", [System.String[]], $attributes)
        $parameters.Add("AppliesToClasses", $parameter)

        # AuthType
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("AuthType", [System.Object], $attributes)
        $parameters.Add("AuthType", $parameter)

        # Credential
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.CredentialAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Credential", [System.Management.Automation.PSCredential], $attributes)
        $parameters.Add("Credential", $parameter)

        # Description
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ValueFromPipelineByPropertyName = $True
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Description", [System.String], $attributes)
        $parameters.Add("Description", $parameter)

        # DisplayName
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.Position = 0
        $attribute.Mandatory = $True
        $attribute.ValueFromPipelineByPropertyName = $True
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("DisplayName", [System.String], $attributes)
        $parameters.Add("DisplayName", $parameter)

        # Enabled
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ValueFromPipelineByPropertyName = $True
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Enabled", [System.Boolean], $attributes)
        $parameters.Add("Enabled", $parameter)

        # ID
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ValueFromPipelineByPropertyName = $True
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("ID", [System.String], $attributes)
        $parameters.Add("ID", $parameter)

        # Instance
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ValidateNotNullAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Instance", [System.Object], $attributes)
        $parameters.Add("Instance", $parameter)

        # IsSingleValued
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ValueFromPipelineByPropertyName = $True
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("IsSingleValued", [System.Boolean], $attributes)
        $parameters.Add("IsSingleValued", $parameter)

        # OtherAttributes
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("OtherAttributes", [System.Collections.Hashtable], $attributes)
        $parameters.Add("OtherAttributes", $parameter)

        # PassThru
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("PassThru", [System.Management.Automation.SwitchParameter], $attributes)
        $parameters.Add("PassThru", $parameter)

        # ProtectedFromAccidentalDeletion
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ValueFromPipelineByPropertyName = $True
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("ProtectedFromAccidentalDeletion", [System.Nullable`1[System.Boolean]], $attributes)
        $parameters.Add("ProtectedFromAccidentalDeletion", $parameter)

        # RestrictValues
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ValueFromPipelineByPropertyName = $True
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("RestrictValues", [System.Boolean], $attributes)
        $parameters.Add("RestrictValues", $parameter)

        # Server
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Server", [System.String], $attributes)
        $parameters.Add("Server", $parameter)

        # SourceAttribute
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "SourceAttribute"
        $attribute.Mandatory = $True
        $attribute.ValueFromPipelineByPropertyName = $True
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("SourceAttribute", [System.String], $attributes)
        $parameters.Add("SourceAttribute", $parameter)

        # SourceOID
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "SourceOID"
        $attribute.Mandatory = $True
        $attribute.ValueFromPipelineByPropertyName = $True
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("SourceOID", [System.String], $attributes)
        $parameters.Add("SourceOID", $parameter)

        # SourceTransformPolicy
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ValidateNotNullAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "SourceTransformPolicy"
        $attribute.Mandatory = $True
        $attribute.ValueFromPipelineByPropertyName = $True
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("SourceTransformPolicy", [System.Management.Automation.SwitchParameter], $attributes)
        $parameters.Add("SourceTransformPolicy", $parameter)

        # SuggestedValues
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "SourceAttribute"
        $attribute.ValueFromPipelineByPropertyName = $True
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "SourceTransformPolicy"
        $attribute.ValueFromPipelineByPropertyName = $True
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("SuggestedValues", [System.Object[]], $attributes)
        $parameters.Add("SuggestedValues", $parameter)

        # ValueType
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ValidateNotNullAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "SourceTransformPolicy"
        $attribute.Mandatory = $True
        $attribute.ValueFromPipelineByPropertyName = $True
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("ValueType", [System.Object], $attributes)
        $parameters.Add("ValueType", $parameter)

        return $parameters
    }

    end {
        throw '{0}: StubNotImplemented' -f $MyInvocation.MyCommand
    }
}

function New-ADComputer {
    <#
    .SYNOPSIS
        New-ADComputer [-Name] <string> [-WhatIf] [-Confirm] [-AccountExpirationDate <datetime>] [-AccountNotDelegated <bool>] [-AccountPassword <securestring>] [-AllowReversiblePasswordEncryption <bool>] [-AuthenticationPolicy <ADAuthenticationPolicy>] [-AuthenticationPolicySilo <ADAuthenticationPolicySilo>] [-AuthType <ADAuthType>] [-CannotChangePassword <bool>] [-Certificates <X509Certificate[]>] [-ChangePasswordAtLogon <bool>] [-CompoundIdentitySupported <bool>] [-Credential <pscredential>] [-Description <string>] [-DisplayName <string>] [-DNSHostName <string>] [-Enabled <bool>] [-HomePage <string>] [-Instance <ADComputer>] [-KerberosEncryptionType <ADKerberosEncryptionType>] [-Location <string>] [-ManagedBy <ADPrincipal>] [-OperatingSystem <string>] [-OperatingSystemHotfix <string>] [-OperatingSystemServicePack <string>] [-OperatingSystemVersion <string>] [-OtherAttributes <hashtable>] [-PassThru] [-PasswordNeverExpires <bool>] [-PasswordNotRequired <bool>] [-Path <string>] [-PrincipalsAllowedToDelegateToAccount <ADPrincipal[]>] [-SAMAccountName <string>] [-Server <string>] [-ServicePrincipalNames <string[]>] [-TrustedForDelegation <bool>] [-UserPrincipalName <string>] [<CommonParameters>]
    #>


    [CmdletBinding(SupportsShouldProcess=$true, ConfirmImpact='Medium', HelpUri='http://go.microsoft.com/fwlink/?LinkId=301399')]
    param ( )

    dynamicparam {
        $parameters = New-Object System.Management.Automation.RuntimeDefinedParameterDictionary

        # AccountExpirationDate
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ValueFromPipelineByPropertyName = $True
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("AccountExpirationDate", [System.Nullable`1[System.DateTime]], $attributes)
        $parameters.Add("AccountExpirationDate", $parameter)

        # AccountNotDelegated
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ValueFromPipelineByPropertyName = $True
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("AccountNotDelegated", [System.Nullable`1[System.Boolean]], $attributes)
        $parameters.Add("AccountNotDelegated", $parameter)

        # AccountPassword
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ValueFromPipelineByPropertyName = $True
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("AccountPassword", [System.Security.SecureString], $attributes)
        $parameters.Add("AccountPassword", $parameter)

        # AllowReversiblePasswordEncryption
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ValueFromPipelineByPropertyName = $True
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("AllowReversiblePasswordEncryption", [System.Nullable`1[System.Boolean]], $attributes)
        $parameters.Add("AllowReversiblePasswordEncryption", $parameter)

        # AuthenticationPolicy
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ValueFromPipelineByPropertyName = $True
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("AuthenticationPolicy", [System.Object], $attributes)
        $parameters.Add("AuthenticationPolicy", $parameter)

        # AuthenticationPolicySilo
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ValueFromPipelineByPropertyName = $True
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("AuthenticationPolicySilo", [System.Object], $attributes)
        $parameters.Add("AuthenticationPolicySilo", $parameter)

        # AuthType
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("AuthType", [System.Object], $attributes)
        $parameters.Add("AuthType", $parameter)

        # CannotChangePassword
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ValueFromPipelineByPropertyName = $True
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("CannotChangePassword", [System.Nullable`1[System.Boolean]], $attributes)
        $parameters.Add("CannotChangePassword", $parameter)

        # Certificates
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ValueFromPipelineByPropertyName = $True
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Certificates", [System.Security.Cryptography.X509Certificates.X509Certificate[]], $attributes)
        $parameters.Add("Certificates", $parameter)

        # ChangePasswordAtLogon
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ValueFromPipelineByPropertyName = $True
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("ChangePasswordAtLogon", [System.Nullable`1[System.Boolean]], $attributes)
        $parameters.Add("ChangePasswordAtLogon", $parameter)

        # CompoundIdentitySupported
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ValueFromPipelineByPropertyName = $True
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("CompoundIdentitySupported", [System.Nullable`1[System.Boolean]], $attributes)
        $parameters.Add("CompoundIdentitySupported", $parameter)

        # Credential
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.CredentialAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Credential", [System.Management.Automation.PSCredential], $attributes)
        $parameters.Add("Credential", $parameter)

        # Description
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ValueFromPipelineByPropertyName = $True
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Description", [System.String], $attributes)
        $parameters.Add("Description", $parameter)

        # DisplayName
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ValueFromPipelineByPropertyName = $True
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("DisplayName", [System.String], $attributes)
        $parameters.Add("DisplayName", $parameter)

        # DNSHostName
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ValueFromPipelineByPropertyName = $True
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("DNSHostName", [System.String], $attributes)
        $parameters.Add("DNSHostName", $parameter)

        # Enabled
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ValueFromPipelineByPropertyName = $True
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Enabled", [System.Nullable`1[System.Boolean]], $attributes)
        $parameters.Add("Enabled", $parameter)

        # HomePage
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ValueFromPipelineByPropertyName = $True
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("HomePage", [System.String], $attributes)
        $parameters.Add("HomePage", $parameter)

        # Instance
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Instance", [System.Object], $attributes)
        $parameters.Add("Instance", $parameter)

        # KerberosEncryptionType
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ValidateNotNullAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ValueFromPipelineByPropertyName = $True
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("KerberosEncryptionType", [System.Object], $attributes)
        $parameters.Add("KerberosEncryptionType", $parameter)

        # Location
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ValueFromPipelineByPropertyName = $True
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Location", [System.String], $attributes)
        $parameters.Add("Location", $parameter)

        # ManagedBy
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ValueFromPipelineByPropertyName = $True
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("ManagedBy", [System.Object], $attributes)
        $parameters.Add("ManagedBy", $parameter)

        # Name
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.Position = 1
        $attribute.Mandatory = $True
        $attribute.ValueFromPipelineByPropertyName = $True
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Name", [System.String], $attributes)
        $parameters.Add("Name", $parameter)

        # OperatingSystem
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ValueFromPipelineByPropertyName = $True
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("OperatingSystem", [System.String], $attributes)
        $parameters.Add("OperatingSystem", $parameter)

        # OperatingSystemHotfix
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ValueFromPipelineByPropertyName = $True
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("OperatingSystemHotfix", [System.String], $attributes)
        $parameters.Add("OperatingSystemHotfix", $parameter)

        # OperatingSystemServicePack
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ValueFromPipelineByPropertyName = $True
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("OperatingSystemServicePack", [System.String], $attributes)
        $parameters.Add("OperatingSystemServicePack", $parameter)

        # OperatingSystemVersion
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ValueFromPipelineByPropertyName = $True
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("OperatingSystemVersion", [System.String], $attributes)
        $parameters.Add("OperatingSystemVersion", $parameter)

        # OtherAttributes
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("OtherAttributes", [System.Collections.Hashtable], $attributes)
        $parameters.Add("OtherAttributes", $parameter)

        # PassThru
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ValidateNotNullAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("PassThru", [System.Management.Automation.SwitchParameter], $attributes)
        $parameters.Add("PassThru", $parameter)

        # PasswordNeverExpires
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ValueFromPipelineByPropertyName = $True
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("PasswordNeverExpires", [System.Nullable`1[System.Boolean]], $attributes)
        $parameters.Add("PasswordNeverExpires", $parameter)

        # PasswordNotRequired
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ValueFromPipelineByPropertyName = $True
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("PasswordNotRequired", [System.Nullable`1[System.Boolean]], $attributes)
        $parameters.Add("PasswordNotRequired", $parameter)

        # Path
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ValueFromPipelineByPropertyName = $True
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Path", [System.String], $attributes)
        $parameters.Add("Path", $parameter)

        # PrincipalsAllowedToDelegateToAccount
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ValidateNotNullAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ValueFromPipelineByPropertyName = $True
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("PrincipalsAllowedToDelegateToAccount", [System.Object[]], $attributes)
        $parameters.Add("PrincipalsAllowedToDelegateToAccount", $parameter)

        # SAMAccountName
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ValueFromPipelineByPropertyName = $True
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("SAMAccountName", [System.String], $attributes)
        $parameters.Add("SAMAccountName", $parameter)

        # Server
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Server", [System.String], $attributes)
        $parameters.Add("Server", $parameter)

        # ServicePrincipalNames
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ValueFromPipelineByPropertyName = $True
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("ServicePrincipalNames", [System.String[]], $attributes)
        $parameters.Add("ServicePrincipalNames", $parameter)

        # TrustedForDelegation
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ValueFromPipelineByPropertyName = $True
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("TrustedForDelegation", [System.Nullable`1[System.Boolean]], $attributes)
        $parameters.Add("TrustedForDelegation", $parameter)

        # UserPrincipalName
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ValueFromPipelineByPropertyName = $True
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("UserPrincipalName", [System.String], $attributes)
        $parameters.Add("UserPrincipalName", $parameter)

        return $parameters
    }

    end {
        throw '{0}: StubNotImplemented' -f $MyInvocation.MyCommand
    }
}

function New-ADDCCloneConfigFile {
    <#
    .SYNOPSIS
        New-ADDCCloneConfigFile [-CloneComputerName <string>] [-IPv4DNSResolver <string[]>] [-Path <string>] [-SiteName <string>] [<CommonParameters>]
 
New-ADDCCloneConfigFile -Offline -Path <string> [-AlternateWINSServer <string>] [-CloneComputerName <string>] [-IPv4Address <string>] [-IPv4DefaultGateway <string>] [-IPv4DNSResolver <string[]>] [-IPv4SubnetMask <string>] [-IPv6DNSResolver <string[]>] [-PreferredWINSServer <string>] [-SiteName <string>] [-Static] [<CommonParameters>]
 
New-ADDCCloneConfigFile -IPv4Address <string> -IPv4DNSResolver <string[]> -IPv4SubnetMask <string> -Static [-AlternateWINSServer <string>] [-CloneComputerName <string>] [-IPv4DefaultGateway <string>] [-Path <string>] [-PreferredWINSServer <string>] [-SiteName <string>] [<CommonParameters>]
 
New-ADDCCloneConfigFile -IPv6DNSResolver <string[]> -Static [-CloneComputerName <string>] [-Path <string>] [-SiteName <string>] [<CommonParameters>]
 
New-ADDCCloneConfigFile [-CloneComputerName <string>] [-IPv6DNSResolver <string[]>] [-Path <string>] [-SiteName <string>] [<CommonParameters>]
    #>


    [CmdletBinding(DefaultParameterSetName='IPv4DynamicSettings', HelpUri='http://go.microsoft.com/fwlink/?LinkId=246280')]
    param ( )

    dynamicparam {
        $parameters = New-Object System.Management.Automation.RuntimeDefinedParameterDictionary

        # AlternateWINSServer
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "OfflineExecution"
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "IPv4StaticSettings"
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("AlternateWINSServer", [System.String], $attributes)
        $parameters.Add("AlternateWINSServer", $parameter)

        # CloneComputerName
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.AliasAttribute('cn')
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("CloneComputerName", [System.String], $attributes)
        $parameters.Add("CloneComputerName", $parameter)

        # IPv4Address
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "OfflineExecution"
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "IPv4StaticSettings"
        $attribute.Mandatory = $True
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("IPv4Address", [System.String], $attributes)
        $parameters.Add("IPv4Address", $parameter)

        # IPv4DefaultGateway
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "OfflineExecution"
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "IPv4StaticSettings"
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("IPv4DefaultGateway", [System.String], $attributes)
        $parameters.Add("IPv4DefaultGateway", $parameter)

        # IPv4DNSResolver
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "OfflineExecution"
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "IPv4StaticSettings"
        $attribute.Mandatory = $True
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "IPv4DynamicSettings"
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("IPv4DNSResolver", [System.String[]], $attributes)
        $parameters.Add("IPv4DNSResolver", $parameter)

        # IPv4SubnetMask
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "OfflineExecution"
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "IPv4StaticSettings"
        $attribute.Mandatory = $True
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("IPv4SubnetMask", [System.String], $attributes)
        $parameters.Add("IPv4SubnetMask", $parameter)

        # IPv6DNSResolver
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "OfflineExecution"
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "IPv6StaticSettings"
        $attribute.Mandatory = $True
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "IPv6DynamicSettings"
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("IPv6DNSResolver", [System.String[]], $attributes)
        $parameters.Add("IPv6DNSResolver", $parameter)

        # Offline
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "OfflineExecution"
        $attribute.Mandatory = $True
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Offline", [System.Management.Automation.SwitchParameter], $attributes)
        $parameters.Add("Offline", $parameter)

        # Path
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "IPv4StaticSettings"
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "IPv6DynamicSettings"
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "IPv4DynamicSettings"
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "OfflineExecution"
        $attribute.Mandatory = $True
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "IPv6StaticSettings"
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Path", [System.String], $attributes)
        $parameters.Add("Path", $parameter)

        # PreferredWINSServer
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "OfflineExecution"
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "IPv4StaticSettings"
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("PreferredWINSServer", [System.String], $attributes)
        $parameters.Add("PreferredWINSServer", $parameter)

        # SiteName
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("SiteName", [System.String], $attributes)
        $parameters.Add("SiteName", $parameter)

        # Static
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "IPv6StaticSettings"
        $attribute.Mandatory = $True
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "OfflineExecution"
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "IPv4StaticSettings"
        $attribute.Mandatory = $True
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Static", [System.Management.Automation.SwitchParameter], $attributes)
        $parameters.Add("Static", $parameter)

        return $parameters
    }

    end {
        throw '{0}: StubNotImplemented' -f $MyInvocation.MyCommand
    }
}

function New-ADFineGrainedPasswordPolicy {
    <#
    .SYNOPSIS
        New-ADFineGrainedPasswordPolicy [-Name] <string> [-Precedence] <int> [-WhatIf] [-Confirm] [-AuthType <ADAuthType>] [-ComplexityEnabled <bool>] [-Credential <pscredential>] [-Description <string>] [-DisplayName <string>] [-Instance <ADFineGrainedPasswordPolicy>] [-LockoutDuration <timespan>] [-LockoutObservationWindow <timespan>] [-LockoutThreshold <int>] [-MaxPasswordAge <timespan>] [-MinPasswordAge <timespan>] [-MinPasswordLength <int>] [-OtherAttributes <hashtable>] [-PassThru] [-PasswordHistoryCount <int>] [-ProtectedFromAccidentalDeletion <bool>] [-ReversibleEncryptionEnabled <bool>] [-Server <string>] [<CommonParameters>]
    #>


    [CmdletBinding(SupportsShouldProcess=$true, ConfirmImpact='Medium', HelpUri='http://go.microsoft.com/fwlink/?LinkId=219327')]
    param ( )

    dynamicparam {
        $parameters = New-Object System.Management.Automation.RuntimeDefinedParameterDictionary

        # AuthType
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("AuthType", [System.Object], $attributes)
        $parameters.Add("AuthType", $parameter)

        # ComplexityEnabled
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ValueFromPipelineByPropertyName = $True
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("ComplexityEnabled", [System.Nullable`1[System.Boolean]], $attributes)
        $parameters.Add("ComplexityEnabled", $parameter)

        # Credential
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.CredentialAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Credential", [System.Management.Automation.PSCredential], $attributes)
        $parameters.Add("Credential", $parameter)

        # Description
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ValueFromPipelineByPropertyName = $True
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Description", [System.String], $attributes)
        $parameters.Add("Description", $parameter)

        # DisplayName
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ValueFromPipelineByPropertyName = $True
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("DisplayName", [System.String], $attributes)
        $parameters.Add("DisplayName", $parameter)

        # Instance
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Instance", [System.Object], $attributes)
        $parameters.Add("Instance", $parameter)

        # LockoutDuration
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ValueFromPipelineByPropertyName = $True
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("LockoutDuration", [System.Nullable`1[System.TimeSpan]], $attributes)
        $parameters.Add("LockoutDuration", $parameter)

        # LockoutObservationWindow
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ValueFromPipelineByPropertyName = $True
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("LockoutObservationWindow", [System.Nullable`1[System.TimeSpan]], $attributes)
        $parameters.Add("LockoutObservationWindow", $parameter)

        # LockoutThreshold
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ValueFromPipelineByPropertyName = $True
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("LockoutThreshold", [System.Nullable`1[System.Int32]], $attributes)
        $parameters.Add("LockoutThreshold", $parameter)

        # MaxPasswordAge
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ValueFromPipelineByPropertyName = $True
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("MaxPasswordAge", [System.Nullable`1[System.TimeSpan]], $attributes)
        $parameters.Add("MaxPasswordAge", $parameter)

        # MinPasswordAge
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ValueFromPipelineByPropertyName = $True
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("MinPasswordAge", [System.Nullable`1[System.TimeSpan]], $attributes)
        $parameters.Add("MinPasswordAge", $parameter)

        # MinPasswordLength
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ValueFromPipelineByPropertyName = $True
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("MinPasswordLength", [System.Nullable`1[System.Int32]], $attributes)
        $parameters.Add("MinPasswordLength", $parameter)

        # Name
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.Position = 0
        $attribute.Mandatory = $True
        $attribute.ValueFromPipelineByPropertyName = $True
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Name", [System.String], $attributes)
        $parameters.Add("Name", $parameter)

        # OtherAttributes
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("OtherAttributes", [System.Collections.Hashtable], $attributes)
        $parameters.Add("OtherAttributes", $parameter)

        # PassThru
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ValidateNotNullAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("PassThru", [System.Management.Automation.SwitchParameter], $attributes)
        $parameters.Add("PassThru", $parameter)

        # PasswordHistoryCount
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ValueFromPipelineByPropertyName = $True
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("PasswordHistoryCount", [System.Nullable`1[System.Int32]], $attributes)
        $parameters.Add("PasswordHistoryCount", $parameter)

        # Precedence
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.Position = 1
        $attribute.Mandatory = $True
        $attribute.ValueFromPipelineByPropertyName = $True
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Precedence", [System.Nullable`1[System.Int32]], $attributes)
        $parameters.Add("Precedence", $parameter)

        # ProtectedFromAccidentalDeletion
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ValueFromPipelineByPropertyName = $True
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("ProtectedFromAccidentalDeletion", [System.Nullable`1[System.Boolean]], $attributes)
        $parameters.Add("ProtectedFromAccidentalDeletion", $parameter)

        # ReversibleEncryptionEnabled
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ValueFromPipelineByPropertyName = $True
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("ReversibleEncryptionEnabled", [System.Nullable`1[System.Boolean]], $attributes)
        $parameters.Add("ReversibleEncryptionEnabled", $parameter)

        # Server
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Server", [System.String], $attributes)
        $parameters.Add("Server", $parameter)

        return $parameters
    }

    end {
        throw '{0}: StubNotImplemented' -f $MyInvocation.MyCommand
    }
}

function New-ADGroup {
    <#
    .SYNOPSIS
        New-ADGroup [-Name] <string> [-GroupScope] <ADGroupScope> [-WhatIf] [-Confirm] [-AuthType <ADAuthType>] [-Credential <pscredential>] [-Description <string>] [-DisplayName <string>] [-GroupCategory <ADGroupCategory>] [-HomePage <string>] [-Instance <ADGroup>] [-ManagedBy <ADPrincipal>] [-OtherAttributes <hashtable>] [-PassThru] [-Path <string>] [-SamAccountName <string>] [-Server <string>] [<CommonParameters>]
    #>


    [CmdletBinding(SupportsShouldProcess=$true, ConfirmImpact='Medium', HelpUri='http://go.microsoft.com/fwlink/?LinkId=219326')]
    param ( )

    dynamicparam {
        $parameters = New-Object System.Management.Automation.RuntimeDefinedParameterDictionary

        # AuthType
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("AuthType", [System.Object], $attributes)
        $parameters.Add("AuthType", $parameter)

        # Credential
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.CredentialAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Credential", [System.Management.Automation.PSCredential], $attributes)
        $parameters.Add("Credential", $parameter)

        # Description
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ValueFromPipelineByPropertyName = $True
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Description", [System.String], $attributes)
        $parameters.Add("Description", $parameter)

        # DisplayName
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ValueFromPipelineByPropertyName = $True
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("DisplayName", [System.String], $attributes)
        $parameters.Add("DisplayName", $parameter)

        # GroupCategory
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ValueFromPipelineByPropertyName = $True
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("GroupCategory", [System.Object], $attributes)
        $parameters.Add("GroupCategory", $parameter)

        # GroupScope
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.Position = 2
        $attribute.Mandatory = $True
        $attribute.ValueFromPipelineByPropertyName = $True
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("GroupScope", [System.Object], $attributes)
        $parameters.Add("GroupScope", $parameter)

        # HomePage
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ValueFromPipelineByPropertyName = $True
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("HomePage", [System.String], $attributes)
        $parameters.Add("HomePage", $parameter)

        # Instance
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Instance", [System.Object], $attributes)
        $parameters.Add("Instance", $parameter)

        # ManagedBy
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ValueFromPipelineByPropertyName = $True
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("ManagedBy", [System.Object], $attributes)
        $parameters.Add("ManagedBy", $parameter)

        # Name
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.Position = 1
        $attribute.Mandatory = $True
        $attribute.ValueFromPipelineByPropertyName = $True
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Name", [System.String], $attributes)
        $parameters.Add("Name", $parameter)

        # OtherAttributes
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("OtherAttributes", [System.Collections.Hashtable], $attributes)
        $parameters.Add("OtherAttributes", $parameter)

        # PassThru
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ValidateNotNullAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("PassThru", [System.Management.Automation.SwitchParameter], $attributes)
        $parameters.Add("PassThru", $parameter)

        # Path
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ValueFromPipelineByPropertyName = $True
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Path", [System.String], $attributes)
        $parameters.Add("Path", $parameter)

        # SamAccountName
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ValueFromPipelineByPropertyName = $True
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("SamAccountName", [System.String], $attributes)
        $parameters.Add("SamAccountName", $parameter)

        # Server
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Server", [System.String], $attributes)
        $parameters.Add("Server", $parameter)

        return $parameters
    }

    end {
        throw '{0}: StubNotImplemented' -f $MyInvocation.MyCommand
    }
}

function New-ADObject {
    <#
    .SYNOPSIS
        New-ADObject [-Name] <string> [-Type] <string> [-WhatIf] [-Confirm] [-AuthType <ADAuthType>] [-Credential <pscredential>] [-Description <string>] [-DisplayName <string>] [-Instance <ADObject>] [-OtherAttributes <hashtable>] [-PassThru] [-Path <string>] [-ProtectedFromAccidentalDeletion <bool>] [-Server <string>] [<CommonParameters>]
    #>


    [CmdletBinding(SupportsShouldProcess=$true, ConfirmImpact='Medium', HelpUri='http://go.microsoft.com/fwlink/?LinkId=219323')]
    param ( )

    dynamicparam {
        $parameters = New-Object System.Management.Automation.RuntimeDefinedParameterDictionary

        # AuthType
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("AuthType", [System.Object], $attributes)
        $parameters.Add("AuthType", $parameter)

        # Credential
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.CredentialAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Credential", [System.Management.Automation.PSCredential], $attributes)
        $parameters.Add("Credential", $parameter)

        # Description
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ValueFromPipelineByPropertyName = $True
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Description", [System.String], $attributes)
        $parameters.Add("Description", $parameter)

        # DisplayName
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ValueFromPipelineByPropertyName = $True
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("DisplayName", [System.String], $attributes)
        $parameters.Add("DisplayName", $parameter)

        # Instance
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ValidateNotNullAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Instance", [System.Object], $attributes)
        $parameters.Add("Instance", $parameter)

        # Name
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.Position = 1
        $attribute.Mandatory = $True
        $attribute.ValueFromPipelineByPropertyName = $True
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Name", [System.String], $attributes)
        $parameters.Add("Name", $parameter)

        # OtherAttributes
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("OtherAttributes", [System.Collections.Hashtable], $attributes)
        $parameters.Add("OtherAttributes", $parameter)

        # PassThru
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("PassThru", [System.Management.Automation.SwitchParameter], $attributes)
        $parameters.Add("PassThru", $parameter)

        # Path
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ValueFromPipelineByPropertyName = $True
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Path", [System.String], $attributes)
        $parameters.Add("Path", $parameter)

        # ProtectedFromAccidentalDeletion
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ValueFromPipelineByPropertyName = $True
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("ProtectedFromAccidentalDeletion", [System.Nullable`1[System.Boolean]], $attributes)
        $parameters.Add("ProtectedFromAccidentalDeletion", $parameter)

        # Server
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Server", [System.String], $attributes)
        $parameters.Add("Server", $parameter)

        # Type
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.Position = 2
        $attribute.Mandatory = $True
        $attribute.ValueFromPipelineByPropertyName = $True
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Type", [System.String], $attributes)
        $parameters.Add("Type", $parameter)

        return $parameters
    }

    end {
        throw '{0}: StubNotImplemented' -f $MyInvocation.MyCommand
    }
}

function New-ADOrganizationalUnit {
    <#
    .SYNOPSIS
        New-ADOrganizationalUnit [-Name] <string> [-WhatIf] [-Confirm] [-AuthType <ADAuthType>] [-City <string>] [-Country <string>] [-Credential <pscredential>] [-Description <string>] [-DisplayName <string>] [-Instance <ADOrganizationalUnit>] [-ManagedBy <ADPrincipal>] [-OtherAttributes <hashtable>] [-PassThru] [-Path <string>] [-PostalCode <string>] [-ProtectedFromAccidentalDeletion <bool>] [-Server <string>] [-State <string>] [-StreetAddress <string>] [<CommonParameters>]
    #>


    [CmdletBinding(SupportsShouldProcess=$true, ConfirmImpact='Medium', HelpUri='http://go.microsoft.com/fwlink/?LinkId=219328')]
    param ( )

    dynamicparam {
        $parameters = New-Object System.Management.Automation.RuntimeDefinedParameterDictionary

        # AuthType
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("AuthType", [System.Object], $attributes)
        $parameters.Add("AuthType", $parameter)

        # City
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ValueFromPipelineByPropertyName = $True
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("City", [System.String], $attributes)
        $parameters.Add("City", $parameter)

        # Country
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ValueFromPipelineByPropertyName = $True
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Country", [System.String], $attributes)
        $parameters.Add("Country", $parameter)

        # Credential
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.CredentialAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Credential", [System.Management.Automation.PSCredential], $attributes)
        $parameters.Add("Credential", $parameter)

        # Description
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ValueFromPipelineByPropertyName = $True
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Description", [System.String], $attributes)
        $parameters.Add("Description", $parameter)

        # DisplayName
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ValueFromPipelineByPropertyName = $True
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("DisplayName", [System.String], $attributes)
        $parameters.Add("DisplayName", $parameter)

        # Instance
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ValidateNotNullAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Instance", [System.Object], $attributes)
        $parameters.Add("Instance", $parameter)

        # ManagedBy
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ValueFromPipelineByPropertyName = $True
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("ManagedBy", [System.Object], $attributes)
        $parameters.Add("ManagedBy", $parameter)

        # Name
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.Position = 1
        $attribute.Mandatory = $True
        $attribute.ValueFromPipelineByPropertyName = $True
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Name", [System.String], $attributes)
        $parameters.Add("Name", $parameter)

        # OtherAttributes
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("OtherAttributes", [System.Collections.Hashtable], $attributes)
        $parameters.Add("OtherAttributes", $parameter)

        # PassThru
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("PassThru", [System.Management.Automation.SwitchParameter], $attributes)
        $parameters.Add("PassThru", $parameter)

        # Path
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ValueFromPipelineByPropertyName = $True
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Path", [System.String], $attributes)
        $parameters.Add("Path", $parameter)

        # PostalCode
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ValueFromPipelineByPropertyName = $True
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("PostalCode", [System.String], $attributes)
        $parameters.Add("PostalCode", $parameter)

        # ProtectedFromAccidentalDeletion
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ValueFromPipelineByPropertyName = $True
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("ProtectedFromAccidentalDeletion", [System.Nullable`1[System.Boolean]], $attributes)
        $parameters.Add("ProtectedFromAccidentalDeletion", $parameter)

        # Server
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Server", [System.String], $attributes)
        $parameters.Add("Server", $parameter)

        # State
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ValueFromPipelineByPropertyName = $True
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("State", [System.String], $attributes)
        $parameters.Add("State", $parameter)

        # StreetAddress
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ValueFromPipelineByPropertyName = $True
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("StreetAddress", [System.String], $attributes)
        $parameters.Add("StreetAddress", $parameter)

        return $parameters
    }

    end {
        throw '{0}: StubNotImplemented' -f $MyInvocation.MyCommand
    }
}

function New-ADReplicationSite {
    <#
    .SYNOPSIS
        New-ADReplicationSite [-Name] <string> [-WhatIf] [-Confirm] [-AuthType <ADAuthType>] [-AutomaticInterSiteTopologyGenerationEnabled <bool>] [-AutomaticTopologyGenerationEnabled <bool>] [-Credential <pscredential>] [-Description <string>] [-Instance <ADReplicationSite>] [-InterSiteTopologyGenerator <ADDirectoryServer>] [-ManagedBy <ADPrincipal>] [-OtherAttributes <hashtable>] [-PassThru] [-ProtectedFromAccidentalDeletion <bool>] [-RedundantServerTopologyEnabled <bool>] [-ReplicationSchedule <ActiveDirectorySchedule>] [-ScheduleHashingEnabled <bool>] [-Server <string>] [-TopologyCleanupEnabled <bool>] [-TopologyDetectStaleEnabled <bool>] [-TopologyMinimumHopsEnabled <bool>] [-UniversalGroupCachingEnabled <bool>] [-UniversalGroupCachingRefreshSite <ADReplicationSite>] [-WindowsServer2000BridgeheadSelectionMethodEnabled <bool>] [-WindowsServer2000KCCISTGSelectionBehaviorEnabled <bool>] [-WindowsServer2003KCCBehaviorEnabled <bool>] [-WindowsServer2003KCCIgnoreScheduleEnabled <bool>] [-WindowsServer2003KCCSiteLinkBridgingEnabled <bool>] [<CommonParameters>]
    #>


    [CmdletBinding(SupportsShouldProcess=$true, ConfirmImpact='Medium', HelpUri='http://go.microsoft.com/fwlink/?LinkId=216377')]
    param ( )

    dynamicparam {
        $parameters = New-Object System.Management.Automation.RuntimeDefinedParameterDictionary

        # AuthType
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Identity"
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("AuthType", [System.Object], $attributes)
        $parameters.Add("AuthType", $parameter)

        # AutomaticInterSiteTopologyGenerationEnabled
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Identity"
        $attribute.ValueFromPipelineByPropertyName = $True
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("AutomaticInterSiteTopologyGenerationEnabled", [System.Nullable`1[System.Boolean]], $attributes)
        $parameters.Add("AutomaticInterSiteTopologyGenerationEnabled", $parameter)

        # AutomaticTopologyGenerationEnabled
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Identity"
        $attribute.ValueFromPipelineByPropertyName = $True
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("AutomaticTopologyGenerationEnabled", [System.Nullable`1[System.Boolean]], $attributes)
        $parameters.Add("AutomaticTopologyGenerationEnabled", $parameter)

        # Credential
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Identity"
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.CredentialAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Credential", [System.Management.Automation.PSCredential], $attributes)
        $parameters.Add("Credential", $parameter)

        # Description
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Identity"
        $attribute.ValueFromPipelineByPropertyName = $True
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Description", [System.String], $attributes)
        $parameters.Add("Description", $parameter)

        # Instance
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Identity"
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Instance", [System.Object], $attributes)
        $parameters.Add("Instance", $parameter)

        # InterSiteTopologyGenerator
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Identity"
        $attribute.ValueFromPipelineByPropertyName = $True
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("InterSiteTopologyGenerator", [System.Object], $attributes)
        $parameters.Add("InterSiteTopologyGenerator", $parameter)

        # ManagedBy
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Identity"
        $attribute.ValueFromPipelineByPropertyName = $True
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("ManagedBy", [System.Object], $attributes)
        $parameters.Add("ManagedBy", $parameter)

        # Name
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.Position = 0
        $attribute.ParameterSetName = "Identity"
        $attribute.Mandatory = $True
        $attribute.ValueFromPipelineByPropertyName = $True
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Name", [System.String], $attributes)
        $parameters.Add("Name", $parameter)

        # OtherAttributes
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Identity"
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("OtherAttributes", [System.Collections.Hashtable], $attributes)
        $parameters.Add("OtherAttributes", $parameter)

        # PassThru
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Identity"
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("PassThru", [System.Management.Automation.SwitchParameter], $attributes)
        $parameters.Add("PassThru", $parameter)

        # ProtectedFromAccidentalDeletion
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Identity"
        $attribute.ValueFromPipelineByPropertyName = $True
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("ProtectedFromAccidentalDeletion", [System.Nullable`1[System.Boolean]], $attributes)
        $parameters.Add("ProtectedFromAccidentalDeletion", $parameter)

        # RedundantServerTopologyEnabled
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Identity"
        $attribute.ValueFromPipelineByPropertyName = $True
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("RedundantServerTopologyEnabled", [System.Nullable`1[System.Boolean]], $attributes)
        $parameters.Add("RedundantServerTopologyEnabled", $parameter)

        # ReplicationSchedule
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ValidateNotNullAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Identity"
        $attribute.ValueFromPipelineByPropertyName = $True
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("ReplicationSchedule", [System.DirectoryServices.ActiveDirectory.ActiveDirectorySchedule], $attributes)
        $parameters.Add("ReplicationSchedule", $parameter)

        # ScheduleHashingEnabled
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Identity"
        $attribute.ValueFromPipelineByPropertyName = $True
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("ScheduleHashingEnabled", [System.Nullable`1[System.Boolean]], $attributes)
        $parameters.Add("ScheduleHashingEnabled", $parameter)

        # Server
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Identity"
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Server", [System.String], $attributes)
        $parameters.Add("Server", $parameter)

        # TopologyCleanupEnabled
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Identity"
        $attribute.ValueFromPipelineByPropertyName = $True
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("TopologyCleanupEnabled", [System.Nullable`1[System.Boolean]], $attributes)
        $parameters.Add("TopologyCleanupEnabled", $parameter)

        # TopologyDetectStaleEnabled
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Identity"
        $attribute.ValueFromPipelineByPropertyName = $True
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("TopologyDetectStaleEnabled", [System.Nullable`1[System.Boolean]], $attributes)
        $parameters.Add("TopologyDetectStaleEnabled", $parameter)

        # TopologyMinimumHopsEnabled
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Identity"
        $attribute.ValueFromPipelineByPropertyName = $True
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("TopologyMinimumHopsEnabled", [System.Nullable`1[System.Boolean]], $attributes)
        $parameters.Add("TopologyMinimumHopsEnabled", $parameter)

        # UniversalGroupCachingEnabled
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Identity"
        $attribute.ValueFromPipelineByPropertyName = $True
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("UniversalGroupCachingEnabled", [System.Nullable`1[System.Boolean]], $attributes)
        $parameters.Add("UniversalGroupCachingEnabled", $parameter)

        # UniversalGroupCachingRefreshSite
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Identity"
        $attribute.ValueFromPipelineByPropertyName = $True
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("UniversalGroupCachingRefreshSite", [System.Object], $attributes)
        $parameters.Add("UniversalGroupCachingRefreshSite", $parameter)

        # WindowsServer2000BridgeheadSelectionMethodEnabled
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Identity"
        $attribute.ValueFromPipelineByPropertyName = $True
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("WindowsServer2000BridgeheadSelectionMethodEnabled", [System.Nullable`1[System.Boolean]], $attributes)
        $parameters.Add("WindowsServer2000BridgeheadSelectionMethodEnabled", $parameter)

        # WindowsServer2000KCCISTGSelectionBehaviorEnabled
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Identity"
        $attribute.ValueFromPipelineByPropertyName = $True
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("WindowsServer2000KCCISTGSelectionBehaviorEnabled", [System.Nullable`1[System.Boolean]], $attributes)
        $parameters.Add("WindowsServer2000KCCISTGSelectionBehaviorEnabled", $parameter)

        # WindowsServer2003KCCBehaviorEnabled
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Identity"
        $attribute.ValueFromPipelineByPropertyName = $True
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("WindowsServer2003KCCBehaviorEnabled", [System.Nullable`1[System.Boolean]], $attributes)
        $parameters.Add("WindowsServer2003KCCBehaviorEnabled", $parameter)

        # WindowsServer2003KCCIgnoreScheduleEnabled
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Identity"
        $attribute.ValueFromPipelineByPropertyName = $True
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("WindowsServer2003KCCIgnoreScheduleEnabled", [System.Nullable`1[System.Boolean]], $attributes)
        $parameters.Add("WindowsServer2003KCCIgnoreScheduleEnabled", $parameter)

        # WindowsServer2003KCCSiteLinkBridgingEnabled
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Identity"
        $attribute.ValueFromPipelineByPropertyName = $True
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("WindowsServer2003KCCSiteLinkBridgingEnabled", [System.Nullable`1[System.Boolean]], $attributes)
        $parameters.Add("WindowsServer2003KCCSiteLinkBridgingEnabled", $parameter)

        return $parameters
    }

    end {
        throw '{0}: StubNotImplemented' -f $MyInvocation.MyCommand
    }
}

function New-ADReplicationSiteLink {
    <#
    .SYNOPSIS
        New-ADReplicationSiteLink [-Name] <string> [[-SitesIncluded] <ADReplicationSite[]>] [-WhatIf] [-Confirm] [-AuthType <ADAuthType>] [-Cost <int>] [-Credential <pscredential>] [-Description <string>] [-Instance <ADReplicationSiteLink>] [-InterSiteTransportProtocol <ADInterSiteTransportProtocolType>] [-OtherAttributes <hashtable>] [-PassThru] [-ReplicationFrequencyInMinutes <int>] [-ReplicationSchedule <ActiveDirectorySchedule>] [-Server <string>] [<CommonParameters>]
    #>


    [CmdletBinding(SupportsShouldProcess=$true, ConfirmImpact='Medium', HelpUri='http://go.microsoft.com/fwlink/?LinkId=216378')]
    param ( )

    dynamicparam {
        $parameters = New-Object System.Management.Automation.RuntimeDefinedParameterDictionary

        # AuthType
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Identity"
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("AuthType", [System.Object], $attributes)
        $parameters.Add("AuthType", $parameter)

        # Cost
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Identity"
        $attribute.ValueFromPipelineByPropertyName = $True
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Cost", [System.Nullable`1[System.Int32]], $attributes)
        $parameters.Add("Cost", $parameter)

        # Credential
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.CredentialAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Identity"
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Credential", [System.Management.Automation.PSCredential], $attributes)
        $parameters.Add("Credential", $parameter)

        # Description
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Identity"
        $attribute.ValueFromPipelineByPropertyName = $True
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Description", [System.String], $attributes)
        $parameters.Add("Description", $parameter)

        # Instance
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Identity"
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Instance", [System.Object], $attributes)
        $parameters.Add("Instance", $parameter)

        # InterSiteTransportProtocol
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Identity"
        $attribute.ValueFromPipelineByPropertyName = $True
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("InterSiteTransportProtocol", [System.Object], $attributes)
        $parameters.Add("InterSiteTransportProtocol", $parameter)

        # Name
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.Position = 0
        $attribute.ParameterSetName = "Identity"
        $attribute.Mandatory = $True
        $attribute.ValueFromPipelineByPropertyName = $True
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Name", [System.String], $attributes)
        $parameters.Add("Name", $parameter)

        # OtherAttributes
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Identity"
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("OtherAttributes", [System.Collections.Hashtable], $attributes)
        $parameters.Add("OtherAttributes", $parameter)

        # PassThru
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Identity"
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("PassThru", [System.Management.Automation.SwitchParameter], $attributes)
        $parameters.Add("PassThru", $parameter)

        # ReplicationFrequencyInMinutes
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Identity"
        $attribute.ValueFromPipelineByPropertyName = $True
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("ReplicationFrequencyInMinutes", [System.Nullable`1[System.Int32]], $attributes)
        $parameters.Add("ReplicationFrequencyInMinutes", $parameter)

        # ReplicationSchedule
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Identity"
        $attribute.ValueFromPipelineByPropertyName = $True
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("ReplicationSchedule", [System.DirectoryServices.ActiveDirectory.ActiveDirectorySchedule], $attributes)
        $parameters.Add("ReplicationSchedule", $parameter)

        # Server
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Identity"
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Server", [System.String], $attributes)
        $parameters.Add("Server", $parameter)

        # SitesIncluded
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.Position = 1
        $attribute.ParameterSetName = "Identity"
        $attribute.ValueFromPipelineByPropertyName = $True
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("SitesIncluded", [System.Object[]], $attributes)
        $parameters.Add("SitesIncluded", $parameter)

        return $parameters
    }

    end {
        throw '{0}: StubNotImplemented' -f $MyInvocation.MyCommand
    }
}

function New-ADReplicationSiteLinkBridge {
    <#
    .SYNOPSIS
        New-ADReplicationSiteLinkBridge [-Name] <string> [[-SiteLinksIncluded] <ADReplicationSiteLink[]>] [-WhatIf] [-Confirm] [-AuthType <ADAuthType>] [-Credential <pscredential>] [-Description <string>] [-Instance <ADReplicationSiteLinkBridge>] [-InterSiteTransportProtocol <ADInterSiteTransportProtocolType>] [-OtherAttributes <hashtable>] [-PassThru] [-Server <string>] [<CommonParameters>]
    #>


    [CmdletBinding(SupportsShouldProcess=$true, ConfirmImpact='Medium', HelpUri='http://go.microsoft.com/fwlink/?LinkId=216379')]
    param ( )

    dynamicparam {
        $parameters = New-Object System.Management.Automation.RuntimeDefinedParameterDictionary

        # AuthType
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Identity"
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("AuthType", [System.Object], $attributes)
        $parameters.Add("AuthType", $parameter)

        # Credential
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Identity"
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.CredentialAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Credential", [System.Management.Automation.PSCredential], $attributes)
        $parameters.Add("Credential", $parameter)

        # Description
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Identity"
        $attribute.ValueFromPipelineByPropertyName = $True
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Description", [System.String], $attributes)
        $parameters.Add("Description", $parameter)

        # Instance
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Identity"
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Instance", [System.Object], $attributes)
        $parameters.Add("Instance", $parameter)

        # InterSiteTransportProtocol
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Identity"
        $attribute.ValueFromPipelineByPropertyName = $True
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("InterSiteTransportProtocol", [System.Object], $attributes)
        $parameters.Add("InterSiteTransportProtocol", $parameter)

        # Name
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.Position = 0
        $attribute.ParameterSetName = "Identity"
        $attribute.Mandatory = $True
        $attribute.ValueFromPipelineByPropertyName = $True
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Name", [System.String], $attributes)
        $parameters.Add("Name", $parameter)

        # OtherAttributes
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Identity"
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("OtherAttributes", [System.Collections.Hashtable], $attributes)
        $parameters.Add("OtherAttributes", $parameter)

        # PassThru
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Identity"
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("PassThru", [System.Management.Automation.SwitchParameter], $attributes)
        $parameters.Add("PassThru", $parameter)

        # Server
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Identity"
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Server", [System.String], $attributes)
        $parameters.Add("Server", $parameter)

        # SiteLinksIncluded
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.Position = 1
        $attribute.ParameterSetName = "Identity"
        $attribute.ValueFromPipelineByPropertyName = $True
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("SiteLinksIncluded", [System.Object[]], $attributes)
        $parameters.Add("SiteLinksIncluded", $parameter)

        return $parameters
    }

    end {
        throw '{0}: StubNotImplemented' -f $MyInvocation.MyCommand
    }
}

function New-ADReplicationSubnet {
    <#
    .SYNOPSIS
        New-ADReplicationSubnet [-Name] <string> [[-Site] <ADReplicationSite>] [-WhatIf] [-Confirm] [-AuthType <ADAuthType>] [-Credential <pscredential>] [-Description <string>] [-Instance <ADReplicationSubnet>] [-Location <string>] [-OtherAttributes <hashtable>] [-PassThru] [-Server <string>] [<CommonParameters>]
    #>


    [CmdletBinding(SupportsShouldProcess=$true, ConfirmImpact='Medium', HelpUri='http://go.microsoft.com/fwlink/?LinkId=216380')]
    param ( )

    dynamicparam {
        $parameters = New-Object System.Management.Automation.RuntimeDefinedParameterDictionary

        # AuthType
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Identity"
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("AuthType", [System.Object], $attributes)
        $parameters.Add("AuthType", $parameter)

        # Credential
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Identity"
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.CredentialAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Credential", [System.Management.Automation.PSCredential], $attributes)
        $parameters.Add("Credential", $parameter)

        # Description
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Identity"
        $attribute.ValueFromPipelineByPropertyName = $True
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Description", [System.String], $attributes)
        $parameters.Add("Description", $parameter)

        # Instance
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Identity"
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Instance", [System.Object], $attributes)
        $parameters.Add("Instance", $parameter)

        # Location
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Identity"
        $attribute.ValueFromPipelineByPropertyName = $True
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Location", [System.String], $attributes)
        $parameters.Add("Location", $parameter)

        # Name
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.Position = 0
        $attribute.ParameterSetName = "Identity"
        $attribute.Mandatory = $True
        $attribute.ValueFromPipelineByPropertyName = $True
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Name", [System.String], $attributes)
        $parameters.Add("Name", $parameter)

        # OtherAttributes
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Identity"
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("OtherAttributes", [System.Collections.Hashtable], $attributes)
        $parameters.Add("OtherAttributes", $parameter)

        # PassThru
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ValidateNotNullAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Identity"
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("PassThru", [System.Management.Automation.SwitchParameter], $attributes)
        $parameters.Add("PassThru", $parameter)

        # Server
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Identity"
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Server", [System.String], $attributes)
        $parameters.Add("Server", $parameter)

        # Site
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.Position = 1
        $attribute.ParameterSetName = "Identity"
        $attribute.ValueFromPipelineByPropertyName = $True
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Site", [System.Object], $attributes)
        $parameters.Add("Site", $parameter)

        return $parameters
    }

    end {
        throw '{0}: StubNotImplemented' -f $MyInvocation.MyCommand
    }
}

function New-ADResourceProperty {
    <#
    .SYNOPSIS
        New-ADResourceProperty [-DisplayName] <string> -ResourcePropertyValueType <ADResourcePropertyValueType> [-WhatIf] [-Confirm] [-AppliesToResourceTypes <string[]>] [-AuthType <ADAuthType>] [-Credential <pscredential>] [-Description <string>] [-Enabled <bool>] [-ID <string>] [-Instance <ADResourceProperty>] [-IsSecured <bool>] [-OtherAttributes <hashtable>] [-PassThru] [-ProtectedFromAccidentalDeletion <bool>] [-Server <string>] [-SharesValuesWith <ADClaimType>] [-SuggestedValues <ADSuggestedValueEntry[]>] [<CommonParameters>]
    #>


    [CmdletBinding(SupportsShouldProcess=$true, ConfirmImpact='Medium', HelpUri='http://go.microsoft.com/fwlink/?LinkId=216381')]
    param ( )

    dynamicparam {
        $parameters = New-Object System.Management.Automation.RuntimeDefinedParameterDictionary

        # AppliesToResourceTypes
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("AppliesToResourceTypes", [System.String[]], $attributes)
        $parameters.Add("AppliesToResourceTypes", $parameter)

        # AuthType
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("AuthType", [System.Object], $attributes)
        $parameters.Add("AuthType", $parameter)

        # Credential
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.CredentialAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Credential", [System.Management.Automation.PSCredential], $attributes)
        $parameters.Add("Credential", $parameter)

        # Description
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ValueFromPipelineByPropertyName = $True
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Description", [System.String], $attributes)
        $parameters.Add("Description", $parameter)

        # DisplayName
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.Position = 0
        $attribute.Mandatory = $True
        $attribute.ValueFromPipelineByPropertyName = $True
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("DisplayName", [System.String], $attributes)
        $parameters.Add("DisplayName", $parameter)

        # Enabled
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ValueFromPipelineByPropertyName = $True
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Enabled", [System.Boolean], $attributes)
        $parameters.Add("Enabled", $parameter)

        # ID
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ValidateNotNullAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ValueFromPipelineByPropertyName = $True
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("ID", [System.String], $attributes)
        $parameters.Add("ID", $parameter)

        # Instance
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Instance", [System.Object], $attributes)
        $parameters.Add("Instance", $parameter)

        # IsSecured
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ValueFromPipelineByPropertyName = $True
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("IsSecured", [System.Boolean], $attributes)
        $parameters.Add("IsSecured", $parameter)

        # OtherAttributes
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("OtherAttributes", [System.Collections.Hashtable], $attributes)
        $parameters.Add("OtherAttributes", $parameter)

        # PassThru
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("PassThru", [System.Management.Automation.SwitchParameter], $attributes)
        $parameters.Add("PassThru", $parameter)

        # ProtectedFromAccidentalDeletion
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ValueFromPipelineByPropertyName = $True
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("ProtectedFromAccidentalDeletion", [System.Nullable`1[System.Boolean]], $attributes)
        $parameters.Add("ProtectedFromAccidentalDeletion", $parameter)

        # ResourcePropertyValueType
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ValidateNotNullAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.Mandatory = $True
        $attribute.ValueFromPipelineByPropertyName = $True
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("ResourcePropertyValueType", [System.Object], $attributes)
        $parameters.Add("ResourcePropertyValueType", $parameter)

        # Server
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Server", [System.String], $attributes)
        $parameters.Add("Server", $parameter)

        # SharesValuesWith
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ValueFromPipelineByPropertyName = $True
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("SharesValuesWith", [System.Object], $attributes)
        $parameters.Add("SharesValuesWith", $parameter)

        # SuggestedValues
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ValueFromPipelineByPropertyName = $True
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("SuggestedValues", [System.Object[]], $attributes)
        $parameters.Add("SuggestedValues", $parameter)

        return $parameters
    }

    end {
        throw '{0}: StubNotImplemented' -f $MyInvocation.MyCommand
    }
}

function New-ADResourcePropertyList {
    <#
    .SYNOPSIS
        New-ADResourcePropertyList [-Name] <string> [-WhatIf] [-Confirm] [-AuthType <ADAuthType>] [-Credential <pscredential>] [-Description <string>] [-Instance <ADResourcePropertyList>] [-PassThru] [-ProtectedFromAccidentalDeletion <bool>] [-Server <string>] [<CommonParameters>]
    #>


    [CmdletBinding(SupportsShouldProcess=$true, ConfirmImpact='Medium', HelpUri='http://go.microsoft.com/fwlink/?LinkId=216382')]
    param ( )

    dynamicparam {
        $parameters = New-Object System.Management.Automation.RuntimeDefinedParameterDictionary

        # AuthType
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("AuthType", [System.Object], $attributes)
        $parameters.Add("AuthType", $parameter)

        # Credential
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.CredentialAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Credential", [System.Management.Automation.PSCredential], $attributes)
        $parameters.Add("Credential", $parameter)

        # Description
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ValueFromPipelineByPropertyName = $True
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Description", [System.String], $attributes)
        $parameters.Add("Description", $parameter)

        # Instance
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ValidateNotNullAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Instance", [System.Object], $attributes)
        $parameters.Add("Instance", $parameter)

        # Name
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.Position = 1
        $attribute.Mandatory = $True
        $attribute.ValueFromPipelineByPropertyName = $True
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Name", [System.String], $attributes)
        $parameters.Add("Name", $parameter)

        # PassThru
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("PassThru", [System.Management.Automation.SwitchParameter], $attributes)
        $parameters.Add("PassThru", $parameter)

        # ProtectedFromAccidentalDeletion
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ValueFromPipelineByPropertyName = $True
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("ProtectedFromAccidentalDeletion", [System.Nullable`1[System.Boolean]], $attributes)
        $parameters.Add("ProtectedFromAccidentalDeletion", $parameter)

        # Server
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Server", [System.String], $attributes)
        $parameters.Add("Server", $parameter)

        return $parameters
    }

    end {
        throw '{0}: StubNotImplemented' -f $MyInvocation.MyCommand
    }
}

function New-ADServiceAccount {
    <#
    .SYNOPSIS
        New-ADServiceAccount [-Name] <string> -DNSHostName <string> [-WhatIf] [-Confirm] [-AccountExpirationDate <datetime>] [-AccountNotDelegated <bool>] [-AuthenticationPolicy <ADAuthenticationPolicy>] [-AuthenticationPolicySilo <ADAuthenticationPolicySilo>] [-AuthType <ADAuthType>] [-Certificates <string[]>] [-CompoundIdentitySupported <bool>] [-Credential <pscredential>] [-Description <string>] [-DisplayName <string>] [-Enabled <bool>] [-HomePage <string>] [-Instance <ADServiceAccount>] [-KerberosEncryptionType <ADKerberosEncryptionType>] [-ManagedPasswordIntervalInDays <int>] [-OtherAttributes <hashtable>] [-PassThru] [-Path <string>] [-PrincipalsAllowedToDelegateToAccount <ADPrincipal[]>] [-PrincipalsAllowedToRetrieveManagedPassword <ADPrincipal[]>] [-SamAccountName <string>] [-Server <string>] [-ServicePrincipalNames <string[]>] [-TrustedForDelegation <bool>] [<CommonParameters>]
 
New-ADServiceAccount [-Name] <string> -RestrictToSingleComputer [-WhatIf] [-Confirm] [-AccountExpirationDate <datetime>] [-AccountNotDelegated <bool>] [-AccountPassword <securestring>] [-AuthenticationPolicy <ADAuthenticationPolicy>] [-AuthenticationPolicySilo <ADAuthenticationPolicySilo>] [-AuthType <ADAuthType>] [-Certificates <string[]>] [-Credential <pscredential>] [-Description <string>] [-DisplayName <string>] [-Enabled <bool>] [-HomePage <string>] [-Instance <ADServiceAccount>] [-KerberosEncryptionType <ADKerberosEncryptionType>] [-OtherAttributes <hashtable>] [-PassThru] [-Path <string>] [-SamAccountName <string>] [-Server <string>] [-ServicePrincipalNames <string[]>] [-TrustedForDelegation <bool>] [<CommonParameters>]
 
New-ADServiceAccount [-Name] <string> -RestrictToOutboundAuthenticationOnly [-WhatIf] [-Confirm] [-AccountExpirationDate <datetime>] [-AccountNotDelegated <bool>] [-AuthenticationPolicy <ADAuthenticationPolicy>] [-AuthenticationPolicySilo <ADAuthenticationPolicySilo>] [-AuthType <ADAuthType>] [-Certificates <string[]>] [-Credential <pscredential>] [-Description <string>] [-DisplayName <string>] [-Enabled <bool>] [-HomePage <string>] [-Instance <ADServiceAccount>] [-KerberosEncryptionType <ADKerberosEncryptionType>] [-OtherAttributes <hashtable>] [-PassThru] [-Path <string>] [-SamAccountName <string>] [-Server <string>] [-ServicePrincipalNames <string[]>] [-TrustedForDelegation <bool>] [<CommonParameters>]
    #>


    [CmdletBinding(DefaultParameterSetName='Group', SupportsShouldProcess=$true, ConfirmImpact='Medium', HelpUri='http://go.microsoft.com/fwlink/?LinkId=301401')]
    param ( )

    dynamicparam {
        $parameters = New-Object System.Management.Automation.RuntimeDefinedParameterDictionary

        # AccountExpirationDate
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ValueFromPipelineByPropertyName = $True
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("AccountExpirationDate", [System.Nullable`1[System.DateTime]], $attributes)
        $parameters.Add("AccountExpirationDate", $parameter)

        # AccountNotDelegated
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ValueFromPipelineByPropertyName = $True
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("AccountNotDelegated", [System.Nullable`1[System.Boolean]], $attributes)
        $parameters.Add("AccountNotDelegated", $parameter)

        # AccountPassword
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "RestrictedToSingleComputer"
        $attribute.ValueFromPipelineByPropertyName = $True
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("AccountPassword", [System.Security.SecureString], $attributes)
        $parameters.Add("AccountPassword", $parameter)

        # AuthenticationPolicy
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ValueFromPipelineByPropertyName = $True
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("AuthenticationPolicy", [System.Object], $attributes)
        $parameters.Add("AuthenticationPolicy", $parameter)

        # AuthenticationPolicySilo
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ValueFromPipelineByPropertyName = $True
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("AuthenticationPolicySilo", [System.Object], $attributes)
        $parameters.Add("AuthenticationPolicySilo", $parameter)

        # AuthType
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("AuthType", [System.Object], $attributes)
        $parameters.Add("AuthType", $parameter)

        # Certificates
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ValueFromPipelineByPropertyName = $True
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Certificates", [System.String[]], $attributes)
        $parameters.Add("Certificates", $parameter)

        # CompoundIdentitySupported
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Group"
        $attribute.ValueFromPipelineByPropertyName = $True
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("CompoundIdentitySupported", [System.Nullable`1[System.Boolean]], $attributes)
        $parameters.Add("CompoundIdentitySupported", $parameter)

        # Credential
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.CredentialAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Credential", [System.Management.Automation.PSCredential], $attributes)
        $parameters.Add("Credential", $parameter)

        # Description
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ValueFromPipelineByPropertyName = $True
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Description", [System.String], $attributes)
        $parameters.Add("Description", $parameter)

        # DisplayName
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ValueFromPipelineByPropertyName = $True
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("DisplayName", [System.String], $attributes)
        $parameters.Add("DisplayName", $parameter)

        # DNSHostName
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ValidateNotNullAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Group"
        $attribute.Mandatory = $True
        $attribute.ValueFromPipelineByPropertyName = $True
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("DNSHostName", [System.String], $attributes)
        $parameters.Add("DNSHostName", $parameter)

        # Enabled
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ValueFromPipelineByPropertyName = $True
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Enabled", [System.Nullable`1[System.Boolean]], $attributes)
        $parameters.Add("Enabled", $parameter)

        # HomePage
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ValueFromPipelineByPropertyName = $True
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("HomePage", [System.String], $attributes)
        $parameters.Add("HomePage", $parameter)

        # Instance
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Instance", [System.Object], $attributes)
        $parameters.Add("Instance", $parameter)

        # KerberosEncryptionType
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("KerberosEncryptionType", [System.Object], $attributes)
        $parameters.Add("KerberosEncryptionType", $parameter)

        # ManagedPasswordIntervalInDays
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Group"
        $attribute.ValueFromPipelineByPropertyName = $True
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("ManagedPasswordIntervalInDays", [System.Nullable`1[System.Int32]], $attributes)
        $parameters.Add("ManagedPasswordIntervalInDays", $parameter)

        # Name
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.Position = 1
        $attribute.Mandatory = $True
        $attribute.ValueFromPipelineByPropertyName = $True
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Name", [System.String], $attributes)
        $parameters.Add("Name", $parameter)

        # OtherAttributes
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("OtherAttributes", [System.Collections.Hashtable], $attributes)
        $parameters.Add("OtherAttributes", $parameter)

        # PassThru
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ValidateNotNullAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("PassThru", [System.Management.Automation.SwitchParameter], $attributes)
        $parameters.Add("PassThru", $parameter)

        # Path
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ValueFromPipelineByPropertyName = $True
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Path", [System.String], $attributes)
        $parameters.Add("Path", $parameter)

        # PrincipalsAllowedToDelegateToAccount
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ValidateNotNullAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Group"
        $attribute.ValueFromPipelineByPropertyName = $True
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("PrincipalsAllowedToDelegateToAccount", [System.Object[]], $attributes)
        $parameters.Add("PrincipalsAllowedToDelegateToAccount", $parameter)

        # PrincipalsAllowedToRetrieveManagedPassword
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Group"
        $attribute.ValueFromPipelineByPropertyName = $True
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("PrincipalsAllowedToRetrieveManagedPassword", [System.Object[]], $attributes)
        $parameters.Add("PrincipalsAllowedToRetrieveManagedPassword", $parameter)

        # RestrictToOutboundAuthenticationOnly
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "RestrictedToOutboundAuthenticationOnly"
        $attribute.Mandatory = $True
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateSetAttribute('true')
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("RestrictToOutboundAuthenticationOnly", [System.Management.Automation.SwitchParameter], $attributes)
        $parameters.Add("RestrictToOutboundAuthenticationOnly", $parameter)

        # RestrictToSingleComputer
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ValidateSetAttribute('true')
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "RestrictedToSingleComputer"
        $attribute.Mandatory = $True
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("RestrictToSingleComputer", [System.Management.Automation.SwitchParameter], $attributes)
        $parameters.Add("RestrictToSingleComputer", $parameter)

        # SamAccountName
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ValueFromPipelineByPropertyName = $True
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("SamAccountName", [System.String], $attributes)
        $parameters.Add("SamAccountName", $parameter)

        # Server
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Server", [System.String], $attributes)
        $parameters.Add("Server", $parameter)

        # ServicePrincipalNames
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ValueFromPipelineByPropertyName = $True
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("ServicePrincipalNames", [System.String[]], $attributes)
        $parameters.Add("ServicePrincipalNames", $parameter)

        # TrustedForDelegation
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ValueFromPipelineByPropertyName = $True
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("TrustedForDelegation", [System.Nullable`1[System.Boolean]], $attributes)
        $parameters.Add("TrustedForDelegation", $parameter)

        return $parameters
    }

    end {
        throw '{0}: StubNotImplemented' -f $MyInvocation.MyCommand
    }
}

function New-ADUser {
    <#
    .SYNOPSIS
        New-ADUser [-Name] <string> [-WhatIf] [-Confirm] [-AccountExpirationDate <datetime>] [-AccountNotDelegated <bool>] [-AccountPassword <securestring>] [-AllowReversiblePasswordEncryption <bool>] [-AuthenticationPolicy <ADAuthenticationPolicy>] [-AuthenticationPolicySilo <ADAuthenticationPolicySilo>] [-AuthType <ADAuthType>] [-CannotChangePassword <bool>] [-Certificates <X509Certificate[]>] [-ChangePasswordAtLogon <bool>] [-City <string>] [-Company <string>] [-CompoundIdentitySupported <bool>] [-Country <string>] [-Credential <pscredential>] [-Department <string>] [-Description <string>] [-DisplayName <string>] [-Division <string>] [-EmailAddress <string>] [-EmployeeID <string>] [-EmployeeNumber <string>] [-Enabled <bool>] [-Fax <string>] [-GivenName <string>] [-HomeDirectory <string>] [-HomeDrive <string>] [-HomePage <string>] [-HomePhone <string>] [-Initials <string>] [-Instance <ADUser>] [-KerberosEncryptionType <ADKerberosEncryptionType>] [-LogonWorkstations <string>] [-Manager <ADUser>] [-MobilePhone <string>] [-Office <string>] [-OfficePhone <string>] [-Organization <string>] [-OtherAttributes <hashtable>] [-OtherName <string>] [-PassThru] [-PasswordNeverExpires <bool>] [-PasswordNotRequired <bool>] [-Path <string>] [-POBox <string>] [-PostalCode <string>] [-PrincipalsAllowedToDelegateToAccount <ADPrincipal[]>] [-ProfilePath <string>] [-SamAccountName <string>] [-ScriptPath <string>] [-Server <string>] [-ServicePrincipalNames <string[]>] [-SmartcardLogonRequired <bool>] [-State <string>] [-StreetAddress <string>] [-Surname <string>] [-Title <string>] [-TrustedForDelegation <bool>] [-Type <string>] [-UserPrincipalName <string>] [<CommonParameters>]
    #>


    [CmdletBinding(SupportsShouldProcess=$true, ConfirmImpact='Medium', HelpUri='http://go.microsoft.com/fwlink/?LinkId=301400')]
    param ( )

    dynamicparam {
        $parameters = New-Object System.Management.Automation.RuntimeDefinedParameterDictionary

        # AccountExpirationDate
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ValueFromPipelineByPropertyName = $True
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("AccountExpirationDate", [System.Nullable`1[System.DateTime]], $attributes)
        $parameters.Add("AccountExpirationDate", $parameter)

        # AccountNotDelegated
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ValueFromPipelineByPropertyName = $True
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("AccountNotDelegated", [System.Nullable`1[System.Boolean]], $attributes)
        $parameters.Add("AccountNotDelegated", $parameter)

        # AccountPassword
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ValueFromPipelineByPropertyName = $True
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("AccountPassword", [System.Security.SecureString], $attributes)
        $parameters.Add("AccountPassword", $parameter)

        # AllowReversiblePasswordEncryption
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ValueFromPipelineByPropertyName = $True
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("AllowReversiblePasswordEncryption", [System.Nullable`1[System.Boolean]], $attributes)
        $parameters.Add("AllowReversiblePasswordEncryption", $parameter)

        # AuthenticationPolicy
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ValueFromPipelineByPropertyName = $True
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("AuthenticationPolicy", [System.Object], $attributes)
        $parameters.Add("AuthenticationPolicy", $parameter)

        # AuthenticationPolicySilo
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ValueFromPipelineByPropertyName = $True
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("AuthenticationPolicySilo", [System.Object], $attributes)
        $parameters.Add("AuthenticationPolicySilo", $parameter)

        # AuthType
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("AuthType", [System.Object], $attributes)
        $parameters.Add("AuthType", $parameter)

        # CannotChangePassword
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ValueFromPipelineByPropertyName = $True
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("CannotChangePassword", [System.Nullable`1[System.Boolean]], $attributes)
        $parameters.Add("CannotChangePassword", $parameter)

        # Certificates
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ValueFromPipelineByPropertyName = $True
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Certificates", [System.Security.Cryptography.X509Certificates.X509Certificate[]], $attributes)
        $parameters.Add("Certificates", $parameter)

        # ChangePasswordAtLogon
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ValueFromPipelineByPropertyName = $True
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("ChangePasswordAtLogon", [System.Nullable`1[System.Boolean]], $attributes)
        $parameters.Add("ChangePasswordAtLogon", $parameter)

        # City
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ValueFromPipelineByPropertyName = $True
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("City", [System.String], $attributes)
        $parameters.Add("City", $parameter)

        # Company
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ValueFromPipelineByPropertyName = $True
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Company", [System.String], $attributes)
        $parameters.Add("Company", $parameter)

        # CompoundIdentitySupported
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ValueFromPipelineByPropertyName = $True
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("CompoundIdentitySupported", [System.Nullable`1[System.Boolean]], $attributes)
        $parameters.Add("CompoundIdentitySupported", $parameter)

        # Country
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ValueFromPipelineByPropertyName = $True
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Country", [System.String], $attributes)
        $parameters.Add("Country", $parameter)

        # Credential
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.CredentialAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Credential", [System.Management.Automation.PSCredential], $attributes)
        $parameters.Add("Credential", $parameter)

        # Department
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ValueFromPipelineByPropertyName = $True
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Department", [System.String], $attributes)
        $parameters.Add("Department", $parameter)

        # Description
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ValueFromPipelineByPropertyName = $True
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Description", [System.String], $attributes)
        $parameters.Add("Description", $parameter)

        # DisplayName
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ValueFromPipelineByPropertyName = $True
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("DisplayName", [System.String], $attributes)
        $parameters.Add("DisplayName", $parameter)

        # Division
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ValueFromPipelineByPropertyName = $True
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Division", [System.String], $attributes)
        $parameters.Add("Division", $parameter)

        # EmailAddress
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ValueFromPipelineByPropertyName = $True
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("EmailAddress", [System.String], $attributes)
        $parameters.Add("EmailAddress", $parameter)

        # EmployeeID
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ValueFromPipelineByPropertyName = $True
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("EmployeeID", [System.String], $attributes)
        $parameters.Add("EmployeeID", $parameter)

        # EmployeeNumber
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ValueFromPipelineByPropertyName = $True
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("EmployeeNumber", [System.String], $attributes)
        $parameters.Add("EmployeeNumber", $parameter)

        # Enabled
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ValueFromPipelineByPropertyName = $True
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Enabled", [System.Nullable`1[System.Boolean]], $attributes)
        $parameters.Add("Enabled", $parameter)

        # Fax
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ValueFromPipelineByPropertyName = $True
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Fax", [System.String], $attributes)
        $parameters.Add("Fax", $parameter)

        # GivenName
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ValueFromPipelineByPropertyName = $True
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("GivenName", [System.String], $attributes)
        $parameters.Add("GivenName", $parameter)

        # HomeDirectory
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ValueFromPipelineByPropertyName = $True
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("HomeDirectory", [System.String], $attributes)
        $parameters.Add("HomeDirectory", $parameter)

        # HomeDrive
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ValueFromPipelineByPropertyName = $True
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("HomeDrive", [System.String], $attributes)
        $parameters.Add("HomeDrive", $parameter)

        # HomePage
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ValueFromPipelineByPropertyName = $True
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("HomePage", [System.String], $attributes)
        $parameters.Add("HomePage", $parameter)

        # HomePhone
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ValueFromPipelineByPropertyName = $True
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("HomePhone", [System.String], $attributes)
        $parameters.Add("HomePhone", $parameter)

        # Initials
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ValueFromPipelineByPropertyName = $True
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Initials", [System.String], $attributes)
        $parameters.Add("Initials", $parameter)

        # Instance
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Instance", [System.Object], $attributes)
        $parameters.Add("Instance", $parameter)

        # KerberosEncryptionType
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ValueFromPipelineByPropertyName = $True
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("KerberosEncryptionType", [System.Object], $attributes)
        $parameters.Add("KerberosEncryptionType", $parameter)

        # LogonWorkstations
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ValueFromPipelineByPropertyName = $True
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("LogonWorkstations", [System.String], $attributes)
        $parameters.Add("LogonWorkstations", $parameter)

        # Manager
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ValueFromPipelineByPropertyName = $True
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Manager", [System.Object], $attributes)
        $parameters.Add("Manager", $parameter)

        # MobilePhone
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ValueFromPipelineByPropertyName = $True
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("MobilePhone", [System.String], $attributes)
        $parameters.Add("MobilePhone", $parameter)

        # Name
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.Position = 1
        $attribute.Mandatory = $True
        $attribute.ValueFromPipelineByPropertyName = $True
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Name", [System.String], $attributes)
        $parameters.Add("Name", $parameter)

        # Office
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ValueFromPipelineByPropertyName = $True
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Office", [System.String], $attributes)
        $parameters.Add("Office", $parameter)

        # OfficePhone
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ValueFromPipelineByPropertyName = $True
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("OfficePhone", [System.String], $attributes)
        $parameters.Add("OfficePhone", $parameter)

        # Organization
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ValueFromPipelineByPropertyName = $True
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Organization", [System.String], $attributes)
        $parameters.Add("Organization", $parameter)

        # OtherAttributes
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("OtherAttributes", [System.Collections.Hashtable], $attributes)
        $parameters.Add("OtherAttributes", $parameter)

        # OtherName
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ValueFromPipelineByPropertyName = $True
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("OtherName", [System.String], $attributes)
        $parameters.Add("OtherName", $parameter)

        # PassThru
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("PassThru", [System.Management.Automation.SwitchParameter], $attributes)
        $parameters.Add("PassThru", $parameter)

        # PasswordNeverExpires
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ValueFromPipelineByPropertyName = $True
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("PasswordNeverExpires", [System.Nullable`1[System.Boolean]], $attributes)
        $parameters.Add("PasswordNeverExpires", $parameter)

        # PasswordNotRequired
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ValueFromPipelineByPropertyName = $True
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("PasswordNotRequired", [System.Nullable`1[System.Boolean]], $attributes)
        $parameters.Add("PasswordNotRequired", $parameter)

        # Path
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ValueFromPipelineByPropertyName = $True
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Path", [System.String], $attributes)
        $parameters.Add("Path", $parameter)

        # POBox
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ValueFromPipelineByPropertyName = $True
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("POBox", [System.String], $attributes)
        $parameters.Add("POBox", $parameter)

        # PostalCode
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ValueFromPipelineByPropertyName = $True
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("PostalCode", [System.String], $attributes)
        $parameters.Add("PostalCode", $parameter)

        # PrincipalsAllowedToDelegateToAccount
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ValueFromPipelineByPropertyName = $True
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("PrincipalsAllowedToDelegateToAccount", [System.Object[]], $attributes)
        $parameters.Add("PrincipalsAllowedToDelegateToAccount", $parameter)

        # ProfilePath
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ValueFromPipelineByPropertyName = $True
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("ProfilePath", [System.String], $attributes)
        $parameters.Add("ProfilePath", $parameter)

        # SamAccountName
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ValueFromPipelineByPropertyName = $True
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("SamAccountName", [System.String], $attributes)
        $parameters.Add("SamAccountName", $parameter)

        # ScriptPath
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ValueFromPipelineByPropertyName = $True
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("ScriptPath", [System.String], $attributes)
        $parameters.Add("ScriptPath", $parameter)

        # Server
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Server", [System.String], $attributes)
        $parameters.Add("Server", $parameter)

        # ServicePrincipalNames
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ValueFromPipelineByPropertyName = $True
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("ServicePrincipalNames", [System.String[]], $attributes)
        $parameters.Add("ServicePrincipalNames", $parameter)

        # SmartcardLogonRequired
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ValueFromPipelineByPropertyName = $True
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("SmartcardLogonRequired", [System.Nullable`1[System.Boolean]], $attributes)
        $parameters.Add("SmartcardLogonRequired", $parameter)

        # State
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ValueFromPipelineByPropertyName = $True
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("State", [System.String], $attributes)
        $parameters.Add("State", $parameter)

        # StreetAddress
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ValueFromPipelineByPropertyName = $True
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("StreetAddress", [System.String], $attributes)
        $parameters.Add("StreetAddress", $parameter)

        # Surname
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ValueFromPipelineByPropertyName = $True
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Surname", [System.String], $attributes)
        $parameters.Add("Surname", $parameter)

        # Title
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ValueFromPipelineByPropertyName = $True
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Title", [System.String], $attributes)
        $parameters.Add("Title", $parameter)

        # TrustedForDelegation
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ValueFromPipelineByPropertyName = $True
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("TrustedForDelegation", [System.Nullable`1[System.Boolean]], $attributes)
        $parameters.Add("TrustedForDelegation", $parameter)

        # Type
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ValueFromPipelineByPropertyName = $True
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Type", [System.String], $attributes)
        $parameters.Add("Type", $parameter)

        # UserPrincipalName
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ValueFromPipelineByPropertyName = $True
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("UserPrincipalName", [System.String], $attributes)
        $parameters.Add("UserPrincipalName", $parameter)

        return $parameters
    }

    end {
        throw '{0}: StubNotImplemented' -f $MyInvocation.MyCommand
    }
}

function Remove-ADAuthenticationPolicy {
    <#
    .SYNOPSIS
        Remove-ADAuthenticationPolicy [-Identity] <ADAuthenticationPolicy> [-WhatIf] [-Confirm] [-AuthType <ADAuthType>] [-Credential <pscredential>] [-Server <string>] [<CommonParameters>]
    #>


    [CmdletBinding(SupportsShouldProcess=$true, ConfirmImpact='High', HelpUri='http://go.microsoft.com/fwlink/?LinkId=301407')]
    param ( )

    dynamicparam {
        $parameters = New-Object System.Management.Automation.RuntimeDefinedParameterDictionary

        # AuthType
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("AuthType", [System.Object], $attributes)
        $parameters.Add("AuthType", $parameter)

        # Credential
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.CredentialAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Credential", [System.Management.Automation.PSCredential], $attributes)
        $parameters.Add("Credential", $parameter)

        # Identity
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.Position = 0
        $attribute.Mandatory = $True
        $attribute.ValueFromPipeline = $True
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Identity", [System.Object], $attributes)
        $parameters.Add("Identity", $parameter)

        # Server
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Server", [System.String], $attributes)
        $parameters.Add("Server", $parameter)

        return $parameters
    }

    end {
        throw '{0}: StubNotImplemented' -f $MyInvocation.MyCommand
    }
}

function Remove-ADAuthenticationPolicySilo {
    <#
    .SYNOPSIS
        Remove-ADAuthenticationPolicySilo [-Identity] <ADAuthenticationPolicySilo> [-WhatIf] [-Confirm] [-AuthType <ADAuthType>] [-Credential <pscredential>] [-Server <string>] [<CommonParameters>]
    #>


    [CmdletBinding(SupportsShouldProcess=$true, ConfirmImpact='High', HelpUri='http://go.microsoft.com/fwlink/?LinkId=301412')]
    param ( )

    dynamicparam {
        $parameters = New-Object System.Management.Automation.RuntimeDefinedParameterDictionary

        # AuthType
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("AuthType", [System.Object], $attributes)
        $parameters.Add("AuthType", $parameter)

        # Credential
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.CredentialAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Credential", [System.Management.Automation.PSCredential], $attributes)
        $parameters.Add("Credential", $parameter)

        # Identity
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.Position = 0
        $attribute.Mandatory = $True
        $attribute.ValueFromPipeline = $True
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Identity", [System.Object], $attributes)
        $parameters.Add("Identity", $parameter)

        # Server
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Server", [System.String], $attributes)
        $parameters.Add("Server", $parameter)

        return $parameters
    }

    end {
        throw '{0}: StubNotImplemented' -f $MyInvocation.MyCommand
    }
}

function Remove-ADCentralAccessPolicy {
    <#
    .SYNOPSIS
        Remove-ADCentralAccessPolicy [-Identity] <ADCentralAccessPolicy> [-WhatIf] [-Confirm] [-AuthType <ADAuthType>] [-Credential <pscredential>] [-Server <string>] [<CommonParameters>]
    #>


    [CmdletBinding(SupportsShouldProcess=$true, ConfirmImpact='High', HelpUri='http://go.microsoft.com/fwlink/?LinkId=21638')]
    param ( )

    dynamicparam {
        $parameters = New-Object System.Management.Automation.RuntimeDefinedParameterDictionary

        # AuthType
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("AuthType", [System.Object], $attributes)
        $parameters.Add("AuthType", $parameter)

        # Credential
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.CredentialAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Credential", [System.Management.Automation.PSCredential], $attributes)
        $parameters.Add("Credential", $parameter)

        # Identity
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ValidateNotNullAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.Position = 0
        $attribute.Mandatory = $True
        $attribute.ValueFromPipeline = $True
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Identity", [System.Object], $attributes)
        $parameters.Add("Identity", $parameter)

        # Server
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Server", [System.String], $attributes)
        $parameters.Add("Server", $parameter)

        return $parameters
    }

    end {
        throw '{0}: StubNotImplemented' -f $MyInvocation.MyCommand
    }
}

function Remove-ADCentralAccessPolicyMember {
    <#
    .SYNOPSIS
        Remove-ADCentralAccessPolicyMember [-Identity] <ADCentralAccessPolicy> [-Members] <ADCentralAccessRule[]> [-WhatIf] [-Confirm] [-AuthType <ADAuthType>] [-Credential <pscredential>] [-PassThru] [-Server <string>] [<CommonParameters>]
    #>


    [CmdletBinding(SupportsShouldProcess=$true, ConfirmImpact='High', HelpUri='http://go.microsoft.com/fwlink/?LinkId=216386')]
    param ( )

    dynamicparam {
        $parameters = New-Object System.Management.Automation.RuntimeDefinedParameterDictionary

        # AuthType
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("AuthType", [System.Object], $attributes)
        $parameters.Add("AuthType", $parameter)

        # Credential
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.CredentialAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Credential", [System.Management.Automation.PSCredential], $attributes)
        $parameters.Add("Credential", $parameter)

        # Identity
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.Position = 0
        $attribute.Mandatory = $True
        $attribute.ValueFromPipeline = $True
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Identity", [System.Object], $attributes)
        $parameters.Add("Identity", $parameter)

        # Members
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.Position = 1
        $attribute.Mandatory = $True
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Members", [System.Object[]], $attributes)
        $parameters.Add("Members", $parameter)

        # PassThru
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ValidateNotNullAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("PassThru", [System.Management.Automation.SwitchParameter], $attributes)
        $parameters.Add("PassThru", $parameter)

        # Server
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Server", [System.String], $attributes)
        $parameters.Add("Server", $parameter)

        return $parameters
    }

    end {
        throw '{0}: StubNotImplemented' -f $MyInvocation.MyCommand
    }
}

function Remove-ADCentralAccessRule {
    <#
    .SYNOPSIS
        Remove-ADCentralAccessRule [-Identity] <ADCentralAccessRule> [-WhatIf] [-Confirm] [-AuthType <ADAuthType>] [-Credential <pscredential>] [-Server <string>] [<CommonParameters>]
    #>


    [CmdletBinding(SupportsShouldProcess=$true, ConfirmImpact='High', HelpUri='http://go.microsoft.com/fwlink/?LinkId=216387')]
    param ( )

    dynamicparam {
        $parameters = New-Object System.Management.Automation.RuntimeDefinedParameterDictionary

        # AuthType
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("AuthType", [System.Object], $attributes)
        $parameters.Add("AuthType", $parameter)

        # Credential
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.CredentialAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Credential", [System.Management.Automation.PSCredential], $attributes)
        $parameters.Add("Credential", $parameter)

        # Identity
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.Position = 0
        $attribute.Mandatory = $True
        $attribute.ValueFromPipeline = $True
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Identity", [System.Object], $attributes)
        $parameters.Add("Identity", $parameter)

        # Server
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Server", [System.String], $attributes)
        $parameters.Add("Server", $parameter)

        return $parameters
    }

    end {
        throw '{0}: StubNotImplemented' -f $MyInvocation.MyCommand
    }
}

function Remove-ADClaimTransformPolicy {
    <#
    .SYNOPSIS
        Remove-ADClaimTransformPolicy [-Identity] <ADClaimTransformPolicy> [-WhatIf] [-Confirm] [-AuthType <ADAuthType>] [-Credential <pscredential>] [-Server <string>] [<CommonParameters>]
    #>


    [CmdletBinding(SupportsShouldProcess=$true, ConfirmImpact='High', HelpUri='http://go.microsoft.com/fwlink/?LinkId=216388')]
    param ( )

    dynamicparam {
        $parameters = New-Object System.Management.Automation.RuntimeDefinedParameterDictionary

        # AuthType
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Identity"
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("AuthType", [System.Object], $attributes)
        $parameters.Add("AuthType", $parameter)

        # Credential
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Identity"
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.CredentialAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Credential", [System.Management.Automation.PSCredential], $attributes)
        $parameters.Add("Credential", $parameter)

        # Identity
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ValidateNotNullAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.Position = 0
        $attribute.ParameterSetName = "Identity"
        $attribute.Mandatory = $True
        $attribute.ValueFromPipeline = $True
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Identity", [System.Object], $attributes)
        $parameters.Add("Identity", $parameter)

        # Server
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Identity"
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Server", [System.String], $attributes)
        $parameters.Add("Server", $parameter)

        return $parameters
    }

    end {
        throw '{0}: StubNotImplemented' -f $MyInvocation.MyCommand
    }
}

function Remove-ADClaimType {
    <#
    .SYNOPSIS
        Remove-ADClaimType [-Identity] <ADClaimType> [-WhatIf] [-Confirm] [-AuthType <ADAuthType>] [-Credential <pscredential>] [-Force] [-Server <string>] [<CommonParameters>]
    #>


    [CmdletBinding(SupportsShouldProcess=$true, ConfirmImpact='High', HelpUri='http://go.microsoft.com/fwlink/?LinkId=216389')]
    param ( )

    dynamicparam {
        $parameters = New-Object System.Management.Automation.RuntimeDefinedParameterDictionary

        # AuthType
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("AuthType", [System.Object], $attributes)
        $parameters.Add("AuthType", $parameter)

        # Credential
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.CredentialAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Credential", [System.Management.Automation.PSCredential], $attributes)
        $parameters.Add("Credential", $parameter)

        # Force
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Force", [System.Management.Automation.SwitchParameter], $attributes)
        $parameters.Add("Force", $parameter)

        # Identity
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ValidateNotNullAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.Position = 0
        $attribute.Mandatory = $True
        $attribute.ValueFromPipeline = $True
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Identity", [System.Object], $attributes)
        $parameters.Add("Identity", $parameter)

        # Server
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Server", [System.String], $attributes)
        $parameters.Add("Server", $parameter)

        return $parameters
    }

    end {
        throw '{0}: StubNotImplemented' -f $MyInvocation.MyCommand
    }
}

function Remove-ADComputer {
    <#
    .SYNOPSIS
        Remove-ADComputer [-Identity] <ADComputer> [-WhatIf] [-Confirm] [-AuthType <ADAuthType>] [-Credential <pscredential>] [-Partition <string>] [-Server <string>] [<CommonParameters>]
    #>


    [CmdletBinding(SupportsShouldProcess=$true, ConfirmImpact='High', HelpUri='http://go.microsoft.com/fwlink/?LinkId=219332')]
    param ( )

    dynamicparam {
        $parameters = New-Object System.Management.Automation.RuntimeDefinedParameterDictionary

        # AuthType
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("AuthType", [System.Object], $attributes)
        $parameters.Add("AuthType", $parameter)

        # Credential
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.CredentialAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Credential", [System.Management.Automation.PSCredential], $attributes)
        $parameters.Add("Credential", $parameter)

        # Identity
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.Position = 0
        $attribute.Mandatory = $True
        $attribute.ValueFromPipeline = $True
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Identity", [System.Object], $attributes)
        $parameters.Add("Identity", $parameter)

        # Partition
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Partition", [System.String], $attributes)
        $parameters.Add("Partition", $parameter)

        # Server
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Server", [System.String], $attributes)
        $parameters.Add("Server", $parameter)

        return $parameters
    }

    end {
        throw '{0}: StubNotImplemented' -f $MyInvocation.MyCommand
    }
}

function Remove-ADComputerServiceAccount {
    <#
    .SYNOPSIS
        Remove-ADComputerServiceAccount [-Identity] <ADComputer> [-ServiceAccount] <ADServiceAccount[]> [-WhatIf] [-Confirm] [-AuthType <ADAuthType>] [-Credential <pscredential>] [-Partition <string>] [-PassThru] [-Server <string>] [<CommonParameters>]
    #>


    [CmdletBinding(SupportsShouldProcess=$true, ConfirmImpact='High', HelpUri='http://go.microsoft.com/fwlink/?LinkId=219340')]
    param ( )

    dynamicparam {
        $parameters = New-Object System.Management.Automation.RuntimeDefinedParameterDictionary

        # AuthType
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("AuthType", [System.Object], $attributes)
        $parameters.Add("AuthType", $parameter)

        # Credential
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.CredentialAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Credential", [System.Management.Automation.PSCredential], $attributes)
        $parameters.Add("Credential", $parameter)

        # Identity
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ValidateNotNullAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.AliasAttribute('Computer')
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.Position = 0
        $attribute.Mandatory = $True
        $attribute.ValueFromPipeline = $True
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Identity", [System.Object], $attributes)
        $parameters.Add("Identity", $parameter)

        # Partition
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Partition", [System.String], $attributes)
        $parameters.Add("Partition", $parameter)

        # PassThru
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("PassThru", [System.Management.Automation.SwitchParameter], $attributes)
        $parameters.Add("PassThru", $parameter)

        # Server
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Server", [System.String], $attributes)
        $parameters.Add("Server", $parameter)

        # ServiceAccount
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.Position = 1
        $attribute.Mandatory = $True
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("ServiceAccount", [System.Object[]], $attributes)
        $parameters.Add("ServiceAccount", $parameter)

        return $parameters
    }

    end {
        throw '{0}: StubNotImplemented' -f $MyInvocation.MyCommand
    }
}

function Remove-ADDomainControllerPasswordReplicationPolicy {
    <#
    .SYNOPSIS
        Remove-ADDomainControllerPasswordReplicationPolicy [-Identity] <ADDomainController> -AllowedList <ADPrincipal[]> [-WhatIf] [-Confirm] [-AuthType <ADAuthType>] [-Credential <pscredential>] [-PassThru] [-Server <string>] [<CommonParameters>]
 
Remove-ADDomainControllerPasswordReplicationPolicy [-Identity] <ADDomainController> -DeniedList <ADPrincipal[]> [-WhatIf] [-Confirm] [-AuthType <ADAuthType>] [-Credential <pscredential>] [-PassThru] [-Server <string>] [<CommonParameters>]
    #>


    [CmdletBinding(SupportsShouldProcess=$true, ConfirmImpact='High', HelpUri='http://go.microsoft.com/fwlink/?LinkId=216390')]
    param ( )

    dynamicparam {
        $parameters = New-Object System.Management.Automation.RuntimeDefinedParameterDictionary

        # AllowedList
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "AllowedPRP"
        $attribute.Mandatory = $True
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateCountAttribute(1, 2147483647)
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("AllowedList", [System.Object[]], $attributes)
        $parameters.Add("AllowedList", $parameter)

        # AuthType
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("AuthType", [System.Object], $attributes)
        $parameters.Add("AuthType", $parameter)

        # Credential
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.CredentialAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Credential", [System.Management.Automation.PSCredential], $attributes)
        $parameters.Add("Credential", $parameter)

        # DeniedList
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "DeniedPRP"
        $attribute.Mandatory = $True
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateCountAttribute(1, 2147483647)
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("DeniedList", [System.Object[]], $attributes)
        $parameters.Add("DeniedList", $parameter)

        # Identity
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ValidateNotNullAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.Position = 0
        $attribute.Mandatory = $True
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Identity", [System.Object], $attributes)
        $parameters.Add("Identity", $parameter)

        # PassThru
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ValidateNotNullAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("PassThru", [System.Management.Automation.SwitchParameter], $attributes)
        $parameters.Add("PassThru", $parameter)

        # Server
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Server", [System.String], $attributes)
        $parameters.Add("Server", $parameter)

        return $parameters
    }

    end {
        throw '{0}: StubNotImplemented' -f $MyInvocation.MyCommand
    }
}

function Remove-ADFineGrainedPasswordPolicy {
    <#
    .SYNOPSIS
        Remove-ADFineGrainedPasswordPolicy [-Identity] <ADFineGrainedPasswordPolicy> [-WhatIf] [-Confirm] [-AuthType <ADAuthType>] [-Credential <pscredential>] [-Server <string>] [<CommonParameters>]
    #>


    [CmdletBinding(SupportsShouldProcess=$true, ConfirmImpact='High', HelpUri='http://go.microsoft.com/fwlink/?LinkId=219334')]
    param ( )

    dynamicparam {
        $parameters = New-Object System.Management.Automation.RuntimeDefinedParameterDictionary

        # AuthType
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("AuthType", [System.Object], $attributes)
        $parameters.Add("AuthType", $parameter)

        # Credential
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.CredentialAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Credential", [System.Management.Automation.PSCredential], $attributes)
        $parameters.Add("Credential", $parameter)

        # Identity
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ValidateNotNullAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.Position = 0
        $attribute.Mandatory = $True
        $attribute.ValueFromPipeline = $True
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Identity", [System.Object], $attributes)
        $parameters.Add("Identity", $parameter)

        # Server
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Server", [System.String], $attributes)
        $parameters.Add("Server", $parameter)

        return $parameters
    }

    end {
        throw '{0}: StubNotImplemented' -f $MyInvocation.MyCommand
    }
}

function Remove-ADFineGrainedPasswordPolicySubject {
    <#
    .SYNOPSIS
        Remove-ADFineGrainedPasswordPolicySubject [-Identity] <ADFineGrainedPasswordPolicy> [-Subjects] <ADPrincipal[]> [-WhatIf] [-Confirm] [-AuthType <ADAuthType>] [-Credential <pscredential>] [-Partition <string>] [-PassThru] [-Server <string>] [<CommonParameters>]
    #>


    [CmdletBinding(SupportsShouldProcess=$true, ConfirmImpact='High', HelpUri='http://go.microsoft.com/fwlink/?LinkId=216391')]
    param ( )

    dynamicparam {
        $parameters = New-Object System.Management.Automation.RuntimeDefinedParameterDictionary

        # AuthType
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("AuthType", [System.Object], $attributes)
        $parameters.Add("AuthType", $parameter)

        # Credential
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.CredentialAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Credential", [System.Management.Automation.PSCredential], $attributes)
        $parameters.Add("Credential", $parameter)

        # Identity
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ValidateNotNullAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.Position = 0
        $attribute.Mandatory = $True
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Identity", [System.Object], $attributes)
        $parameters.Add("Identity", $parameter)

        # Partition
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Partition", [System.String], $attributes)
        $parameters.Add("Partition", $parameter)

        # PassThru
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("PassThru", [System.Management.Automation.SwitchParameter], $attributes)
        $parameters.Add("PassThru", $parameter)

        # Server
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Server", [System.String], $attributes)
        $parameters.Add("Server", $parameter)

        # Subjects
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.Position = 1
        $attribute.Mandatory = $True
        $attribute.ValueFromPipeline = $True
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Subjects", [System.Object[]], $attributes)
        $parameters.Add("Subjects", $parameter)

        return $parameters
    }

    end {
        throw '{0}: StubNotImplemented' -f $MyInvocation.MyCommand
    }
}

function Remove-ADGroup {
    <#
    .SYNOPSIS
        Remove-ADGroup [-Identity] <ADGroup> [-WhatIf] [-Confirm] [-AuthType <ADAuthType>] [-Credential <pscredential>] [-Partition <string>] [-Server <string>] [<CommonParameters>]
    #>


    [CmdletBinding(SupportsShouldProcess=$true, ConfirmImpact='High', HelpUri='http://go.microsoft.com/fwlink/?LinkId=219333')]
    param ( )

    dynamicparam {
        $parameters = New-Object System.Management.Automation.RuntimeDefinedParameterDictionary

        # AuthType
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("AuthType", [System.Object], $attributes)
        $parameters.Add("AuthType", $parameter)

        # Credential
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.CredentialAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Credential", [System.Management.Automation.PSCredential], $attributes)
        $parameters.Add("Credential", $parameter)

        # Identity
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.Position = 0
        $attribute.Mandatory = $True
        $attribute.ValueFromPipeline = $True
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Identity", [System.Object], $attributes)
        $parameters.Add("Identity", $parameter)

        # Partition
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Partition", [System.String], $attributes)
        $parameters.Add("Partition", $parameter)

        # Server
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Server", [System.String], $attributes)
        $parameters.Add("Server", $parameter)

        return $parameters
    }

    end {
        throw '{0}: StubNotImplemented' -f $MyInvocation.MyCommand
    }
}

function Remove-ADGroupMember {
    <#
    .SYNOPSIS
        Remove-ADGroupMember [-Identity] <ADGroup> [-Members] <ADPrincipal[]> [-WhatIf] [-Confirm] [-AuthType <ADAuthType>] [-Credential <pscredential>] [-Partition <string>] [-PassThru] [-Server <string>] [<CommonParameters>]
    #>


    [CmdletBinding(SupportsShouldProcess=$true, ConfirmImpact='High', HelpUri='http://go.microsoft.com/fwlink/?LinkId=219336')]
    param ( )

    dynamicparam {
        $parameters = New-Object System.Management.Automation.RuntimeDefinedParameterDictionary

        # AuthType
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("AuthType", [System.Object], $attributes)
        $parameters.Add("AuthType", $parameter)

        # Credential
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.CredentialAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Credential", [System.Management.Automation.PSCredential], $attributes)
        $parameters.Add("Credential", $parameter)

        # Identity
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.Position = 0
        $attribute.Mandatory = $True
        $attribute.ValueFromPipeline = $True
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Identity", [System.Object], $attributes)
        $parameters.Add("Identity", $parameter)

        # Members
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.Position = 1
        $attribute.Mandatory = $True
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Members", [System.Object[]], $attributes)
        $parameters.Add("Members", $parameter)

        # Partition
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Partition", [System.String], $attributes)
        $parameters.Add("Partition", $parameter)

        # PassThru
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("PassThru", [System.Management.Automation.SwitchParameter], $attributes)
        $parameters.Add("PassThru", $parameter)

        # Server
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Server", [System.String], $attributes)
        $parameters.Add("Server", $parameter)

        return $parameters
    }

    end {
        throw '{0}: StubNotImplemented' -f $MyInvocation.MyCommand
    }
}

function Remove-ADObject {
    <#
    .SYNOPSIS
        Remove-ADObject [-Identity] <ADObject> [-WhatIf] [-Confirm] [-AuthType <ADAuthType>] [-Credential <pscredential>] [-IncludeDeletedObjects] [-Partition <string>] [-Recursive] [-Server <string>] [<CommonParameters>]
    #>


    [CmdletBinding(SupportsShouldProcess=$true, ConfirmImpact='High', HelpUri='http://go.microsoft.com/fwlink/?LinkId=219330')]
    param ( )

    dynamicparam {
        $parameters = New-Object System.Management.Automation.RuntimeDefinedParameterDictionary

        # AuthType
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("AuthType", [System.Object], $attributes)
        $parameters.Add("AuthType", $parameter)

        # Credential
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.CredentialAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Credential", [System.Management.Automation.PSCredential], $attributes)
        $parameters.Add("Credential", $parameter)

        # Identity
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.Position = 0
        $attribute.Mandatory = $True
        $attribute.ValueFromPipeline = $True
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Identity", [System.Object], $attributes)
        $parameters.Add("Identity", $parameter)

        # IncludeDeletedObjects
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("IncludeDeletedObjects", [System.Management.Automation.SwitchParameter], $attributes)
        $parameters.Add("IncludeDeletedObjects", $parameter)

        # Partition
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Partition", [System.String], $attributes)
        $parameters.Add("Partition", $parameter)

        # Recursive
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Recursive", [System.Management.Automation.SwitchParameter], $attributes)
        $parameters.Add("Recursive", $parameter)

        # Server
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Server", [System.String], $attributes)
        $parameters.Add("Server", $parameter)

        return $parameters
    }

    end {
        throw '{0}: StubNotImplemented' -f $MyInvocation.MyCommand
    }
}

function Remove-ADOrganizationalUnit {
    <#
    .SYNOPSIS
        Remove-ADOrganizationalUnit [-Identity] <ADOrganizationalUnit> [-WhatIf] [-Confirm] [-AuthType <ADAuthType>] [-Credential <pscredential>] [-Partition <string>] [-Recursive] [-Server <string>] [<CommonParameters>]
    #>


    [CmdletBinding(SupportsShouldProcess=$true, ConfirmImpact='High', HelpUri='http://go.microsoft.com/fwlink/?LinkId=219335')]
    param ( )

    dynamicparam {
        $parameters = New-Object System.Management.Automation.RuntimeDefinedParameterDictionary

        # AuthType
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("AuthType", [System.Object], $attributes)
        $parameters.Add("AuthType", $parameter)

        # Credential
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.CredentialAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Credential", [System.Management.Automation.PSCredential], $attributes)
        $parameters.Add("Credential", $parameter)

        # Identity
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ValidateNotNullAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.Position = 0
        $attribute.Mandatory = $True
        $attribute.ValueFromPipeline = $True
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Identity", [System.Object], $attributes)
        $parameters.Add("Identity", $parameter)

        # Partition
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Partition", [System.String], $attributes)
        $parameters.Add("Partition", $parameter)

        # Recursive
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Recursive", [System.Management.Automation.SwitchParameter], $attributes)
        $parameters.Add("Recursive", $parameter)

        # Server
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Server", [System.String], $attributes)
        $parameters.Add("Server", $parameter)

        return $parameters
    }

    end {
        throw '{0}: StubNotImplemented' -f $MyInvocation.MyCommand
    }
}

function Remove-ADPrincipalGroupMembership {
    <#
    .SYNOPSIS
        Remove-ADPrincipalGroupMembership [-Identity] <ADPrincipal> [-MemberOf] <ADGroup[]> [-WhatIf] [-Confirm] [-AuthType <ADAuthType>] [-Credential <pscredential>] [-Partition <string>] [-PassThru] [-Server <string>] [<CommonParameters>]
    #>


    [CmdletBinding(SupportsShouldProcess=$true, ConfirmImpact='High', HelpUri='http://go.microsoft.com/fwlink/?LinkId=219337')]
    param ( )

    dynamicparam {
        $parameters = New-Object System.Management.Automation.RuntimeDefinedParameterDictionary

        # AuthType
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("AuthType", [System.Object], $attributes)
        $parameters.Add("AuthType", $parameter)

        # Credential
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.CredentialAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Credential", [System.Management.Automation.PSCredential], $attributes)
        $parameters.Add("Credential", $parameter)

        # Identity
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.Position = 0
        $attribute.Mandatory = $True
        $attribute.ValueFromPipeline = $True
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Identity", [System.Object], $attributes)
        $parameters.Add("Identity", $parameter)

        # MemberOf
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.Position = 1
        $attribute.Mandatory = $True
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("MemberOf", [System.Object[]], $attributes)
        $parameters.Add("MemberOf", $parameter)

        # Partition
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Partition", [System.String], $attributes)
        $parameters.Add("Partition", $parameter)

        # PassThru
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("PassThru", [System.Management.Automation.SwitchParameter], $attributes)
        $parameters.Add("PassThru", $parameter)

        # Server
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Server", [System.String], $attributes)
        $parameters.Add("Server", $parameter)

        return $parameters
    }

    end {
        throw '{0}: StubNotImplemented' -f $MyInvocation.MyCommand
    }
}

function Remove-ADReplicationSite {
    <#
    .SYNOPSIS
        Remove-ADReplicationSite [-Identity] <ADReplicationSite> [-WhatIf] [-Confirm] [-AuthType <ADAuthType>] [-Credential <pscredential>] [-Server <string>] [<CommonParameters>]
    #>


    [CmdletBinding(SupportsShouldProcess=$true, ConfirmImpact='High', HelpUri='http://go.microsoft.com/fwlink/?LinkId=216393')]
    param ( )

    dynamicparam {
        $parameters = New-Object System.Management.Automation.RuntimeDefinedParameterDictionary

        # AuthType
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Identity"
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("AuthType", [System.Object], $attributes)
        $parameters.Add("AuthType", $parameter)

        # Credential
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Identity"
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.CredentialAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Credential", [System.Management.Automation.PSCredential], $attributes)
        $parameters.Add("Credential", $parameter)

        # Identity
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ValidateNotNullAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.Position = 0
        $attribute.ParameterSetName = "Identity"
        $attribute.Mandatory = $True
        $attribute.ValueFromPipeline = $True
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Identity", [System.Object], $attributes)
        $parameters.Add("Identity", $parameter)

        # Server
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Identity"
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Server", [System.String], $attributes)
        $parameters.Add("Server", $parameter)

        return $parameters
    }

    end {
        throw '{0}: StubNotImplemented' -f $MyInvocation.MyCommand
    }
}

function Remove-ADReplicationSiteLink {
    <#
    .SYNOPSIS
        Remove-ADReplicationSiteLink [-Identity] <ADReplicationSiteLink> [-WhatIf] [-Confirm] [-AuthType <ADAuthType>] [-Credential <pscredential>] [-Server <string>] [<CommonParameters>]
    #>


    [CmdletBinding(SupportsShouldProcess=$true, ConfirmImpact='High', HelpUri='http://go.microsoft.com/fwlink/?LinkId=216394')]
    param ( )

    dynamicparam {
        $parameters = New-Object System.Management.Automation.RuntimeDefinedParameterDictionary

        # AuthType
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Identity"
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("AuthType", [System.Object], $attributes)
        $parameters.Add("AuthType", $parameter)

        # Credential
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.CredentialAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Identity"
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Credential", [System.Management.Automation.PSCredential], $attributes)
        $parameters.Add("Credential", $parameter)

        # Identity
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ValidateNotNullAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.Position = 0
        $attribute.ParameterSetName = "Identity"
        $attribute.Mandatory = $True
        $attribute.ValueFromPipeline = $True
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Identity", [System.Object], $attributes)
        $parameters.Add("Identity", $parameter)

        # Server
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Identity"
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Server", [System.String], $attributes)
        $parameters.Add("Server", $parameter)

        return $parameters
    }

    end {
        throw '{0}: StubNotImplemented' -f $MyInvocation.MyCommand
    }
}

function Remove-ADReplicationSiteLinkBridge {
    <#
    .SYNOPSIS
        Remove-ADReplicationSiteLinkBridge [-Identity] <ADReplicationSiteLinkBridge> [-WhatIf] [-Confirm] [-AuthType <ADAuthType>] [-Credential <pscredential>] [-Server <string>] [<CommonParameters>]
    #>


    [CmdletBinding(SupportsShouldProcess=$true, ConfirmImpact='High', HelpUri='http://go.microsoft.com/fwlink/?LinkId=216395')]
    param ( )

    dynamicparam {
        $parameters = New-Object System.Management.Automation.RuntimeDefinedParameterDictionary

        # AuthType
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Identity"
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("AuthType", [System.Object], $attributes)
        $parameters.Add("AuthType", $parameter)

        # Credential
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Identity"
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.CredentialAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Credential", [System.Management.Automation.PSCredential], $attributes)
        $parameters.Add("Credential", $parameter)

        # Identity
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ValidateNotNullAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.Position = 0
        $attribute.ParameterSetName = "Identity"
        $attribute.Mandatory = $True
        $attribute.ValueFromPipeline = $True
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Identity", [System.Object], $attributes)
        $parameters.Add("Identity", $parameter)

        # Server
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Identity"
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Server", [System.String], $attributes)
        $parameters.Add("Server", $parameter)

        return $parameters
    }

    end {
        throw '{0}: StubNotImplemented' -f $MyInvocation.MyCommand
    }
}

function Remove-ADReplicationSubnet {
    <#
    .SYNOPSIS
        Remove-ADReplicationSubnet [-Identity] <ADReplicationSubnet> [-WhatIf] [-Confirm] [-AuthType <ADAuthType>] [-Credential <pscredential>] [-Server <string>] [<CommonParameters>]
    #>


    [CmdletBinding(SupportsShouldProcess=$true, ConfirmImpact='High', HelpUri='http://go.microsoft.com/fwlink/?LinkId=216396')]
    param ( )

    dynamicparam {
        $parameters = New-Object System.Management.Automation.RuntimeDefinedParameterDictionary

        # AuthType
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("AuthType", [System.Object], $attributes)
        $parameters.Add("AuthType", $parameter)

        # Credential
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.CredentialAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Credential", [System.Management.Automation.PSCredential], $attributes)
        $parameters.Add("Credential", $parameter)

        # Identity
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.Position = 0
        $attribute.ParameterSetName = "Identity"
        $attribute.Mandatory = $True
        $attribute.ValueFromPipeline = $True
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Identity", [System.Object], $attributes)
        $parameters.Add("Identity", $parameter)

        # Server
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Server", [System.String], $attributes)
        $parameters.Add("Server", $parameter)

        return $parameters
    }

    end {
        throw '{0}: StubNotImplemented' -f $MyInvocation.MyCommand
    }
}

function Remove-ADResourceProperty {
    <#
    .SYNOPSIS
        Remove-ADResourceProperty [-Identity] <ADResourceProperty> [-WhatIf] [-Confirm] [-AuthType <ADAuthType>] [-Credential <pscredential>] [-Server <string>] [<CommonParameters>]
    #>


    [CmdletBinding(SupportsShouldProcess=$true, ConfirmImpact='High', HelpUri='http://go.microsoft.com/fwlink/?LinkId=216397')]
    param ( )

    dynamicparam {
        $parameters = New-Object System.Management.Automation.RuntimeDefinedParameterDictionary

        # AuthType
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("AuthType", [System.Object], $attributes)
        $parameters.Add("AuthType", $parameter)

        # Credential
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.CredentialAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Credential", [System.Management.Automation.PSCredential], $attributes)
        $parameters.Add("Credential", $parameter)

        # Identity
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.Position = 0
        $attribute.Mandatory = $True
        $attribute.ValueFromPipeline = $True
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Identity", [System.Object], $attributes)
        $parameters.Add("Identity", $parameter)

        # Server
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Server", [System.String], $attributes)
        $parameters.Add("Server", $parameter)

        return $parameters
    }

    end {
        throw '{0}: StubNotImplemented' -f $MyInvocation.MyCommand
    }
}

function Remove-ADResourcePropertyList {
    <#
    .SYNOPSIS
        Remove-ADResourcePropertyList [-Identity] <ADResourcePropertyList> [-WhatIf] [-Confirm] [-AuthType <ADAuthType>] [-Credential <pscredential>] [-Server <string>] [<CommonParameters>]
    #>


    [CmdletBinding(SupportsShouldProcess=$true, ConfirmImpact='High', HelpUri='http://go.microsoft.com/fwlink/?LinkId=216398')]
    param ( )

    dynamicparam {
        $parameters = New-Object System.Management.Automation.RuntimeDefinedParameterDictionary

        # AuthType
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("AuthType", [System.Object], $attributes)
        $parameters.Add("AuthType", $parameter)

        # Credential
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.CredentialAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Credential", [System.Management.Automation.PSCredential], $attributes)
        $parameters.Add("Credential", $parameter)

        # Identity
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.Position = 0
        $attribute.Mandatory = $True
        $attribute.ValueFromPipeline = $True
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Identity", [System.Object], $attributes)
        $parameters.Add("Identity", $parameter)

        # Server
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Server", [System.String], $attributes)
        $parameters.Add("Server", $parameter)

        return $parameters
    }

    end {
        throw '{0}: StubNotImplemented' -f $MyInvocation.MyCommand
    }
}

function Remove-ADResourcePropertyListMember {
    <#
    .SYNOPSIS
        Remove-ADResourcePropertyListMember [-Identity] <ADResourcePropertyList> [-Members] <ADResourceProperty[]> [-WhatIf] [-Confirm] [-AuthType <ADAuthType>] [-Credential <pscredential>] [-PassThru] [-Server <string>] [<CommonParameters>]
    #>


    [CmdletBinding(SupportsShouldProcess=$true, ConfirmImpact='High', HelpUri='http://go.microsoft.com/fwlink/?LinkId=216399')]
    param ( )

    dynamicparam {
        $parameters = New-Object System.Management.Automation.RuntimeDefinedParameterDictionary

        # AuthType
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("AuthType", [System.Object], $attributes)
        $parameters.Add("AuthType", $parameter)

        # Credential
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.CredentialAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Credential", [System.Management.Automation.PSCredential], $attributes)
        $parameters.Add("Credential", $parameter)

        # Identity
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ValidateNotNullAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.Position = 0
        $attribute.Mandatory = $True
        $attribute.ValueFromPipeline = $True
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Identity", [System.Object], $attributes)
        $parameters.Add("Identity", $parameter)

        # Members
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.Position = 1
        $attribute.Mandatory = $True
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Members", [System.Object[]], $attributes)
        $parameters.Add("Members", $parameter)

        # PassThru
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("PassThru", [System.Management.Automation.SwitchParameter], $attributes)
        $parameters.Add("PassThru", $parameter)

        # Server
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Server", [System.String], $attributes)
        $parameters.Add("Server", $parameter)

        return $parameters
    }

    end {
        throw '{0}: StubNotImplemented' -f $MyInvocation.MyCommand
    }
}

function Remove-ADServiceAccount {
    <#
    .SYNOPSIS
        Remove-ADServiceAccount [-Identity] <ADServiceAccount> [-WhatIf] [-Confirm] [-AuthType <ADAuthType>] [-Credential <pscredential>] [-Partition <string>] [-Server <string>] [<CommonParameters>]
    #>


    [CmdletBinding(SupportsShouldProcess=$true, ConfirmImpact='High', HelpUri='http://go.microsoft.com/fwlink/?LinkId=219339')]
    param ( )

    dynamicparam {
        $parameters = New-Object System.Management.Automation.RuntimeDefinedParameterDictionary

        # AuthType
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("AuthType", [System.Object], $attributes)
        $parameters.Add("AuthType", $parameter)

        # Credential
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.CredentialAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Credential", [System.Management.Automation.PSCredential], $attributes)
        $parameters.Add("Credential", $parameter)

        # Identity
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ValidateNotNullAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.Position = 0
        $attribute.Mandatory = $True
        $attribute.ValueFromPipeline = $True
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Identity", [System.Object], $attributes)
        $parameters.Add("Identity", $parameter)

        # Partition
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Partition", [System.String], $attributes)
        $parameters.Add("Partition", $parameter)

        # Server
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Server", [System.String], $attributes)
        $parameters.Add("Server", $parameter)

        return $parameters
    }

    end {
        throw '{0}: StubNotImplemented' -f $MyInvocation.MyCommand
    }
}

function Remove-ADUser {
    <#
    .SYNOPSIS
        Remove-ADUser [-Identity] <ADUser> [-WhatIf] [-Confirm] [-AuthType <ADAuthType>] [-Credential <pscredential>] [-Partition <string>] [-Server <string>] [<CommonParameters>]
    #>


    [CmdletBinding(SupportsShouldProcess=$true, ConfirmImpact='High', HelpUri='http://go.microsoft.com/fwlink/?LinkId=219331')]
    param ( )

    dynamicparam {
        $parameters = New-Object System.Management.Automation.RuntimeDefinedParameterDictionary

        # AuthType
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("AuthType", [System.Object], $attributes)
        $parameters.Add("AuthType", $parameter)

        # Credential
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.CredentialAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Credential", [System.Management.Automation.PSCredential], $attributes)
        $parameters.Add("Credential", $parameter)

        # Identity
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ValidateNotNullAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.Position = 0
        $attribute.Mandatory = $True
        $attribute.ValueFromPipeline = $True
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Identity", [System.Object], $attributes)
        $parameters.Add("Identity", $parameter)

        # Partition
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Partition", [System.String], $attributes)
        $parameters.Add("Partition", $parameter)

        # Server
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Server", [System.String], $attributes)
        $parameters.Add("Server", $parameter)

        return $parameters
    }

    end {
        throw '{0}: StubNotImplemented' -f $MyInvocation.MyCommand
    }
}

function Rename-ADObject {
    <#
    .SYNOPSIS
        Rename-ADObject [-Identity] <ADObject> [-NewName] <string> [-WhatIf] [-Confirm] [-AuthType <ADAuthType>] [-Credential <pscredential>] [-Partition <string>] [-PassThru] [-Server <string>] [<CommonParameters>]
    #>


    [CmdletBinding(SupportsShouldProcess=$true, ConfirmImpact='Medium', HelpUri='http://go.microsoft.com/fwlink/?LinkId=219341')]
    param ( )

    dynamicparam {
        $parameters = New-Object System.Management.Automation.RuntimeDefinedParameterDictionary

        # AuthType
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("AuthType", [System.Object], $attributes)
        $parameters.Add("AuthType", $parameter)

        # Credential
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.CredentialAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Credential", [System.Management.Automation.PSCredential], $attributes)
        $parameters.Add("Credential", $parameter)

        # Identity
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ValidateNotNullAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.Position = 0
        $attribute.Mandatory = $True
        $attribute.ValueFromPipeline = $True
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Identity", [System.Object], $attributes)
        $parameters.Add("Identity", $parameter)

        # NewName
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.Position = 1
        $attribute.Mandatory = $True
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("NewName", [System.String], $attributes)
        $parameters.Add("NewName", $parameter)

        # Partition
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Partition", [System.String], $attributes)
        $parameters.Add("Partition", $parameter)

        # PassThru
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("PassThru", [System.Management.Automation.SwitchParameter], $attributes)
        $parameters.Add("PassThru", $parameter)

        # Server
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Server", [System.String], $attributes)
        $parameters.Add("Server", $parameter)

        return $parameters
    }

    end {
        throw '{0}: StubNotImplemented' -f $MyInvocation.MyCommand
    }
}

function Reset-ADServiceAccountPassword {
    <#
    .SYNOPSIS
        Reset-ADServiceAccountPassword [-Identity] <ADServiceAccount> [-WhatIf] [-Confirm] [-AuthType <ADAuthType>] [-Partition <string>] [<CommonParameters>]
    #>


    [CmdletBinding(SupportsShouldProcess=$true, ConfirmImpact='Medium', HelpUri='http://go.microsoft.com/fwlink/?LinkId=216403')]
    param ( )

    dynamicparam {
        $parameters = New-Object System.Management.Automation.RuntimeDefinedParameterDictionary

        # AuthType
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("AuthType", [System.Object], $attributes)
        $parameters.Add("AuthType", $parameter)

        # Identity
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ValidateNotNullAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.Position = 0
        $attribute.Mandatory = $True
        $attribute.ValueFromPipeline = $True
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Identity", [System.Object], $attributes)
        $parameters.Add("Identity", $parameter)

        # Partition
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Partition", [System.String], $attributes)
        $parameters.Add("Partition", $parameter)

        return $parameters
    }

    end {
        throw '{0}: StubNotImplemented' -f $MyInvocation.MyCommand
    }
}

function Restore-ADObject {
    <#
    .SYNOPSIS
        Restore-ADObject [-Identity] <ADObject> [-WhatIf] [-Confirm] [-AuthType <ADAuthType>] [-Credential <pscredential>] [-NewName <string>] [-Partition <string>] [-PassThru] [-Server <string>] [-TargetPath <string>] [<CommonParameters>]
    #>


    [CmdletBinding(SupportsShouldProcess=$true, ConfirmImpact='Medium', HelpUri='http://go.microsoft.com/fwlink/?LinkId=219342')]
    param ( )

    dynamicparam {
        $parameters = New-Object System.Management.Automation.RuntimeDefinedParameterDictionary

        # AuthType
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("AuthType", [System.Object], $attributes)
        $parameters.Add("AuthType", $parameter)

        # Credential
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.CredentialAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Credential", [System.Management.Automation.PSCredential], $attributes)
        $parameters.Add("Credential", $parameter)

        # Identity
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.Position = 0
        $attribute.Mandatory = $True
        $attribute.ValueFromPipeline = $True
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Identity", [System.Object], $attributes)
        $parameters.Add("Identity", $parameter)

        # NewName
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("NewName", [System.String], $attributes)
        $parameters.Add("NewName", $parameter)

        # Partition
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Partition", [System.String], $attributes)
        $parameters.Add("Partition", $parameter)

        # PassThru
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("PassThru", [System.Management.Automation.SwitchParameter], $attributes)
        $parameters.Add("PassThru", $parameter)

        # Server
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Server", [System.String], $attributes)
        $parameters.Add("Server", $parameter)

        # TargetPath
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("TargetPath", [System.String], $attributes)
        $parameters.Add("TargetPath", $parameter)

        return $parameters
    }

    end {
        throw '{0}: StubNotImplemented' -f $MyInvocation.MyCommand
    }
}

function Revoke-ADAuthenticationPolicySiloAccess {
    <#
    .SYNOPSIS
        Revoke-ADAuthenticationPolicySiloAccess [-Identity] <ADAuthenticationPolicySilo> [-Account] <ADAccount> [-WhatIf] [-Confirm] [-AuthType <ADAuthType>] [-Credential <pscredential>] [-PassThru] [-Server <string>] [<CommonParameters>]
    #>


    [CmdletBinding(SupportsShouldProcess=$true, ConfirmImpact='High', HelpUri='http://go.microsoft.com/fwlink/?LinkId=301415')]
    param ( )

    dynamicparam {
        $parameters = New-Object System.Management.Automation.RuntimeDefinedParameterDictionary

        # Account
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.Position = 1
        $attribute.Mandatory = $True
        $attribute.ValueFromPipeline = $True
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Account", [System.Object], $attributes)
        $parameters.Add("Account", $parameter)

        # AuthType
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("AuthType", [System.Object], $attributes)
        $parameters.Add("AuthType", $parameter)

        # Credential
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.CredentialAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Credential", [System.Management.Automation.PSCredential], $attributes)
        $parameters.Add("Credential", $parameter)

        # Identity
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ValidateNotNullAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.Position = 0
        $attribute.Mandatory = $True
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Identity", [System.Object], $attributes)
        $parameters.Add("Identity", $parameter)

        # PassThru
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("PassThru", [System.Management.Automation.SwitchParameter], $attributes)
        $parameters.Add("PassThru", $parameter)

        # Server
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Server", [System.String], $attributes)
        $parameters.Add("Server", $parameter)

        return $parameters
    }

    end {
        throw '{0}: StubNotImplemented' -f $MyInvocation.MyCommand
    }
}

function Search-ADAccount {
    <#
    .SYNOPSIS
        Search-ADAccount -AccountDisabled [-AuthType <ADAuthType>] [-ComputersOnly] [-Credential <pscredential>] [-ResultPageSize <int>] [-ResultSetSize <int>] [-SearchBase <string>] [-SearchScope <ADSearchScope>] [-Server <string>] [-UsersOnly] [<CommonParameters>]
 
Search-ADAccount -AccountExpired [-AuthType <ADAuthType>] [-ComputersOnly] [-Credential <pscredential>] [-ResultPageSize <int>] [-ResultSetSize <int>] [-SearchBase <string>] [-SearchScope <ADSearchScope>] [-Server <string>] [-UsersOnly] [<CommonParameters>]
 
Search-ADAccount -AccountExpiring [-AuthType <ADAuthType>] [-ComputersOnly] [-Credential <pscredential>] [-DateTime <datetime>] [-ResultPageSize <int>] [-ResultSetSize <int>] [-SearchBase <string>] [-SearchScope <ADSearchScope>] [-Server <string>] [-TimeSpan <timespan>] [-UsersOnly] [<CommonParameters>]
 
Search-ADAccount -AccountInactive [-AuthType <ADAuthType>] [-ComputersOnly] [-Credential <pscredential>] [-DateTime <datetime>] [-ResultPageSize <int>] [-ResultSetSize <int>] [-SearchBase <string>] [-SearchScope <ADSearchScope>] [-Server <string>] [-TimeSpan <timespan>] [-UsersOnly] [<CommonParameters>]
 
Search-ADAccount -LockedOut [-AuthType <ADAuthType>] [-ComputersOnly] [-Credential <pscredential>] [-ResultPageSize <int>] [-ResultSetSize <int>] [-SearchBase <string>] [-SearchScope <ADSearchScope>] [-Server <string>] [-UsersOnly] [<CommonParameters>]
 
Search-ADAccount -PasswordExpired [-AuthType <ADAuthType>] [-ComputersOnly] [-Credential <pscredential>] [-ResultPageSize <int>] [-ResultSetSize <int>] [-SearchBase <string>] [-SearchScope <ADSearchScope>] [-Server <string>] [-UsersOnly] [<CommonParameters>]
 
Search-ADAccount -PasswordNeverExpires [-AuthType <ADAuthType>] [-ComputersOnly] [-Credential <pscredential>] [-ResultPageSize <int>] [-ResultSetSize <int>] [-SearchBase <string>] [-SearchScope <ADSearchScope>] [-Server <string>] [-UsersOnly] [<CommonParameters>]
    #>


    [CmdletBinding(HelpUri='http://go.microsoft.com/fwlink/?LinkId=219343')]
    param ( )

    dynamicparam {
        $parameters = New-Object System.Management.Automation.RuntimeDefinedParameterDictionary

        # AccountDisabled
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "AccountDisabled"
        $attribute.Mandatory = $True
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("AccountDisabled", [System.Management.Automation.SwitchParameter], $attributes)
        $parameters.Add("AccountDisabled", $parameter)

        # AccountExpired
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "AccountExpired"
        $attribute.Mandatory = $True
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("AccountExpired", [System.Management.Automation.SwitchParameter], $attributes)
        $parameters.Add("AccountExpired", $parameter)

        # AccountExpiring
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "AccountExpiring"
        $attribute.Mandatory = $True
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("AccountExpiring", [System.Management.Automation.SwitchParameter], $attributes)
        $parameters.Add("AccountExpiring", $parameter)

        # AccountInactive
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "AccountInactive"
        $attribute.Mandatory = $True
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("AccountInactive", [System.Management.Automation.SwitchParameter], $attributes)
        $parameters.Add("AccountInactive", $parameter)

        # AuthType
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("AuthType", [System.Object], $attributes)
        $parameters.Add("AuthType", $parameter)

        # ComputersOnly
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("ComputersOnly", [System.Management.Automation.SwitchParameter], $attributes)
        $parameters.Add("ComputersOnly", $parameter)

        # Credential
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.CredentialAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Credential", [System.Management.Automation.PSCredential], $attributes)
        $parameters.Add("Credential", $parameter)

        # DateTime
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "AccountExpiring"
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "AccountInactive"
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("DateTime", [System.DateTime], $attributes)
        $parameters.Add("DateTime", $parameter)

        # LockedOut
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "LockedOut"
        $attribute.Mandatory = $True
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("LockedOut", [System.Management.Automation.SwitchParameter], $attributes)
        $parameters.Add("LockedOut", $parameter)

        # PasswordExpired
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "PasswordExpired"
        $attribute.Mandatory = $True
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("PasswordExpired", [System.Management.Automation.SwitchParameter], $attributes)
        $parameters.Add("PasswordExpired", $parameter)

        # PasswordNeverExpires
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "PasswordNeverExpires"
        $attribute.Mandatory = $True
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("PasswordNeverExpires", [System.Management.Automation.SwitchParameter], $attributes)
        $parameters.Add("PasswordNeverExpires", $parameter)

        # ResultPageSize
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateRangeAttribute(0, 2147483647)
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("ResultPageSize", [System.Int32], $attributes)
        $parameters.Add("ResultPageSize", $parameter)

        # ResultSetSize
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("ResultSetSize", [System.Nullable`1[System.Int32]], $attributes)
        $parameters.Add("ResultSetSize", $parameter)

        # SearchBase
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("SearchBase", [System.String], $attributes)
        $parameters.Add("SearchBase", $parameter)

        # SearchScope
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("SearchScope", [System.Object], $attributes)
        $parameters.Add("SearchScope", $parameter)

        # Server
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Server", [System.String], $attributes)
        $parameters.Add("Server", $parameter)

        # TimeSpan
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "AccountInactive"
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "AccountExpiring"
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("TimeSpan", [System.TimeSpan], $attributes)
        $parameters.Add("TimeSpan", $parameter)

        # UsersOnly
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("UsersOnly", [System.Management.Automation.SwitchParameter], $attributes)
        $parameters.Add("UsersOnly", $parameter)

        return $parameters
    }

    end {
        throw '{0}: StubNotImplemented' -f $MyInvocation.MyCommand
    }
}

function Set-ADAccountAuthenticationPolicySilo {
    <#
    .SYNOPSIS
        Set-ADAccountAuthenticationPolicySilo [-Identity] <ADAccount> [-WhatIf] [-Confirm] [-AuthenticationPolicy <ADAuthenticationPolicy>] [-AuthenticationPolicySilo <ADAuthenticationPolicySilo>] [-AuthType <ADAuthType>] [-Credential <pscredential>] [-PassThru] [-Server <string>] [<CommonParameters>]
    #>


    [CmdletBinding(SupportsShouldProcess=$true, ConfirmImpact='Medium', HelpUri='http://go.microsoft.com/fwlink/?LinkId=301417')]
    param ( )

    dynamicparam {
        $parameters = New-Object System.Management.Automation.RuntimeDefinedParameterDictionary

        # AuthenticationPolicy
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("AuthenticationPolicy", [System.Object], $attributes)
        $parameters.Add("AuthenticationPolicy", $parameter)

        # AuthenticationPolicySilo
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("AuthenticationPolicySilo", [System.Object], $attributes)
        $parameters.Add("AuthenticationPolicySilo", $parameter)

        # AuthType
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("AuthType", [System.Object], $attributes)
        $parameters.Add("AuthType", $parameter)

        # Credential
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.CredentialAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Credential", [System.Management.Automation.PSCredential], $attributes)
        $parameters.Add("Credential", $parameter)

        # Identity
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.Position = 0
        $attribute.Mandatory = $True
        $attribute.ValueFromPipeline = $True
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Identity", [System.Object], $attributes)
        $parameters.Add("Identity", $parameter)

        # PassThru
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("PassThru", [System.Management.Automation.SwitchParameter], $attributes)
        $parameters.Add("PassThru", $parameter)

        # Server
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Server", [System.String], $attributes)
        $parameters.Add("Server", $parameter)

        return $parameters
    }

    end {
        throw '{0}: StubNotImplemented' -f $MyInvocation.MyCommand
    }
}

function Set-ADAccountControl {
    <#
    .SYNOPSIS
        Set-ADAccountControl [-Identity] <ADAccount> [-WhatIf] [-Confirm] [-AccountNotDelegated <bool>] [-AllowReversiblePasswordEncryption <bool>] [-AuthType <ADAuthType>] [-CannotChangePassword <bool>] [-Credential <pscredential>] [-DoesNotRequirePreAuth <bool>] [-Enabled <bool>] [-HomedirRequired <bool>] [-MNSLogonAccount <bool>] [-Partition <string>] [-PassThru] [-PasswordNeverExpires <bool>] [-PasswordNotRequired <bool>] [-Server <string>] [-TrustedForDelegation <bool>] [-TrustedToAuthForDelegation <bool>] [-UseDESKeyOnly <bool>] [<CommonParameters>]
    #>


    [CmdletBinding(SupportsShouldProcess=$true, ConfirmImpact='Medium', HelpUri='http://go.microsoft.com/fwlink/?LinkId=219352')]
    param ( )

    dynamicparam {
        $parameters = New-Object System.Management.Automation.RuntimeDefinedParameterDictionary

        # AccountNotDelegated
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("AccountNotDelegated", [System.Boolean], $attributes)
        $parameters.Add("AccountNotDelegated", $parameter)

        # AllowReversiblePasswordEncryption
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("AllowReversiblePasswordEncryption", [System.Boolean], $attributes)
        $parameters.Add("AllowReversiblePasswordEncryption", $parameter)

        # AuthType
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("AuthType", [System.Object], $attributes)
        $parameters.Add("AuthType", $parameter)

        # CannotChangePassword
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("CannotChangePassword", [System.Boolean], $attributes)
        $parameters.Add("CannotChangePassword", $parameter)

        # Credential
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.CredentialAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Credential", [System.Management.Automation.PSCredential], $attributes)
        $parameters.Add("Credential", $parameter)

        # DoesNotRequirePreAuth
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("DoesNotRequirePreAuth", [System.Boolean], $attributes)
        $parameters.Add("DoesNotRequirePreAuth", $parameter)

        # Enabled
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Enabled", [System.Boolean], $attributes)
        $parameters.Add("Enabled", $parameter)

        # HomedirRequired
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("HomedirRequired", [System.Boolean], $attributes)
        $parameters.Add("HomedirRequired", $parameter)

        # Identity
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ValidateNotNullAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.Position = 0
        $attribute.Mandatory = $True
        $attribute.ValueFromPipeline = $True
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Identity", [System.Object], $attributes)
        $parameters.Add("Identity", $parameter)

        # MNSLogonAccount
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("MNSLogonAccount", [System.Boolean], $attributes)
        $parameters.Add("MNSLogonAccount", $parameter)

        # Partition
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Partition", [System.String], $attributes)
        $parameters.Add("Partition", $parameter)

        # PassThru
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ValidateNotNullAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("PassThru", [System.Management.Automation.SwitchParameter], $attributes)
        $parameters.Add("PassThru", $parameter)

        # PasswordNeverExpires
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("PasswordNeverExpires", [System.Boolean], $attributes)
        $parameters.Add("PasswordNeverExpires", $parameter)

        # PasswordNotRequired
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("PasswordNotRequired", [System.Boolean], $attributes)
        $parameters.Add("PasswordNotRequired", $parameter)

        # Server
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Server", [System.String], $attributes)
        $parameters.Add("Server", $parameter)

        # TrustedForDelegation
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("TrustedForDelegation", [System.Boolean], $attributes)
        $parameters.Add("TrustedForDelegation", $parameter)

        # TrustedToAuthForDelegation
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("TrustedToAuthForDelegation", [System.Boolean], $attributes)
        $parameters.Add("TrustedToAuthForDelegation", $parameter)

        # UseDESKeyOnly
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("UseDESKeyOnly", [System.Boolean], $attributes)
        $parameters.Add("UseDESKeyOnly", $parameter)

        return $parameters
    }

    end {
        throw '{0}: StubNotImplemented' -f $MyInvocation.MyCommand
    }
}

function Set-ADAccountExpiration {
    <#
    .SYNOPSIS
        Set-ADAccountExpiration [-Identity] <ADAccount> [[-DateTime] <datetime>] [-WhatIf] [-Confirm] [-AuthType <ADAuthType>] [-Credential <pscredential>] [-Partition <string>] [-PassThru] [-Server <string>] [-TimeSpan <timespan>] [<CommonParameters>]
    #>


    [CmdletBinding(SupportsShouldProcess=$true, ConfirmImpact='Medium', HelpUri='http://go.microsoft.com/fwlink/?LinkId=219354')]
    param ( )

    dynamicparam {
        $parameters = New-Object System.Management.Automation.RuntimeDefinedParameterDictionary

        # AuthType
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("AuthType", [System.Object], $attributes)
        $parameters.Add("AuthType", $parameter)

        # Credential
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.CredentialAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Credential", [System.Management.Automation.PSCredential], $attributes)
        $parameters.Add("Credential", $parameter)

        # DateTime
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.Position = 2
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("DateTime", [System.Nullable`1[System.DateTime]], $attributes)
        $parameters.Add("DateTime", $parameter)

        # Identity
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.Position = 0
        $attribute.Mandatory = $True
        $attribute.ValueFromPipeline = $True
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Identity", [System.Object], $attributes)
        $parameters.Add("Identity", $parameter)

        # Partition
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Partition", [System.String], $attributes)
        $parameters.Add("Partition", $parameter)

        # PassThru
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ValidateNotNullAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("PassThru", [System.Management.Automation.SwitchParameter], $attributes)
        $parameters.Add("PassThru", $parameter)

        # Server
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Server", [System.String], $attributes)
        $parameters.Add("Server", $parameter)

        # TimeSpan
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("TimeSpan", [System.TimeSpan], $attributes)
        $parameters.Add("TimeSpan", $parameter)

        return $parameters
    }

    end {
        throw '{0}: StubNotImplemented' -f $MyInvocation.MyCommand
    }
}

function Set-ADAccountPassword {
    <#
    .SYNOPSIS
        Set-ADAccountPassword [-Identity] <ADAccount> [-WhatIf] [-Confirm] [-AuthType <ADAuthType>] [-Credential <pscredential>] [-NewPassword <securestring>] [-OldPassword <securestring>] [-Partition <string>] [-PassThru] [-Reset] [-Server <string>] [<CommonParameters>]
    #>


    [CmdletBinding(SupportsShouldProcess=$true, ConfirmImpact='Medium', HelpUri='http://go.microsoft.com/fwlink/?LinkId=219353')]
    param ( )

    dynamicparam {
        $parameters = New-Object System.Management.Automation.RuntimeDefinedParameterDictionary

        # AuthType
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("AuthType", [System.Object], $attributes)
        $parameters.Add("AuthType", $parameter)

        # Credential
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.CredentialAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Credential", [System.Management.Automation.PSCredential], $attributes)
        $parameters.Add("Credential", $parameter)

        # Identity
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.Position = 0
        $attribute.Mandatory = $True
        $attribute.ValueFromPipeline = $True
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Identity", [System.Object], $attributes)
        $parameters.Add("Identity", $parameter)

        # NewPassword
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("NewPassword", [System.Security.SecureString], $attributes)
        $parameters.Add("NewPassword", $parameter)

        # OldPassword
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("OldPassword", [System.Security.SecureString], $attributes)
        $parameters.Add("OldPassword", $parameter)

        # Partition
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Partition", [System.String], $attributes)
        $parameters.Add("Partition", $parameter)

        # PassThru
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("PassThru", [System.Management.Automation.SwitchParameter], $attributes)
        $parameters.Add("PassThru", $parameter)

        # Reset
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Reset", [System.Management.Automation.SwitchParameter], $attributes)
        $parameters.Add("Reset", $parameter)

        # Server
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Server", [System.String], $attributes)
        $parameters.Add("Server", $parameter)

        return $parameters
    }

    end {
        throw '{0}: StubNotImplemented' -f $MyInvocation.MyCommand
    }
}

function Set-ADAuthenticationPolicy {
    <#
    .SYNOPSIS
        Set-ADAuthenticationPolicy [-Identity] <ADAuthenticationPolicy> [-WhatIf] [-Confirm] [-Add <hashtable>] [-AuthType <ADAuthType>] [-Clear <string[]>] [-ComputerAllowedToAuthenticateTo <string>] [-ComputerTGTLifetimeMins <int>] [-Credential <pscredential>] [-Description <string>] [-Enforce <bool>] [-PassThru] [-ProtectedFromAccidentalDeletion <bool>] [-Remove <hashtable>] [-Replace <hashtable>] [-RollingNTLMSecret <ADStrongNTLMPolicyType>] [-Server <string>] [-ServiceAllowedToAuthenticateFrom <string>] [-ServiceAllowedToAuthenticateTo <string>] [-ServiceAllowedNTLMNetworkAuthentication <bool>] [-ServiceTGTLifetimeMins <int>] [-UserAllowedToAuthenticateFrom <string>] [-UserAllowedToAuthenticateTo <string>] [-UserAllowedNTLMNetworkAuthentication <bool>] [-UserTGTLifetimeMins <int>] [<CommonParameters>]
 
Set-ADAuthenticationPolicy -Instance <ADAuthenticationPolicy> [-WhatIf] [-Confirm] [-AuthType <ADAuthType>] [-Credential <pscredential>] [-PassThru] [-Server <string>] [<CommonParameters>]
    #>


    [CmdletBinding(SupportsShouldProcess=$true, ConfirmImpact='Medium', HelpUri='http://go.microsoft.com/fwlink/?LinkId=301409')]
    param ( )

    dynamicparam {
        $parameters = New-Object System.Management.Automation.RuntimeDefinedParameterDictionary

        # Add
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Identity"
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Add", [System.Collections.Hashtable], $attributes)
        $parameters.Add("Add", $parameter)

        # AuthType
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("AuthType", [System.Object], $attributes)
        $parameters.Add("AuthType", $parameter)

        # Clear
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Identity"
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Clear", [System.String[]], $attributes)
        $parameters.Add("Clear", $parameter)

        # ComputerAllowedToAuthenticateTo
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Identity"
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("ComputerAllowedToAuthenticateTo", [System.String], $attributes)
        $parameters.Add("ComputerAllowedToAuthenticateTo", $parameter)

        # ComputerTGTLifetimeMins
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Identity"
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("ComputerTGTLifetimeMins", [System.Nullable`1[System.Int32]], $attributes)
        $parameters.Add("ComputerTGTLifetimeMins", $parameter)

        # Credential
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.CredentialAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Credential", [System.Management.Automation.PSCredential], $attributes)
        $parameters.Add("Credential", $parameter)

        # Description
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Identity"
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Description", [System.String], $attributes)
        $parameters.Add("Description", $parameter)

        # Enforce
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Identity"
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Enforce", [System.Boolean], $attributes)
        $parameters.Add("Enforce", $parameter)

        # Identity
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.Position = 0
        $attribute.ParameterSetName = "Identity"
        $attribute.Mandatory = $True
        $attribute.ValueFromPipeline = $True
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Identity", [System.Object], $attributes)
        $parameters.Add("Identity", $parameter)

        # Instance
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Instance"
        $attribute.Mandatory = $True
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Instance", [System.Object], $attributes)
        $parameters.Add("Instance", $parameter)

        # PassThru
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("PassThru", [System.Management.Automation.SwitchParameter], $attributes)
        $parameters.Add("PassThru", $parameter)

        # ProtectedFromAccidentalDeletion
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Identity"
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("ProtectedFromAccidentalDeletion", [System.Nullable`1[System.Boolean]], $attributes)
        $parameters.Add("ProtectedFromAccidentalDeletion", $parameter)

        # Remove
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Identity"
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Remove", [System.Collections.Hashtable], $attributes)
        $parameters.Add("Remove", $parameter)

        # Replace
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Identity"
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Replace", [System.Collections.Hashtable], $attributes)
        $parameters.Add("Replace", $parameter)

        # RollingNTLMSecret
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Identity"
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("RollingNTLMSecret", [System.Object], $attributes)
        $parameters.Add("RollingNTLMSecret", $parameter)

        # Server
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Server", [System.String], $attributes)
        $parameters.Add("Server", $parameter)

        # ServiceAllowedToAuthenticateFrom
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Identity"
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("ServiceAllowedToAuthenticateFrom", [System.String], $attributes)
        $parameters.Add("ServiceAllowedToAuthenticateFrom", $parameter)

        # ServiceAllowedToAuthenticateTo
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Identity"
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("ServiceAllowedToAuthenticateTo", [System.String], $attributes)
        $parameters.Add("ServiceAllowedToAuthenticateTo", $parameter)

        # ServiceAllowedNTLMNetworkAuthentication
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Identity"
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("ServiceAllowedNTLMNetworkAuthentication", [System.Boolean], $attributes)
        $parameters.Add("ServiceAllowedNTLMNetworkAuthentication", $parameter)

        # ServiceTGTLifetimeMins
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Identity"
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("ServiceTGTLifetimeMins", [System.Nullable`1[System.Int32]], $attributes)
        $parameters.Add("ServiceTGTLifetimeMins", $parameter)

        # UserAllowedToAuthenticateFrom
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Identity"
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("UserAllowedToAuthenticateFrom", [System.String], $attributes)
        $parameters.Add("UserAllowedToAuthenticateFrom", $parameter)

        # UserAllowedToAuthenticateTo
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Identity"
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("UserAllowedToAuthenticateTo", [System.String], $attributes)
        $parameters.Add("UserAllowedToAuthenticateTo", $parameter)

        # UserAllowedNTLMNetworkAuthentication
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Identity"
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("UserAllowedNTLMNetworkAuthentication", [System.Boolean], $attributes)
        $parameters.Add("UserAllowedNTLMNetworkAuthentication", $parameter)

        # UserTGTLifetimeMins
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Identity"
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("UserTGTLifetimeMins", [System.Nullable`1[System.Int32]], $attributes)
        $parameters.Add("UserTGTLifetimeMins", $parameter)

        return $parameters
    }

    end {
        throw '{0}: StubNotImplemented' -f $MyInvocation.MyCommand
    }
}

function Set-ADAuthenticationPolicySilo {
    <#
    .SYNOPSIS
        Set-ADAuthenticationPolicySilo [-Identity] <ADAuthenticationPolicySilo> [-WhatIf] [-Confirm] [-Add <hashtable>] [-AuthType <ADAuthType>] [-Clear <string[]>] [-ComputerAuthenticationPolicy <ADAuthenticationPolicy>] [-Credential <pscredential>] [-Description <string>] [-Enforce <bool>] [-PassThru] [-ProtectedFromAccidentalDeletion <bool>] [-Remove <hashtable>] [-Replace <hashtable>] [-Server <string>] [-ServiceAuthenticationPolicy <ADAuthenticationPolicy>] [-UserAuthenticationPolicy <ADAuthenticationPolicy>] [<CommonParameters>]
 
Set-ADAuthenticationPolicySilo -Instance <ADAuthenticationPolicySilo> [-WhatIf] [-Confirm] [-AuthType <ADAuthType>] [-Credential <pscredential>] [-PassThru] [-Server <string>] [<CommonParameters>]
    #>


    [CmdletBinding(SupportsShouldProcess=$true, ConfirmImpact='Medium', HelpUri='http://go.microsoft.com/fwlink/?LinkId=301413')]
    param ( )

    dynamicparam {
        $parameters = New-Object System.Management.Automation.RuntimeDefinedParameterDictionary

        # Add
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Identity"
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Add", [System.Collections.Hashtable], $attributes)
        $parameters.Add("Add", $parameter)

        # AuthType
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("AuthType", [System.Object], $attributes)
        $parameters.Add("AuthType", $parameter)

        # Clear
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Identity"
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Clear", [System.String[]], $attributes)
        $parameters.Add("Clear", $parameter)

        # ComputerAuthenticationPolicy
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Identity"
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("ComputerAuthenticationPolicy", [System.Object], $attributes)
        $parameters.Add("ComputerAuthenticationPolicy", $parameter)

        # Credential
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.CredentialAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Credential", [System.Management.Automation.PSCredential], $attributes)
        $parameters.Add("Credential", $parameter)

        # Description
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Identity"
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Description", [System.String], $attributes)
        $parameters.Add("Description", $parameter)

        # Enforce
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Identity"
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Enforce", [System.Boolean], $attributes)
        $parameters.Add("Enforce", $parameter)

        # Identity
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.Position = 0
        $attribute.ParameterSetName = "Identity"
        $attribute.Mandatory = $True
        $attribute.ValueFromPipeline = $True
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Identity", [System.Object], $attributes)
        $parameters.Add("Identity", $parameter)

        # Instance
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ValidateNotNullAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Instance"
        $attribute.Mandatory = $True
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Instance", [System.Object], $attributes)
        $parameters.Add("Instance", $parameter)

        # PassThru
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("PassThru", [System.Management.Automation.SwitchParameter], $attributes)
        $parameters.Add("PassThru", $parameter)

        # ProtectedFromAccidentalDeletion
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Identity"
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("ProtectedFromAccidentalDeletion", [System.Nullable`1[System.Boolean]], $attributes)
        $parameters.Add("ProtectedFromAccidentalDeletion", $parameter)

        # Remove
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Identity"
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Remove", [System.Collections.Hashtable], $attributes)
        $parameters.Add("Remove", $parameter)

        # Replace
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Identity"
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Replace", [System.Collections.Hashtable], $attributes)
        $parameters.Add("Replace", $parameter)

        # Server
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Server", [System.String], $attributes)
        $parameters.Add("Server", $parameter)

        # ServiceAuthenticationPolicy
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Identity"
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("ServiceAuthenticationPolicy", [System.Object], $attributes)
        $parameters.Add("ServiceAuthenticationPolicy", $parameter)

        # UserAuthenticationPolicy
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Identity"
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("UserAuthenticationPolicy", [System.Object], $attributes)
        $parameters.Add("UserAuthenticationPolicy", $parameter)

        return $parameters
    }

    end {
        throw '{0}: StubNotImplemented' -f $MyInvocation.MyCommand
    }
}

function Set-ADCentralAccessPolicy {
    <#
    .SYNOPSIS
        Set-ADCentralAccessPolicy [-Identity] <ADCentralAccessPolicy> [-WhatIf] [-Confirm] [-Add <hashtable>] [-AuthType <ADAuthType>] [-Clear <string[]>] [-Credential <pscredential>] [-Description <string>] [-PassThru] [-ProtectedFromAccidentalDeletion <bool>] [-Remove <hashtable>] [-Replace <hashtable>] [-Server <string>] [<CommonParameters>]
 
Set-ADCentralAccessPolicy -Instance <ADCentralAccessPolicy> [-WhatIf] [-Confirm] [-AuthType <ADAuthType>] [-Credential <pscredential>] [-PassThru] [-Server <string>] [<CommonParameters>]
    #>


    [CmdletBinding(SupportsShouldProcess=$true, ConfirmImpact='Medium', HelpUri='http://go.microsoft.com/fwlink/?LinkId=216406')]
    param ( )

    dynamicparam {
        $parameters = New-Object System.Management.Automation.RuntimeDefinedParameterDictionary

        # Add
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Identity"
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Add", [System.Collections.Hashtable], $attributes)
        $parameters.Add("Add", $parameter)

        # AuthType
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("AuthType", [System.Object], $attributes)
        $parameters.Add("AuthType", $parameter)

        # Clear
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Identity"
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Clear", [System.String[]], $attributes)
        $parameters.Add("Clear", $parameter)

        # Credential
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.CredentialAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Credential", [System.Management.Automation.PSCredential], $attributes)
        $parameters.Add("Credential", $parameter)

        # Description
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Identity"
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Description", [System.String], $attributes)
        $parameters.Add("Description", $parameter)

        # Identity
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.Position = 0
        $attribute.ParameterSetName = "Identity"
        $attribute.Mandatory = $True
        $attribute.ValueFromPipeline = $True
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Identity", [System.Object], $attributes)
        $parameters.Add("Identity", $parameter)

        # Instance
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Instance"
        $attribute.Mandatory = $True
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Instance", [System.Object], $attributes)
        $parameters.Add("Instance", $parameter)

        # PassThru
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("PassThru", [System.Management.Automation.SwitchParameter], $attributes)
        $parameters.Add("PassThru", $parameter)

        # ProtectedFromAccidentalDeletion
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Identity"
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("ProtectedFromAccidentalDeletion", [System.Nullable`1[System.Boolean]], $attributes)
        $parameters.Add("ProtectedFromAccidentalDeletion", $parameter)

        # Remove
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Identity"
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Remove", [System.Collections.Hashtable], $attributes)
        $parameters.Add("Remove", $parameter)

        # Replace
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Identity"
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Replace", [System.Collections.Hashtable], $attributes)
        $parameters.Add("Replace", $parameter)

        # Server
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Server", [System.String], $attributes)
        $parameters.Add("Server", $parameter)

        return $parameters
    }

    end {
        throw '{0}: StubNotImplemented' -f $MyInvocation.MyCommand
    }
}

function Set-ADCentralAccessRule {
    <#
    .SYNOPSIS
        Set-ADCentralAccessRule [-Identity] <ADCentralAccessRule> [-WhatIf] [-Confirm] [-Add <hashtable>] [-AuthType <ADAuthType>] [-Clear <string[]>] [-Credential <pscredential>] [-CurrentAcl <string>] [-Description <string>] [-PassThru] [-ProposedAcl <string>] [-ProtectedFromAccidentalDeletion <bool>] [-Remove <hashtable>] [-Replace <hashtable>] [-ResourceCondition <string>] [-Server <string>] [<CommonParameters>]
 
Set-ADCentralAccessRule -Instance <ADCentralAccessRule> [-WhatIf] [-Confirm] [-AuthType <ADAuthType>] [-Credential <pscredential>] [-PassThru] [-Server <string>] [<CommonParameters>]
    #>


    [CmdletBinding(SupportsShouldProcess=$true, ConfirmImpact='Medium', HelpUri='http://go.microsoft.com/fwlink/?LinkId=216407')]
    param ( )

    dynamicparam {
        $parameters = New-Object System.Management.Automation.RuntimeDefinedParameterDictionary

        # Add
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Identity"
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Add", [System.Collections.Hashtable], $attributes)
        $parameters.Add("Add", $parameter)

        # AuthType
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("AuthType", [System.Object], $attributes)
        $parameters.Add("AuthType", $parameter)

        # Clear
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Identity"
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Clear", [System.String[]], $attributes)
        $parameters.Add("Clear", $parameter)

        # Credential
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.CredentialAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Credential", [System.Management.Automation.PSCredential], $attributes)
        $parameters.Add("Credential", $parameter)

        # CurrentAcl
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Identity"
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("CurrentAcl", [System.String], $attributes)
        $parameters.Add("CurrentAcl", $parameter)

        # Description
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Identity"
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Description", [System.String], $attributes)
        $parameters.Add("Description", $parameter)

        # Identity
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.Position = 0
        $attribute.ParameterSetName = "Identity"
        $attribute.Mandatory = $True
        $attribute.ValueFromPipeline = $True
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Identity", [System.Object], $attributes)
        $parameters.Add("Identity", $parameter)

        # Instance
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ValidateNotNullAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Instance"
        $attribute.Mandatory = $True
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Instance", [System.Object], $attributes)
        $parameters.Add("Instance", $parameter)

        # PassThru
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("PassThru", [System.Management.Automation.SwitchParameter], $attributes)
        $parameters.Add("PassThru", $parameter)

        # ProposedAcl
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Identity"
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("ProposedAcl", [System.String], $attributes)
        $parameters.Add("ProposedAcl", $parameter)

        # ProtectedFromAccidentalDeletion
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Identity"
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("ProtectedFromAccidentalDeletion", [System.Nullable`1[System.Boolean]], $attributes)
        $parameters.Add("ProtectedFromAccidentalDeletion", $parameter)

        # Remove
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Identity"
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Remove", [System.Collections.Hashtable], $attributes)
        $parameters.Add("Remove", $parameter)

        # Replace
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Identity"
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Replace", [System.Collections.Hashtable], $attributes)
        $parameters.Add("Replace", $parameter)

        # ResourceCondition
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Identity"
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("ResourceCondition", [System.String], $attributes)
        $parameters.Add("ResourceCondition", $parameter)

        # Server
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Server", [System.String], $attributes)
        $parameters.Add("Server", $parameter)

        return $parameters
    }

    end {
        throw '{0}: StubNotImplemented' -f $MyInvocation.MyCommand
    }
}

function Set-ADClaimTransformLink {
    <#
    .SYNOPSIS
        Set-ADClaimTransformLink [-Identity] <ADTrust> [-Policy] <ADClaimTransformPolicy> -TrustRole <ADTrustRole> [-WhatIf] [-Confirm] [-AuthType <ADAuthType>] [-Credential <pscredential>] [-PassThru] [-Server <string>] [<CommonParameters>]
    #>


    [CmdletBinding(SupportsShouldProcess=$true, ConfirmImpact='Medium', HelpUri='http://go.microsoft.com/fwlink/?LinkId=216409')]
    param ( )

    dynamicparam {
        $parameters = New-Object System.Management.Automation.RuntimeDefinedParameterDictionary

        # AuthType
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("AuthType", [System.Object], $attributes)
        $parameters.Add("AuthType", $parameter)

        # Credential
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.CredentialAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Credential", [System.Management.Automation.PSCredential], $attributes)
        $parameters.Add("Credential", $parameter)

        # Identity
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.Position = 0
        $attribute.Mandatory = $True
        $attribute.ValueFromPipeline = $True
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Identity", [System.Object], $attributes)
        $parameters.Add("Identity", $parameter)

        # PassThru
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("PassThru", [System.Management.Automation.SwitchParameter], $attributes)
        $parameters.Add("PassThru", $parameter)

        # Policy
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.Position = 1
        $attribute.Mandatory = $True
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Policy", [System.Object], $attributes)
        $parameters.Add("Policy", $parameter)

        # Server
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Server", [System.String], $attributes)
        $parameters.Add("Server", $parameter)

        # TrustRole
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.Mandatory = $True
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("TrustRole", [System.Object], $attributes)
        $parameters.Add("TrustRole", $parameter)

        return $parameters
    }

    end {
        throw '{0}: StubNotImplemented' -f $MyInvocation.MyCommand
    }
}

function Set-ADClaimTransformPolicy {
    <#
    .SYNOPSIS
        Set-ADClaimTransformPolicy [-Identity] <ADClaimTransformPolicy> -DenyAllExcept <ADClaimType[]> [-WhatIf] [-Confirm] [-Add <hashtable>] [-AuthType <ADAuthType>] [-Clear <string[]>] [-Credential <pscredential>] [-Description <string>] [-PassThru] [-ProtectedFromAccidentalDeletion <bool>] [-Remove <hashtable>] [-Replace <hashtable>] [-Server <string>] [<CommonParameters>]
 
Set-ADClaimTransformPolicy [-Identity] <ADClaimTransformPolicy> -DenyAll [-WhatIf] [-Confirm] [-Add <hashtable>] [-AuthType <ADAuthType>] [-Clear <string[]>] [-Credential <pscredential>] [-Description <string>] [-PassThru] [-ProtectedFromAccidentalDeletion <bool>] [-Remove <hashtable>] [-Replace <hashtable>] [-Server <string>] [<CommonParameters>]
 
Set-ADClaimTransformPolicy [-Identity] <ADClaimTransformPolicy> [-WhatIf] [-Confirm] [-Add <hashtable>] [-AuthType <ADAuthType>] [-Clear <string[]>] [-Credential <pscredential>] [-Description <string>] [-PassThru] [-ProtectedFromAccidentalDeletion <bool>] [-Remove <hashtable>] [-Replace <hashtable>] [-Rule <string>] [-Server <string>] [<CommonParameters>]
 
Set-ADClaimTransformPolicy [-Identity] <ADClaimTransformPolicy> -AllowAll [-WhatIf] [-Confirm] [-Add <hashtable>] [-AuthType <ADAuthType>] [-Clear <string[]>] [-Credential <pscredential>] [-Description <string>] [-PassThru] [-ProtectedFromAccidentalDeletion <bool>] [-Remove <hashtable>] [-Replace <hashtable>] [-Server <string>] [<CommonParameters>]
 
Set-ADClaimTransformPolicy [-Identity] <ADClaimTransformPolicy> -AllowAllExcept <ADClaimType[]> [-WhatIf] [-Confirm] [-Add <hashtable>] [-AuthType <ADAuthType>] [-Clear <string[]>] [-Credential <pscredential>] [-Description <string>] [-PassThru] [-ProtectedFromAccidentalDeletion <bool>] [-Remove <hashtable>] [-Replace <hashtable>] [-Server <string>] [<CommonParameters>]
 
Set-ADClaimTransformPolicy -Instance <ADClaimTransformPolicy> [-WhatIf] [-Confirm] [-AuthType <ADAuthType>] [-Credential <pscredential>] [-PassThru] [-Server <string>] [<CommonParameters>]
    #>


    [CmdletBinding(SupportsShouldProcess=$true, ConfirmImpact='Medium', HelpUri='http://go.microsoft.com/fwlink/?LinkId=216410')]
    param ( )

    dynamicparam {
        $parameters = New-Object System.Management.Automation.RuntimeDefinedParameterDictionary

        # Add
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "DenyAllExcept"
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "DenyAll"
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Identity"
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "AllowAll"
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "AllowAllExcept"
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Add", [System.Collections.Hashtable], $attributes)
        $parameters.Add("Add", $parameter)

        # AllowAll
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ValidateSetAttribute('true')
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "AllowAll"
        $attribute.Mandatory = $True
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("AllowAll", [System.Management.Automation.SwitchParameter], $attributes)
        $parameters.Add("AllowAll", $parameter)

        # AllowAllExcept
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "AllowAllExcept"
        $attribute.Mandatory = $True
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("AllowAllExcept", [System.Object[]], $attributes)
        $parameters.Add("AllowAllExcept", $parameter)

        # AuthType
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("AuthType", [System.Object], $attributes)
        $parameters.Add("AuthType", $parameter)

        # Clear
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Identity"
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "AllowAllExcept"
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "AllowAll"
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "DenyAllExcept"
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "DenyAll"
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Clear", [System.String[]], $attributes)
        $parameters.Add("Clear", $parameter)

        # Credential
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.CredentialAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Credential", [System.Management.Automation.PSCredential], $attributes)
        $parameters.Add("Credential", $parameter)

        # DenyAll
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "DenyAll"
        $attribute.Mandatory = $True
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateSetAttribute('true')
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("DenyAll", [System.Management.Automation.SwitchParameter], $attributes)
        $parameters.Add("DenyAll", $parameter)

        # DenyAllExcept
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "DenyAllExcept"
        $attribute.Mandatory = $True
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("DenyAllExcept", [System.Object[]], $attributes)
        $parameters.Add("DenyAllExcept", $parameter)

        # Description
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "DenyAllExcept"
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Identity"
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "AllowAll"
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "AllowAllExcept"
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "DenyAll"
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Description", [System.String], $attributes)
        $parameters.Add("Description", $parameter)

        # Identity
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.Position = 0
        $attribute.ParameterSetName = "Identity"
        $attribute.Mandatory = $True
        $attribute.ValueFromPipeline = $True
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.Position = 0
        $attribute.ParameterSetName = "AllowAllExcept"
        $attribute.Mandatory = $True
        $attribute.ValueFromPipeline = $True
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.Position = 0
        $attribute.ParameterSetName = "AllowAll"
        $attribute.Mandatory = $True
        $attribute.ValueFromPipeline = $True
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.Position = 0
        $attribute.ParameterSetName = "DenyAll"
        $attribute.Mandatory = $True
        $attribute.ValueFromPipeline = $True
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.Position = 0
        $attribute.ParameterSetName = "DenyAllExcept"
        $attribute.Mandatory = $True
        $attribute.ValueFromPipeline = $True
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Identity", [System.Object], $attributes)
        $parameters.Add("Identity", $parameter)

        # Instance
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ValidateNotNullAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Instance"
        $attribute.Mandatory = $True
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Instance", [System.Object], $attributes)
        $parameters.Add("Instance", $parameter)

        # PassThru
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("PassThru", [System.Management.Automation.SwitchParameter], $attributes)
        $parameters.Add("PassThru", $parameter)

        # ProtectedFromAccidentalDeletion
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "AllowAll"
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "DenyAll"
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Identity"
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "AllowAllExcept"
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "DenyAllExcept"
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("ProtectedFromAccidentalDeletion", [System.Nullable`1[System.Boolean]], $attributes)
        $parameters.Add("ProtectedFromAccidentalDeletion", $parameter)

        # Remove
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "AllowAllExcept"
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Identity"
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "AllowAll"
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "DenyAll"
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "DenyAllExcept"
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Remove", [System.Collections.Hashtable], $attributes)
        $parameters.Add("Remove", $parameter)

        # Replace
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Identity"
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "AllowAllExcept"
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "DenyAllExcept"
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "DenyAll"
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "AllowAll"
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Replace", [System.Collections.Hashtable], $attributes)
        $parameters.Add("Replace", $parameter)

        # Rule
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Identity"
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Rule", [System.String], $attributes)
        $parameters.Add("Rule", $parameter)

        # Server
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Server", [System.String], $attributes)
        $parameters.Add("Server", $parameter)

        return $parameters
    }

    end {
        throw '{0}: StubNotImplemented' -f $MyInvocation.MyCommand
    }
}

function Set-ADClaimType {
    <#
    .SYNOPSIS
        Set-ADClaimType [-Identity] <ADClaimType> [-WhatIf] [-Confirm] [-Add <hashtable>] [-AppliesToClasses <string[]>] [-AuthType <ADAuthType>] [-Clear <string[]>] [-Credential <pscredential>] [-Description <string>] [-DisplayName <string>] [-Enabled <bool>] [-PassThru] [-ProtectedFromAccidentalDeletion <bool>] [-Remove <hashtable>] [-Replace <hashtable>] [-RestrictValues <bool>] [-Server <string>] [-SuggestedValues <ADSuggestedValueEntry[]>] [<CommonParameters>]
 
Set-ADClaimType [-Identity] <ADClaimType> -SourceTransformPolicy [-WhatIf] [-Confirm] [-Add <hashtable>] [-AppliesToClasses <string[]>] [-AuthType <ADAuthType>] [-Clear <string[]>] [-Credential <pscredential>] [-Description <string>] [-DisplayName <string>] [-Enabled <bool>] [-PassThru] [-ProtectedFromAccidentalDeletion <bool>] [-Remove <hashtable>] [-Replace <hashtable>] [-RestrictValues <bool>] [-Server <string>] [-SuggestedValues <ADSuggestedValueEntry[]>] [<CommonParameters>]
 
Set-ADClaimType [-Identity] <ADClaimType> -SourceAttribute <string> [-WhatIf] [-Confirm] [-Add <hashtable>] [-AppliesToClasses <string[]>] [-AuthType <ADAuthType>] [-Clear <string[]>] [-Credential <pscredential>] [-Description <string>] [-DisplayName <string>] [-Enabled <bool>] [-PassThru] [-ProtectedFromAccidentalDeletion <bool>] [-Remove <hashtable>] [-Replace <hashtable>] [-RestrictValues <bool>] [-Server <string>] [-SuggestedValues <ADSuggestedValueEntry[]>] [<CommonParameters>]
 
Set-ADClaimType [-Identity] <ADClaimType> -SourceOID <string> [-WhatIf] [-Confirm] [-Add <hashtable>] [-AppliesToClasses <string[]>] [-AuthType <ADAuthType>] [-Clear <string[]>] [-Credential <pscredential>] [-Description <string>] [-DisplayName <string>] [-Enabled <bool>] [-PassThru] [-ProtectedFromAccidentalDeletion <bool>] [-Remove <hashtable>] [-Replace <hashtable>] [-RestrictValues <bool>] [-Server <string>] [<CommonParameters>]
 
Set-ADClaimType -Instance <ADClaimType> [-WhatIf] [-Confirm] [-AuthType <ADAuthType>] [-Credential <pscredential>] [-PassThru] [-Server <string>] [<CommonParameters>]
    #>


    [CmdletBinding(DefaultParameterSetName='Identity', SupportsShouldProcess=$true, ConfirmImpact='Medium', HelpUri='http://go.microsoft.com/fwlink/?LinkId=216411')]
    param ( )

    dynamicparam {
        $parameters = New-Object System.Management.Automation.RuntimeDefinedParameterDictionary

        # Add
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Identity"
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "SourceTransformPolicy"
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "SourceAttribute"
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "SourceOID"
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Add", [System.Collections.Hashtable], $attributes)
        $parameters.Add("Add", $parameter)

        # AppliesToClasses
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "SourceAttribute"
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Identity"
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "SourceTransformPolicy"
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "SourceOID"
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("AppliesToClasses", [System.String[]], $attributes)
        $parameters.Add("AppliesToClasses", $parameter)

        # AuthType
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("AuthType", [System.Object], $attributes)
        $parameters.Add("AuthType", $parameter)

        # Clear
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Identity"
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "SourceOID"
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "SourceAttribute"
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "SourceTransformPolicy"
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Clear", [System.String[]], $attributes)
        $parameters.Add("Clear", $parameter)

        # Credential
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.CredentialAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Credential", [System.Management.Automation.PSCredential], $attributes)
        $parameters.Add("Credential", $parameter)

        # Description
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "SourceAttribute"
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Identity"
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "SourceOID"
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "SourceTransformPolicy"
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Description", [System.String], $attributes)
        $parameters.Add("Description", $parameter)

        # DisplayName
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "SourceOID"
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "SourceAttribute"
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "SourceTransformPolicy"
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Identity"
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("DisplayName", [System.String], $attributes)
        $parameters.Add("DisplayName", $parameter)

        # Enabled
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "SourceTransformPolicy"
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Identity"
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "SourceAttribute"
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "SourceOID"
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Enabled", [System.Boolean], $attributes)
        $parameters.Add("Enabled", $parameter)

        # Identity
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.Position = 0
        $attribute.ParameterSetName = "SourceTransformPolicy"
        $attribute.Mandatory = $True
        $attribute.ValueFromPipeline = $True
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.Position = 0
        $attribute.ParameterSetName = "Identity"
        $attribute.Mandatory = $True
        $attribute.ValueFromPipeline = $True
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.Position = 0
        $attribute.ParameterSetName = "SourceAttribute"
        $attribute.Mandatory = $True
        $attribute.ValueFromPipeline = $True
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.Position = 0
        $attribute.ParameterSetName = "SourceOID"
        $attribute.Mandatory = $True
        $attribute.ValueFromPipeline = $True
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Identity", [System.Object], $attributes)
        $parameters.Add("Identity", $parameter)

        # Instance
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Instance"
        $attribute.Mandatory = $True
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Instance", [System.Object], $attributes)
        $parameters.Add("Instance", $parameter)

        # PassThru
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("PassThru", [System.Management.Automation.SwitchParameter], $attributes)
        $parameters.Add("PassThru", $parameter)

        # ProtectedFromAccidentalDeletion
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "SourceAttribute"
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "SourceTransformPolicy"
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Identity"
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "SourceOID"
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("ProtectedFromAccidentalDeletion", [System.Nullable`1[System.Boolean]], $attributes)
        $parameters.Add("ProtectedFromAccidentalDeletion", $parameter)

        # Remove
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "SourceTransformPolicy"
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "SourceOID"
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "SourceAttribute"
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Identity"
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Remove", [System.Collections.Hashtable], $attributes)
        $parameters.Add("Remove", $parameter)

        # Replace
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Identity"
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "SourceOID"
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "SourceTransformPolicy"
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "SourceAttribute"
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Replace", [System.Collections.Hashtable], $attributes)
        $parameters.Add("Replace", $parameter)

        # RestrictValues
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "SourceAttribute"
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Identity"
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "SourceTransformPolicy"
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "SourceOID"
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("RestrictValues", [System.Boolean], $attributes)
        $parameters.Add("RestrictValues", $parameter)

        # Server
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Server", [System.String], $attributes)
        $parameters.Add("Server", $parameter)

        # SourceAttribute
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "SourceAttribute"
        $attribute.Mandatory = $True
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("SourceAttribute", [System.String], $attributes)
        $parameters.Add("SourceAttribute", $parameter)

        # SourceOID
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "SourceOID"
        $attribute.Mandatory = $True
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("SourceOID", [System.String], $attributes)
        $parameters.Add("SourceOID", $parameter)

        # SourceTransformPolicy
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "SourceTransformPolicy"
        $attribute.Mandatory = $True
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("SourceTransformPolicy", [System.Management.Automation.SwitchParameter], $attributes)
        $parameters.Add("SourceTransformPolicy", $parameter)

        # SuggestedValues
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "SourceAttribute"
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "SourceTransformPolicy"
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Identity"
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("SuggestedValues", [System.Object[]], $attributes)
        $parameters.Add("SuggestedValues", $parameter)

        return $parameters
    }

    end {
        throw '{0}: StubNotImplemented' -f $MyInvocation.MyCommand
    }
}

function Set-ADComputer {
    <#
    .SYNOPSIS
        Set-ADComputer [-Identity] <ADComputer> [-WhatIf] [-Confirm] [-AccountExpirationDate <datetime>] [-AccountNotDelegated <bool>] [-Add <hashtable>] [-AllowReversiblePasswordEncryption <bool>] [-AuthenticationPolicy <ADAuthenticationPolicy>] [-AuthenticationPolicySilo <ADAuthenticationPolicySilo>] [-AuthType <ADAuthType>] [-CannotChangePassword <bool>] [-Certificates <hashtable>] [-ChangePasswordAtLogon <bool>] [-Clear <string[]>] [-CompoundIdentitySupported <bool>] [-Credential <pscredential>] [-Description <string>] [-DisplayName <string>] [-DNSHostName <string>] [-Enabled <bool>] [-HomePage <string>] [-KerberosEncryptionType <ADKerberosEncryptionType>] [-Location <string>] [-ManagedBy <ADPrincipal>] [-OperatingSystem <string>] [-OperatingSystemHotfix <string>] [-OperatingSystemServicePack <string>] [-OperatingSystemVersion <string>] [-Partition <string>] [-PassThru] [-PasswordNeverExpires <bool>] [-PasswordNotRequired <bool>] [-PrincipalsAllowedToDelegateToAccount <ADPrincipal[]>] [-Remove <hashtable>] [-Replace <hashtable>] [-SAMAccountName <string>] [-Server <string>] [-ServicePrincipalNames <hashtable>] [-TrustedForDelegation <bool>] [-UserPrincipalName <string>] [<CommonParameters>]
 
Set-ADComputer -Instance <ADComputer> [-WhatIf] [-Confirm] [-AuthType <ADAuthType>] [-Credential <pscredential>] [-PassThru] [-Server <string>] [<CommonParameters>]
    #>


    [CmdletBinding(SupportsShouldProcess=$true, ConfirmImpact='Medium', HelpUri='http://go.microsoft.com/fwlink/?LinkId=301402')]
    param ( )

    dynamicparam {
        $parameters = New-Object System.Management.Automation.RuntimeDefinedParameterDictionary

        # AccountExpirationDate
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Identity"
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("AccountExpirationDate", [System.Nullable`1[System.DateTime]], $attributes)
        $parameters.Add("AccountExpirationDate", $parameter)

        # AccountNotDelegated
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Identity"
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("AccountNotDelegated", [System.Nullable`1[System.Boolean]], $attributes)
        $parameters.Add("AccountNotDelegated", $parameter)

        # Add
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Identity"
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Add", [System.Collections.Hashtable], $attributes)
        $parameters.Add("Add", $parameter)

        # AllowReversiblePasswordEncryption
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Identity"
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("AllowReversiblePasswordEncryption", [System.Nullable`1[System.Boolean]], $attributes)
        $parameters.Add("AllowReversiblePasswordEncryption", $parameter)

        # AuthenticationPolicy
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Identity"
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("AuthenticationPolicy", [System.Object], $attributes)
        $parameters.Add("AuthenticationPolicy", $parameter)

        # AuthenticationPolicySilo
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Identity"
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("AuthenticationPolicySilo", [System.Object], $attributes)
        $parameters.Add("AuthenticationPolicySilo", $parameter)

        # AuthType
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("AuthType", [System.Object], $attributes)
        $parameters.Add("AuthType", $parameter)

        # CannotChangePassword
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Identity"
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("CannotChangePassword", [System.Nullable`1[System.Boolean]], $attributes)
        $parameters.Add("CannotChangePassword", $parameter)

        # Certificates
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Identity"
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Certificates", [System.Collections.Hashtable], $attributes)
        $parameters.Add("Certificates", $parameter)

        # ChangePasswordAtLogon
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Identity"
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("ChangePasswordAtLogon", [System.Nullable`1[System.Boolean]], $attributes)
        $parameters.Add("ChangePasswordAtLogon", $parameter)

        # Clear
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Identity"
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Clear", [System.String[]], $attributes)
        $parameters.Add("Clear", $parameter)

        # CompoundIdentitySupported
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Identity"
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("CompoundIdentitySupported", [System.Nullable`1[System.Boolean]], $attributes)
        $parameters.Add("CompoundIdentitySupported", $parameter)

        # Credential
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.CredentialAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Credential", [System.Management.Automation.PSCredential], $attributes)
        $parameters.Add("Credential", $parameter)

        # Description
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Identity"
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Description", [System.String], $attributes)
        $parameters.Add("Description", $parameter)

        # DisplayName
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Identity"
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("DisplayName", [System.String], $attributes)
        $parameters.Add("DisplayName", $parameter)

        # DNSHostName
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Identity"
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("DNSHostName", [System.String], $attributes)
        $parameters.Add("DNSHostName", $parameter)

        # Enabled
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Identity"
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Enabled", [System.Nullable`1[System.Boolean]], $attributes)
        $parameters.Add("Enabled", $parameter)

        # HomePage
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Identity"
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("HomePage", [System.String], $attributes)
        $parameters.Add("HomePage", $parameter)

        # Identity
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.Position = 0
        $attribute.ParameterSetName = "Identity"
        $attribute.Mandatory = $True
        $attribute.ValueFromPipeline = $True
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Identity", [System.Object], $attributes)
        $parameters.Add("Identity", $parameter)

        # Instance
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Instance"
        $attribute.Mandatory = $True
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Instance", [System.Object], $attributes)
        $parameters.Add("Instance", $parameter)

        # KerberosEncryptionType
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Identity"
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("KerberosEncryptionType", [System.Object], $attributes)
        $parameters.Add("KerberosEncryptionType", $parameter)

        # Location
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Identity"
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Location", [System.String], $attributes)
        $parameters.Add("Location", $parameter)

        # ManagedBy
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Identity"
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("ManagedBy", [System.Object], $attributes)
        $parameters.Add("ManagedBy", $parameter)

        # OperatingSystem
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Identity"
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("OperatingSystem", [System.String], $attributes)
        $parameters.Add("OperatingSystem", $parameter)

        # OperatingSystemHotfix
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Identity"
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("OperatingSystemHotfix", [System.String], $attributes)
        $parameters.Add("OperatingSystemHotfix", $parameter)

        # OperatingSystemServicePack
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Identity"
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("OperatingSystemServicePack", [System.String], $attributes)
        $parameters.Add("OperatingSystemServicePack", $parameter)

        # OperatingSystemVersion
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Identity"
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("OperatingSystemVersion", [System.String], $attributes)
        $parameters.Add("OperatingSystemVersion", $parameter)

        # Partition
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Identity"
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Partition", [System.String], $attributes)
        $parameters.Add("Partition", $parameter)

        # PassThru
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("PassThru", [System.Management.Automation.SwitchParameter], $attributes)
        $parameters.Add("PassThru", $parameter)

        # PasswordNeverExpires
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Identity"
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("PasswordNeverExpires", [System.Nullable`1[System.Boolean]], $attributes)
        $parameters.Add("PasswordNeverExpires", $parameter)

        # PasswordNotRequired
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Identity"
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("PasswordNotRequired", [System.Nullable`1[System.Boolean]], $attributes)
        $parameters.Add("PasswordNotRequired", $parameter)

        # PrincipalsAllowedToDelegateToAccount
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Identity"
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("PrincipalsAllowedToDelegateToAccount", [System.Object[]], $attributes)
        $parameters.Add("PrincipalsAllowedToDelegateToAccount", $parameter)

        # Remove
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Identity"
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Remove", [System.Collections.Hashtable], $attributes)
        $parameters.Add("Remove", $parameter)

        # Replace
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Identity"
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Replace", [System.Collections.Hashtable], $attributes)
        $parameters.Add("Replace", $parameter)

        # SAMAccountName
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Identity"
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("SAMAccountName", [System.String], $attributes)
        $parameters.Add("SAMAccountName", $parameter)

        # Server
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Server", [System.String], $attributes)
        $parameters.Add("Server", $parameter)

        # ServicePrincipalNames
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Identity"
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("ServicePrincipalNames", [System.Collections.Hashtable], $attributes)
        $parameters.Add("ServicePrincipalNames", $parameter)

        # TrustedForDelegation
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Identity"
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("TrustedForDelegation", [System.Nullable`1[System.Boolean]], $attributes)
        $parameters.Add("TrustedForDelegation", $parameter)

        # UserPrincipalName
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Identity"
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("UserPrincipalName", [System.String], $attributes)
        $parameters.Add("UserPrincipalName", $parameter)

        return $parameters
    }

    end {
        throw '{0}: StubNotImplemented' -f $MyInvocation.MyCommand
    }
}

function Set-ADDefaultDomainPasswordPolicy {
    <#
    .SYNOPSIS
        Set-ADDefaultDomainPasswordPolicy [-Identity] <ADDefaultDomainPasswordPolicy> [-WhatIf] [-Confirm] [-AuthType <ADAuthType>] [-ComplexityEnabled <bool>] [-Credential <pscredential>] [-LockoutDuration <timespan>] [-LockoutObservationWindow <timespan>] [-LockoutThreshold <int>] [-MaxPasswordAge <timespan>] [-MinPasswordAge <timespan>] [-MinPasswordLength <int>] [-PassThru] [-PasswordHistoryCount <int>] [-ReversibleEncryptionEnabled <bool>] [-Server <string>] [<CommonParameters>]
    #>


    [CmdletBinding(SupportsShouldProcess=$true, ConfirmImpact='Medium', HelpUri='http://go.microsoft.com/fwlink/?LinkId=219358')]
    param ( )

    dynamicparam {
        $parameters = New-Object System.Management.Automation.RuntimeDefinedParameterDictionary

        # AuthType
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("AuthType", [System.Object], $attributes)
        $parameters.Add("AuthType", $parameter)

        # ComplexityEnabled
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("ComplexityEnabled", [System.Nullable`1[System.Boolean]], $attributes)
        $parameters.Add("ComplexityEnabled", $parameter)

        # Credential
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.CredentialAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Credential", [System.Management.Automation.PSCredential], $attributes)
        $parameters.Add("Credential", $parameter)

        # Identity
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.Position = 0
        $attribute.Mandatory = $True
        $attribute.ValueFromPipeline = $True
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Identity", [System.Object], $attributes)
        $parameters.Add("Identity", $parameter)

        # LockoutDuration
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("LockoutDuration", [System.Nullable`1[System.TimeSpan]], $attributes)
        $parameters.Add("LockoutDuration", $parameter)

        # LockoutObservationWindow
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("LockoutObservationWindow", [System.Nullable`1[System.TimeSpan]], $attributes)
        $parameters.Add("LockoutObservationWindow", $parameter)

        # LockoutThreshold
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("LockoutThreshold", [System.Nullable`1[System.Int32]], $attributes)
        $parameters.Add("LockoutThreshold", $parameter)

        # MaxPasswordAge
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("MaxPasswordAge", [System.Nullable`1[System.TimeSpan]], $attributes)
        $parameters.Add("MaxPasswordAge", $parameter)

        # MinPasswordAge
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("MinPasswordAge", [System.Nullable`1[System.TimeSpan]], $attributes)
        $parameters.Add("MinPasswordAge", $parameter)

        # MinPasswordLength
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("MinPasswordLength", [System.Nullable`1[System.Int32]], $attributes)
        $parameters.Add("MinPasswordLength", $parameter)

        # PassThru
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("PassThru", [System.Management.Automation.SwitchParameter], $attributes)
        $parameters.Add("PassThru", $parameter)

        # PasswordHistoryCount
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("PasswordHistoryCount", [System.Nullable`1[System.Int32]], $attributes)
        $parameters.Add("PasswordHistoryCount", $parameter)

        # ReversibleEncryptionEnabled
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("ReversibleEncryptionEnabled", [System.Nullable`1[System.Boolean]], $attributes)
        $parameters.Add("ReversibleEncryptionEnabled", $parameter)

        # Server
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Server", [System.String], $attributes)
        $parameters.Add("Server", $parameter)

        return $parameters
    }

    end {
        throw '{0}: StubNotImplemented' -f $MyInvocation.MyCommand
    }
}

function Set-ADDomain {
    <#
    .SYNOPSIS
        Set-ADDomain [-Identity] <ADDomain> [-WhatIf] [-Confirm] [-Add <hashtable>] [-AllowedDNSSuffixes <hashtable>] [-AuthType <ADAuthType>] [-Clear <string[]>] [-Credential <pscredential>] [-LastLogonReplicationInterval <timespan>] [-ManagedBy <ADPrincipal>] [-PassThru] [-PublicKeyRequiredPasswordRolling <bool>] [-Remove <hashtable>] [-Replace <hashtable>] [-Server <string>] [<CommonParameters>]
 
Set-ADDomain -Instance <ADDomain> [-WhatIf] [-Confirm] [-AllowedDNSSuffixes <hashtable>] [-AuthType <ADAuthType>] [-Credential <pscredential>] [-LastLogonReplicationInterval <timespan>] [-ManagedBy <ADPrincipal>] [-PassThru] [-PublicKeyRequiredPasswordRolling <bool>] [-Server <string>] [<CommonParameters>]
    #>


    [CmdletBinding(SupportsShouldProcess=$true, ConfirmImpact='Medium', HelpUri='http://go.microsoft.com/fwlink/?LinkId=219349')]
    param ( )

    dynamicparam {
        $parameters = New-Object System.Management.Automation.RuntimeDefinedParameterDictionary

        # Add
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Identity"
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Add", [System.Collections.Hashtable], $attributes)
        $parameters.Add("Add", $parameter)

        # AllowedDNSSuffixes
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("AllowedDNSSuffixes", [System.Collections.Hashtable], $attributes)
        $parameters.Add("AllowedDNSSuffixes", $parameter)

        # AuthType
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("AuthType", [System.Object], $attributes)
        $parameters.Add("AuthType", $parameter)

        # Clear
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Identity"
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Clear", [System.String[]], $attributes)
        $parameters.Add("Clear", $parameter)

        # Credential
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.CredentialAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Credential", [System.Management.Automation.PSCredential], $attributes)
        $parameters.Add("Credential", $parameter)

        # Identity
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.Position = 0
        $attribute.ParameterSetName = "Identity"
        $attribute.Mandatory = $True
        $attribute.ValueFromPipeline = $True
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Identity", [System.Object], $attributes)
        $parameters.Add("Identity", $parameter)

        # Instance
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Instance"
        $attribute.Mandatory = $True
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Instance", [System.Object], $attributes)
        $parameters.Add("Instance", $parameter)

        # LastLogonReplicationInterval
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("LastLogonReplicationInterval", [System.Nullable`1[System.TimeSpan]], $attributes)
        $parameters.Add("LastLogonReplicationInterval", $parameter)

        # ManagedBy
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("ManagedBy", [System.Object], $attributes)
        $parameters.Add("ManagedBy", $parameter)

        # PassThru
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ValidateNotNullAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("PassThru", [System.Management.Automation.SwitchParameter], $attributes)
        $parameters.Add("PassThru", $parameter)

        # PublicKeyRequiredPasswordRolling
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("PublicKeyRequiredPasswordRolling", [System.Boolean], $attributes)
        $parameters.Add("PublicKeyRequiredPasswordRolling", $parameter)

        # Remove
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Identity"
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Remove", [System.Collections.Hashtable], $attributes)
        $parameters.Add("Remove", $parameter)

        # Replace
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Identity"
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Replace", [System.Collections.Hashtable], $attributes)
        $parameters.Add("Replace", $parameter)

        # Server
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Server", [System.String], $attributes)
        $parameters.Add("Server", $parameter)

        return $parameters
    }

    end {
        throw '{0}: StubNotImplemented' -f $MyInvocation.MyCommand
    }
}

function Set-ADDomainMode {
    <#
    .SYNOPSIS
        Set-ADDomainMode [-Identity] <ADDomain> [-DomainMode] <ADDomainMode> [-WhatIf] [-Confirm] [-AuthType <ADAuthType>] [-Credential <pscredential>] [-PassThru] [-Server <string>] [<CommonParameters>]
    #>


    [CmdletBinding(SupportsShouldProcess=$true, ConfirmImpact='High', HelpUri='http://go.microsoft.com/fwlink/?LinkId=219356')]
    param ( )

    dynamicparam {
        $parameters = New-Object System.Management.Automation.RuntimeDefinedParameterDictionary

        # AuthType
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("AuthType", [System.Object], $attributes)
        $parameters.Add("AuthType", $parameter)

        # Credential
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.CredentialAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Credential", [System.Management.Automation.PSCredential], $attributes)
        $parameters.Add("Credential", $parameter)

        # DomainMode
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.Position = 2
        $attribute.Mandatory = $True
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("DomainMode", [System.Object], $attributes)
        $parameters.Add("DomainMode", $parameter)

        # Identity
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.Position = 0
        $attribute.Mandatory = $True
        $attribute.ValueFromPipeline = $True
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Identity", [System.Object], $attributes)
        $parameters.Add("Identity", $parameter)

        # PassThru
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ValidateNotNullAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("PassThru", [System.Management.Automation.SwitchParameter], $attributes)
        $parameters.Add("PassThru", $parameter)

        # Server
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Server", [System.String], $attributes)
        $parameters.Add("Server", $parameter)

        return $parameters
    }

    end {
        throw '{0}: StubNotImplemented' -f $MyInvocation.MyCommand
    }
}

function Set-ADFineGrainedPasswordPolicy {
    <#
    .SYNOPSIS
        Set-ADFineGrainedPasswordPolicy [-Identity] <ADFineGrainedPasswordPolicy> [-WhatIf] [-Confirm] [-Add <hashtable>] [-AuthType <ADAuthType>] [-Clear <string[]>] [-ComplexityEnabled <bool>] [-Credential <pscredential>] [-Description <string>] [-DisplayName <string>] [-LockoutDuration <timespan>] [-LockoutObservationWindow <timespan>] [-LockoutThreshold <int>] [-MaxPasswordAge <timespan>] [-MinPasswordAge <timespan>] [-MinPasswordLength <int>] [-PassThru] [-PasswordHistoryCount <int>] [-Precedence <int>] [-ProtectedFromAccidentalDeletion <bool>] [-Remove <hashtable>] [-Replace <hashtable>] [-ReversibleEncryptionEnabled <bool>] [-Server <string>] [<CommonParameters>]
 
Set-ADFineGrainedPasswordPolicy -Instance <ADFineGrainedPasswordPolicy> [-WhatIf] [-Confirm] [-AuthType <ADAuthType>] [-Credential <pscredential>] [-PassThru] [-Server <string>] [<CommonParameters>]
    #>


    [CmdletBinding(SupportsShouldProcess=$true, ConfirmImpact='Medium', HelpUri='http://go.microsoft.com/fwlink/?LinkId=219348')]
    param ( )

    dynamicparam {
        $parameters = New-Object System.Management.Automation.RuntimeDefinedParameterDictionary

        # Add
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Identity"
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Add", [System.Collections.Hashtable], $attributes)
        $parameters.Add("Add", $parameter)

        # AuthType
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("AuthType", [System.Object], $attributes)
        $parameters.Add("AuthType", $parameter)

        # Clear
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Identity"
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Clear", [System.String[]], $attributes)
        $parameters.Add("Clear", $parameter)

        # ComplexityEnabled
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Identity"
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("ComplexityEnabled", [System.Nullable`1[System.Boolean]], $attributes)
        $parameters.Add("ComplexityEnabled", $parameter)

        # Credential
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.CredentialAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Credential", [System.Management.Automation.PSCredential], $attributes)
        $parameters.Add("Credential", $parameter)

        # Description
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Identity"
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Description", [System.String], $attributes)
        $parameters.Add("Description", $parameter)

        # DisplayName
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Identity"
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("DisplayName", [System.String], $attributes)
        $parameters.Add("DisplayName", $parameter)

        # Identity
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.Position = 0
        $attribute.ParameterSetName = "Identity"
        $attribute.Mandatory = $True
        $attribute.ValueFromPipeline = $True
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Identity", [System.Object], $attributes)
        $parameters.Add("Identity", $parameter)

        # Instance
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Instance"
        $attribute.Mandatory = $True
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Instance", [System.Object], $attributes)
        $parameters.Add("Instance", $parameter)

        # LockoutDuration
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Identity"
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("LockoutDuration", [System.Nullable`1[System.TimeSpan]], $attributes)
        $parameters.Add("LockoutDuration", $parameter)

        # LockoutObservationWindow
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Identity"
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("LockoutObservationWindow", [System.Nullable`1[System.TimeSpan]], $attributes)
        $parameters.Add("LockoutObservationWindow", $parameter)

        # LockoutThreshold
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Identity"
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("LockoutThreshold", [System.Nullable`1[System.Int32]], $attributes)
        $parameters.Add("LockoutThreshold", $parameter)

        # MaxPasswordAge
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Identity"
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("MaxPasswordAge", [System.Nullable`1[System.TimeSpan]], $attributes)
        $parameters.Add("MaxPasswordAge", $parameter)

        # MinPasswordAge
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Identity"
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("MinPasswordAge", [System.Nullable`1[System.TimeSpan]], $attributes)
        $parameters.Add("MinPasswordAge", $parameter)

        # MinPasswordLength
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Identity"
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("MinPasswordLength", [System.Nullable`1[System.Int32]], $attributes)
        $parameters.Add("MinPasswordLength", $parameter)

        # PassThru
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("PassThru", [System.Management.Automation.SwitchParameter], $attributes)
        $parameters.Add("PassThru", $parameter)

        # PasswordHistoryCount
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Identity"
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("PasswordHistoryCount", [System.Nullable`1[System.Int32]], $attributes)
        $parameters.Add("PasswordHistoryCount", $parameter)

        # Precedence
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Identity"
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Precedence", [System.Nullable`1[System.Int32]], $attributes)
        $parameters.Add("Precedence", $parameter)

        # ProtectedFromAccidentalDeletion
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Identity"
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("ProtectedFromAccidentalDeletion", [System.Nullable`1[System.Boolean]], $attributes)
        $parameters.Add("ProtectedFromAccidentalDeletion", $parameter)

        # Remove
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Identity"
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Remove", [System.Collections.Hashtable], $attributes)
        $parameters.Add("Remove", $parameter)

        # Replace
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Identity"
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Replace", [System.Collections.Hashtable], $attributes)
        $parameters.Add("Replace", $parameter)

        # ReversibleEncryptionEnabled
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Identity"
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("ReversibleEncryptionEnabled", [System.Nullable`1[System.Boolean]], $attributes)
        $parameters.Add("ReversibleEncryptionEnabled", $parameter)

        # Server
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Server", [System.String], $attributes)
        $parameters.Add("Server", $parameter)

        return $parameters
    }

    end {
        throw '{0}: StubNotImplemented' -f $MyInvocation.MyCommand
    }
}

function Set-ADForest {
    <#
    .SYNOPSIS
        Set-ADForest [-Identity] <ADForest> [-WhatIf] [-Confirm] [-AuthType <ADAuthType>] [-Credential <pscredential>] [-PassThru] [-Server <string>] [-SPNSuffixes <hashtable>] [-UPNSuffixes <hashtable>] [<CommonParameters>]
    #>


    [CmdletBinding(SupportsShouldProcess=$true, ConfirmImpact='Medium', HelpUri='http://go.microsoft.com/fwlink/?LinkId=219350')]
    param ( )

    dynamicparam {
        $parameters = New-Object System.Management.Automation.RuntimeDefinedParameterDictionary

        # AuthType
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("AuthType", [System.Object], $attributes)
        $parameters.Add("AuthType", $parameter)

        # Credential
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.CredentialAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Credential", [System.Management.Automation.PSCredential], $attributes)
        $parameters.Add("Credential", $parameter)

        # Identity
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ValidateNotNullAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.Position = 0
        $attribute.Mandatory = $True
        $attribute.ValueFromPipeline = $True
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Identity", [System.Object], $attributes)
        $parameters.Add("Identity", $parameter)

        # PassThru
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ValidateNotNullAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("PassThru", [System.Management.Automation.SwitchParameter], $attributes)
        $parameters.Add("PassThru", $parameter)

        # Server
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Server", [System.String], $attributes)
        $parameters.Add("Server", $parameter)

        # SPNSuffixes
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("SPNSuffixes", [System.Collections.Hashtable], $attributes)
        $parameters.Add("SPNSuffixes", $parameter)

        # UPNSuffixes
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("UPNSuffixes", [System.Collections.Hashtable], $attributes)
        $parameters.Add("UPNSuffixes", $parameter)

        return $parameters
    }

    end {
        throw '{0}: StubNotImplemented' -f $MyInvocation.MyCommand
    }
}

function Set-ADForestMode {
    <#
    .SYNOPSIS
        Set-ADForestMode [-Identity] <ADForest> [-ForestMode] <ADForestMode> [-WhatIf] [-Confirm] [-AuthType <ADAuthType>] [-Credential <pscredential>] [-PassThru] [-Server <string>] [<CommonParameters>]
    #>


    [CmdletBinding(SupportsShouldProcess=$true, ConfirmImpact='High', HelpUri='http://go.microsoft.com/fwlink/?LinkId=219357')]
    param ( )

    dynamicparam {
        $parameters = New-Object System.Management.Automation.RuntimeDefinedParameterDictionary

        # AuthType
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("AuthType", [System.Object], $attributes)
        $parameters.Add("AuthType", $parameter)

        # Credential
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.CredentialAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Credential", [System.Management.Automation.PSCredential], $attributes)
        $parameters.Add("Credential", $parameter)

        # ForestMode
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.Position = 2
        $attribute.Mandatory = $True
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("ForestMode", [System.Object], $attributes)
        $parameters.Add("ForestMode", $parameter)

        # Identity
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.Position = 0
        $attribute.Mandatory = $True
        $attribute.ValueFromPipeline = $True
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Identity", [System.Object], $attributes)
        $parameters.Add("Identity", $parameter)

        # PassThru
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ValidateNotNullAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("PassThru", [System.Management.Automation.SwitchParameter], $attributes)
        $parameters.Add("PassThru", $parameter)

        # Server
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Server", [System.String], $attributes)
        $parameters.Add("Server", $parameter)

        return $parameters
    }

    end {
        throw '{0}: StubNotImplemented' -f $MyInvocation.MyCommand
    }
}

function Set-ADGroup {
    <#
    .SYNOPSIS
        Set-ADGroup [-Identity] <ADGroup> [-WhatIf] [-Confirm] [-Add <hashtable>] [-AuthType <ADAuthType>] [-Clear <string[]>] [-Credential <pscredential>] [-Description <string>] [-DisplayName <string>] [-GroupCategory <ADGroupCategory>] [-GroupScope <ADGroupScope>] [-HomePage <string>] [-ManagedBy <ADPrincipal>] [-Partition <string>] [-PassThru] [-Remove <hashtable>] [-Replace <hashtable>] [-SamAccountName <string>] [-Server <string>] [<CommonParameters>]
 
Set-ADGroup -Instance <ADGroup> [-WhatIf] [-Confirm] [-AuthType <ADAuthType>] [-Credential <pscredential>] [-PassThru] [-Server <string>] [<CommonParameters>]
    #>


    [CmdletBinding(SupportsShouldProcess=$true, ConfirmImpact='Medium', HelpUri='http://go.microsoft.com/fwlink/?LinkId=219347')]
    param ( )

    dynamicparam {
        $parameters = New-Object System.Management.Automation.RuntimeDefinedParameterDictionary

        # Add
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Identity"
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Add", [System.Collections.Hashtable], $attributes)
        $parameters.Add("Add", $parameter)

        # AuthType
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("AuthType", [System.Object], $attributes)
        $parameters.Add("AuthType", $parameter)

        # Clear
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Identity"
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Clear", [System.String[]], $attributes)
        $parameters.Add("Clear", $parameter)

        # Credential
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.CredentialAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Credential", [System.Management.Automation.PSCredential], $attributes)
        $parameters.Add("Credential", $parameter)

        # Description
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Identity"
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Description", [System.String], $attributes)
        $parameters.Add("Description", $parameter)

        # DisplayName
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Identity"
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("DisplayName", [System.String], $attributes)
        $parameters.Add("DisplayName", $parameter)

        # GroupCategory
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Identity"
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("GroupCategory", [System.Object], $attributes)
        $parameters.Add("GroupCategory", $parameter)

        # GroupScope
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Identity"
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("GroupScope", [System.Object], $attributes)
        $parameters.Add("GroupScope", $parameter)

        # HomePage
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Identity"
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("HomePage", [System.String], $attributes)
        $parameters.Add("HomePage", $parameter)

        # Identity
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ValidateNotNullAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.Position = 0
        $attribute.ParameterSetName = "Identity"
        $attribute.Mandatory = $True
        $attribute.ValueFromPipeline = $True
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Identity", [System.Object], $attributes)
        $parameters.Add("Identity", $parameter)

        # Instance
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Instance"
        $attribute.Mandatory = $True
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Instance", [System.Object], $attributes)
        $parameters.Add("Instance", $parameter)

        # ManagedBy
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Identity"
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("ManagedBy", [System.Object], $attributes)
        $parameters.Add("ManagedBy", $parameter)

        # Partition
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Identity"
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Partition", [System.String], $attributes)
        $parameters.Add("Partition", $parameter)

        # PassThru
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("PassThru", [System.Management.Automation.SwitchParameter], $attributes)
        $parameters.Add("PassThru", $parameter)

        # Remove
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Identity"
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Remove", [System.Collections.Hashtable], $attributes)
        $parameters.Add("Remove", $parameter)

        # Replace
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Identity"
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Replace", [System.Collections.Hashtable], $attributes)
        $parameters.Add("Replace", $parameter)

        # SamAccountName
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Identity"
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("SamAccountName", [System.String], $attributes)
        $parameters.Add("SamAccountName", $parameter)

        # Server
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Server", [System.String], $attributes)
        $parameters.Add("Server", $parameter)

        return $parameters
    }

    end {
        throw '{0}: StubNotImplemented' -f $MyInvocation.MyCommand
    }
}

function Set-ADObject {
    <#
    .SYNOPSIS
        Set-ADObject [-Identity] <ADObject> [-WhatIf] [-Confirm] [-Add <hashtable>] [-AuthType <ADAuthType>] [-Clear <string[]>] [-Credential <pscredential>] [-Description <string>] [-DisplayName <string>] [-Partition <string>] [-PassThru] [-ProtectedFromAccidentalDeletion <bool>] [-Remove <hashtable>] [-Replace <hashtable>] [-Server <string>] [<CommonParameters>]
 
Set-ADObject -Instance <ADObject> [-WhatIf] [-Confirm] [-AuthType <ADAuthType>] [-Credential <pscredential>] [-PassThru] [-Server <string>] [<CommonParameters>]
    #>


    [CmdletBinding(SupportsShouldProcess=$true, ConfirmImpact='Medium', HelpUri='http://go.microsoft.com/fwlink/?LinkId=219344')]
    param ( )

    dynamicparam {
        $parameters = New-Object System.Management.Automation.RuntimeDefinedParameterDictionary

        # Add
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Identity"
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Add", [System.Collections.Hashtable], $attributes)
        $parameters.Add("Add", $parameter)

        # AuthType
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("AuthType", [System.Object], $attributes)
        $parameters.Add("AuthType", $parameter)

        # Clear
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Identity"
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Clear", [System.String[]], $attributes)
        $parameters.Add("Clear", $parameter)

        # Credential
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.CredentialAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Credential", [System.Management.Automation.PSCredential], $attributes)
        $parameters.Add("Credential", $parameter)

        # Description
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Identity"
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Description", [System.String], $attributes)
        $parameters.Add("Description", $parameter)

        # DisplayName
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Identity"
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("DisplayName", [System.String], $attributes)
        $parameters.Add("DisplayName", $parameter)

        # Identity
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.Position = 0
        $attribute.ParameterSetName = "Identity"
        $attribute.Mandatory = $True
        $attribute.ValueFromPipeline = $True
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Identity", [System.Object], $attributes)
        $parameters.Add("Identity", $parameter)

        # Instance
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Instance"
        $attribute.Mandatory = $True
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Instance", [System.Object], $attributes)
        $parameters.Add("Instance", $parameter)

        # Partition
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Identity"
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Partition", [System.String], $attributes)
        $parameters.Add("Partition", $parameter)

        # PassThru
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ValidateNotNullAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("PassThru", [System.Management.Automation.SwitchParameter], $attributes)
        $parameters.Add("PassThru", $parameter)

        # ProtectedFromAccidentalDeletion
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Identity"
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("ProtectedFromAccidentalDeletion", [System.Nullable`1[System.Boolean]], $attributes)
        $parameters.Add("ProtectedFromAccidentalDeletion", $parameter)

        # Remove
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Identity"
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Remove", [System.Collections.Hashtable], $attributes)
        $parameters.Add("Remove", $parameter)

        # Replace
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Identity"
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Replace", [System.Collections.Hashtable], $attributes)
        $parameters.Add("Replace", $parameter)

        # Server
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Server", [System.String], $attributes)
        $parameters.Add("Server", $parameter)

        return $parameters
    }

    end {
        throw '{0}: StubNotImplemented' -f $MyInvocation.MyCommand
    }
}

function Set-ADOrganizationalUnit {
    <#
    .SYNOPSIS
        Set-ADOrganizationalUnit [-Identity] <ADOrganizationalUnit> [-WhatIf] [-Confirm] [-Add <hashtable>] [-AuthType <ADAuthType>] [-City <string>] [-Clear <string[]>] [-Country <string>] [-Credential <pscredential>] [-Description <string>] [-DisplayName <string>] [-ManagedBy <ADPrincipal>] [-Partition <string>] [-PassThru] [-PostalCode <string>] [-ProtectedFromAccidentalDeletion <bool>] [-Remove <hashtable>] [-Replace <hashtable>] [-Server <string>] [-State <string>] [-StreetAddress <string>] [<CommonParameters>]
 
Set-ADOrganizationalUnit -Instance <ADOrganizationalUnit> [-WhatIf] [-Confirm] [-AuthType <ADAuthType>] [-Credential <pscredential>] [-PassThru] [-Server <string>] [<CommonParameters>]
    #>


    [CmdletBinding(SupportsShouldProcess=$true, ConfirmImpact='Medium', HelpUri='http://go.microsoft.com/fwlink/?LinkId=219351')]
    param ( )

    dynamicparam {
        $parameters = New-Object System.Management.Automation.RuntimeDefinedParameterDictionary

        # Add
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Identity"
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Add", [System.Collections.Hashtable], $attributes)
        $parameters.Add("Add", $parameter)

        # AuthType
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("AuthType", [System.Object], $attributes)
        $parameters.Add("AuthType", $parameter)

        # City
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Identity"
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("City", [System.String], $attributes)
        $parameters.Add("City", $parameter)

        # Clear
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Identity"
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Clear", [System.String[]], $attributes)
        $parameters.Add("Clear", $parameter)

        # Country
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Identity"
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Country", [System.String], $attributes)
        $parameters.Add("Country", $parameter)

        # Credential
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.CredentialAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Credential", [System.Management.Automation.PSCredential], $attributes)
        $parameters.Add("Credential", $parameter)

        # Description
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Identity"
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Description", [System.String], $attributes)
        $parameters.Add("Description", $parameter)

        # DisplayName
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Identity"
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("DisplayName", [System.String], $attributes)
        $parameters.Add("DisplayName", $parameter)

        # Identity
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ValidateNotNullAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.Position = 0
        $attribute.ParameterSetName = "Identity"
        $attribute.Mandatory = $True
        $attribute.ValueFromPipeline = $True
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Identity", [System.Object], $attributes)
        $parameters.Add("Identity", $parameter)

        # Instance
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ValidateNotNullAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Instance"
        $attribute.Mandatory = $True
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Instance", [System.Object], $attributes)
        $parameters.Add("Instance", $parameter)

        # ManagedBy
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Identity"
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("ManagedBy", [System.Object], $attributes)
        $parameters.Add("ManagedBy", $parameter)

        # Partition
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Identity"
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Partition", [System.String], $attributes)
        $parameters.Add("Partition", $parameter)

        # PassThru
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ValidateNotNullAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("PassThru", [System.Management.Automation.SwitchParameter], $attributes)
        $parameters.Add("PassThru", $parameter)

        # PostalCode
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Identity"
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("PostalCode", [System.String], $attributes)
        $parameters.Add("PostalCode", $parameter)

        # ProtectedFromAccidentalDeletion
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Identity"
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("ProtectedFromAccidentalDeletion", [System.Nullable`1[System.Boolean]], $attributes)
        $parameters.Add("ProtectedFromAccidentalDeletion", $parameter)

        # Remove
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Identity"
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Remove", [System.Collections.Hashtable], $attributes)
        $parameters.Add("Remove", $parameter)

        # Replace
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Identity"
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Replace", [System.Collections.Hashtable], $attributes)
        $parameters.Add("Replace", $parameter)

        # Server
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Server", [System.String], $attributes)
        $parameters.Add("Server", $parameter)

        # State
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Identity"
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("State", [System.String], $attributes)
        $parameters.Add("State", $parameter)

        # StreetAddress
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Identity"
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("StreetAddress", [System.String], $attributes)
        $parameters.Add("StreetAddress", $parameter)

        return $parameters
    }

    end {
        throw '{0}: StubNotImplemented' -f $MyInvocation.MyCommand
    }
}

function Set-ADReplicationConnection {
    <#
    .SYNOPSIS
        Set-ADReplicationConnection [-Identity] <ADReplicationConnection> [-WhatIf] [-Confirm] [-Add <hashtable>] [-AuthType <ADAuthType>] [-Clear <string[]>] [-Credential <pscredential>] [-PassThru] [-Remove <hashtable>] [-Replace <hashtable>] [-ReplicateFromDirectoryServer <ADDirectoryServer>] [-ReplicationSchedule <ActiveDirectorySchedule>] [-Server <string>] [<CommonParameters>]
 
Set-ADReplicationConnection -Instance <ADReplicationConnection> [-WhatIf] [-Confirm] [-AuthType <ADAuthType>] [-Clear <string[]>] [-Credential <pscredential>] [-PassThru] [-Server <string>] [<CommonParameters>]
    #>


    [CmdletBinding(SupportsShouldProcess=$true, ConfirmImpact='Medium', HelpUri='http://go.microsoft.com/fwlink/?LinkId=216413')]
    param ( )

    dynamicparam {
        $parameters = New-Object System.Management.Automation.RuntimeDefinedParameterDictionary

        # Add
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Identity"
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Add", [System.Collections.Hashtable], $attributes)
        $parameters.Add("Add", $parameter)

        # AuthType
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("AuthType", [System.Object], $attributes)
        $parameters.Add("AuthType", $parameter)

        # Clear
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Clear", [System.String[]], $attributes)
        $parameters.Add("Clear", $parameter)

        # Credential
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.CredentialAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Credential", [System.Management.Automation.PSCredential], $attributes)
        $parameters.Add("Credential", $parameter)

        # Identity
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.Position = 0
        $attribute.ParameterSetName = "Identity"
        $attribute.Mandatory = $True
        $attribute.ValueFromPipeline = $True
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Identity", [System.Object], $attributes)
        $parameters.Add("Identity", $parameter)

        # Instance
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Instance"
        $attribute.Mandatory = $True
        $attribute.ValueFromPipeline = $True
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Instance", [System.Object], $attributes)
        $parameters.Add("Instance", $parameter)

        # PassThru
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("PassThru", [System.Management.Automation.SwitchParameter], $attributes)
        $parameters.Add("PassThru", $parameter)

        # Remove
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Identity"
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Remove", [System.Collections.Hashtable], $attributes)
        $parameters.Add("Remove", $parameter)

        # Replace
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Identity"
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Replace", [System.Collections.Hashtable], $attributes)
        $parameters.Add("Replace", $parameter)

        # ReplicateFromDirectoryServer
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ValidateNotNullAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Identity"
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("ReplicateFromDirectoryServer", [System.Object], $attributes)
        $parameters.Add("ReplicateFromDirectoryServer", $parameter)

        # ReplicationSchedule
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Identity"
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("ReplicationSchedule", [System.DirectoryServices.ActiveDirectory.ActiveDirectorySchedule], $attributes)
        $parameters.Add("ReplicationSchedule", $parameter)

        # Server
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Server", [System.String], $attributes)
        $parameters.Add("Server", $parameter)

        return $parameters
    }

    end {
        throw '{0}: StubNotImplemented' -f $MyInvocation.MyCommand
    }
}

function Set-ADReplicationSite {
    <#
    .SYNOPSIS
        Set-ADReplicationSite [-Identity] <ADReplicationSite> [-WhatIf] [-Confirm] [-Add <hashtable>] [-AuthType <ADAuthType>] [-AutomaticInterSiteTopologyGenerationEnabled <bool>] [-AutomaticTopologyGenerationEnabled <bool>] [-Clear <string[]>] [-Credential <pscredential>] [-Description <string>] [-InterSiteTopologyGenerator <ADDirectoryServer>] [-ManagedBy <ADPrincipal>] [-PassThru] [-ProtectedFromAccidentalDeletion <bool>] [-RedundantServerTopologyEnabled <bool>] [-Remove <hashtable>] [-Replace <hashtable>] [-ReplicationSchedule <ActiveDirectorySchedule>] [-ScheduleHashingEnabled <bool>] [-Server <string>] [-TopologyCleanupEnabled <bool>] [-TopologyDetectStaleEnabled <bool>] [-TopologyMinimumHopsEnabled <bool>] [-UniversalGroupCachingEnabled <bool>] [-UniversalGroupCachingRefreshSite <ADReplicationSite>] [-WindowsServer2000BridgeheadSelectionMethodEnabled <bool>] [-WindowsServer2000KCCISTGSelectionBehaviorEnabled <bool>] [-WindowsServer2003KCCBehaviorEnabled <bool>] [-WindowsServer2003KCCIgnoreScheduleEnabled <bool>] [-WindowsServer2003KCCSiteLinkBridgingEnabled <bool>] [<CommonParameters>]
 
Set-ADReplicationSite -Instance <ADReplicationSite> [-WhatIf] [-Confirm] [-AuthType <ADAuthType>] [-Credential <pscredential>] [-PassThru] [-Server <string>] [<CommonParameters>]
    #>


    [CmdletBinding(SupportsShouldProcess=$true, ConfirmImpact='Medium', HelpUri='http://go.microsoft.com/fwlink/?LinkId=216414')]
    param ( )

    dynamicparam {
        $parameters = New-Object System.Management.Automation.RuntimeDefinedParameterDictionary

        # Add
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Identity"
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Add", [System.Collections.Hashtable], $attributes)
        $parameters.Add("Add", $parameter)

        # AuthType
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("AuthType", [System.Object], $attributes)
        $parameters.Add("AuthType", $parameter)

        # AutomaticInterSiteTopologyGenerationEnabled
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Identity"
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("AutomaticInterSiteTopologyGenerationEnabled", [System.Nullable`1[System.Boolean]], $attributes)
        $parameters.Add("AutomaticInterSiteTopologyGenerationEnabled", $parameter)

        # AutomaticTopologyGenerationEnabled
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Identity"
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("AutomaticTopologyGenerationEnabled", [System.Nullable`1[System.Boolean]], $attributes)
        $parameters.Add("AutomaticTopologyGenerationEnabled", $parameter)

        # Clear
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Identity"
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Clear", [System.String[]], $attributes)
        $parameters.Add("Clear", $parameter)

        # Credential
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.CredentialAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Credential", [System.Management.Automation.PSCredential], $attributes)
        $parameters.Add("Credential", $parameter)

        # Description
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Identity"
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Description", [System.String], $attributes)
        $parameters.Add("Description", $parameter)

        # Identity
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.Position = 0
        $attribute.ParameterSetName = "Identity"
        $attribute.Mandatory = $True
        $attribute.ValueFromPipeline = $True
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Identity", [System.Object], $attributes)
        $parameters.Add("Identity", $parameter)

        # Instance
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Instance"
        $attribute.Mandatory = $True
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Instance", [System.Object], $attributes)
        $parameters.Add("Instance", $parameter)

        # InterSiteTopologyGenerator
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Identity"
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("InterSiteTopologyGenerator", [System.Object], $attributes)
        $parameters.Add("InterSiteTopologyGenerator", $parameter)

        # ManagedBy
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Identity"
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("ManagedBy", [System.Object], $attributes)
        $parameters.Add("ManagedBy", $parameter)

        # PassThru
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("PassThru", [System.Management.Automation.SwitchParameter], $attributes)
        $parameters.Add("PassThru", $parameter)

        # ProtectedFromAccidentalDeletion
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Identity"
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("ProtectedFromAccidentalDeletion", [System.Nullable`1[System.Boolean]], $attributes)
        $parameters.Add("ProtectedFromAccidentalDeletion", $parameter)

        # RedundantServerTopologyEnabled
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Identity"
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("RedundantServerTopologyEnabled", [System.Nullable`1[System.Boolean]], $attributes)
        $parameters.Add("RedundantServerTopologyEnabled", $parameter)

        # Remove
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Identity"
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Remove", [System.Collections.Hashtable], $attributes)
        $parameters.Add("Remove", $parameter)

        # Replace
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Identity"
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Replace", [System.Collections.Hashtable], $attributes)
        $parameters.Add("Replace", $parameter)

        # ReplicationSchedule
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Identity"
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("ReplicationSchedule", [System.DirectoryServices.ActiveDirectory.ActiveDirectorySchedule], $attributes)
        $parameters.Add("ReplicationSchedule", $parameter)

        # ScheduleHashingEnabled
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Identity"
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("ScheduleHashingEnabled", [System.Nullable`1[System.Boolean]], $attributes)
        $parameters.Add("ScheduleHashingEnabled", $parameter)

        # Server
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Server", [System.String], $attributes)
        $parameters.Add("Server", $parameter)

        # TopologyCleanupEnabled
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Identity"
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("TopologyCleanupEnabled", [System.Nullable`1[System.Boolean]], $attributes)
        $parameters.Add("TopologyCleanupEnabled", $parameter)

        # TopologyDetectStaleEnabled
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Identity"
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("TopologyDetectStaleEnabled", [System.Nullable`1[System.Boolean]], $attributes)
        $parameters.Add("TopologyDetectStaleEnabled", $parameter)

        # TopologyMinimumHopsEnabled
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Identity"
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("TopologyMinimumHopsEnabled", [System.Nullable`1[System.Boolean]], $attributes)
        $parameters.Add("TopologyMinimumHopsEnabled", $parameter)

        # UniversalGroupCachingEnabled
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Identity"
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("UniversalGroupCachingEnabled", [System.Nullable`1[System.Boolean]], $attributes)
        $parameters.Add("UniversalGroupCachingEnabled", $parameter)

        # UniversalGroupCachingRefreshSite
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Identity"
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("UniversalGroupCachingRefreshSite", [System.Object], $attributes)
        $parameters.Add("UniversalGroupCachingRefreshSite", $parameter)

        # WindowsServer2000BridgeheadSelectionMethodEnabled
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Identity"
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("WindowsServer2000BridgeheadSelectionMethodEnabled", [System.Nullable`1[System.Boolean]], $attributes)
        $parameters.Add("WindowsServer2000BridgeheadSelectionMethodEnabled", $parameter)

        # WindowsServer2000KCCISTGSelectionBehaviorEnabled
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Identity"
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("WindowsServer2000KCCISTGSelectionBehaviorEnabled", [System.Nullable`1[System.Boolean]], $attributes)
        $parameters.Add("WindowsServer2000KCCISTGSelectionBehaviorEnabled", $parameter)

        # WindowsServer2003KCCBehaviorEnabled
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Identity"
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("WindowsServer2003KCCBehaviorEnabled", [System.Nullable`1[System.Boolean]], $attributes)
        $parameters.Add("WindowsServer2003KCCBehaviorEnabled", $parameter)

        # WindowsServer2003KCCIgnoreScheduleEnabled
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Identity"
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("WindowsServer2003KCCIgnoreScheduleEnabled", [System.Nullable`1[System.Boolean]], $attributes)
        $parameters.Add("WindowsServer2003KCCIgnoreScheduleEnabled", $parameter)

        # WindowsServer2003KCCSiteLinkBridgingEnabled
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Identity"
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("WindowsServer2003KCCSiteLinkBridgingEnabled", [System.Nullable`1[System.Boolean]], $attributes)
        $parameters.Add("WindowsServer2003KCCSiteLinkBridgingEnabled", $parameter)

        return $parameters
    }

    end {
        throw '{0}: StubNotImplemented' -f $MyInvocation.MyCommand
    }
}

function Set-ADReplicationSiteLink {
    <#
    .SYNOPSIS
        Set-ADReplicationSiteLink [-Identity] <ADReplicationSiteLink> [-WhatIf] [-Confirm] [-Add <hashtable>] [-AuthType <ADAuthType>] [-Clear <string[]>] [-Cost <int>] [-Credential <pscredential>] [-Description <string>] [-PassThru] [-Remove <hashtable>] [-Replace <hashtable>] [-ReplicationFrequencyInMinutes <int>] [-ReplicationSchedule <ActiveDirectorySchedule>] [-Server <string>] [-SitesIncluded <hashtable>] [<CommonParameters>]
 
Set-ADReplicationSiteLink [-WhatIf] [-Confirm] [-AuthType <ADAuthType>] [-Credential <pscredential>] [-Instance <ADReplicationSiteLink>] [-PassThru] [-Server <string>] [<CommonParameters>]
    #>


    [CmdletBinding(SupportsShouldProcess=$true, ConfirmImpact='Medium', HelpUri='http://go.microsoft.com/fwlink/?LinkId=216415')]
    param ( )

    dynamicparam {
        $parameters = New-Object System.Management.Automation.RuntimeDefinedParameterDictionary

        # Add
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Identity"
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Add", [System.Collections.Hashtable], $attributes)
        $parameters.Add("Add", $parameter)

        # AuthType
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("AuthType", [System.Object], $attributes)
        $parameters.Add("AuthType", $parameter)

        # Clear
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Identity"
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Clear", [System.String[]], $attributes)
        $parameters.Add("Clear", $parameter)

        # Cost
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Identity"
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Cost", [System.Nullable`1[System.Int32]], $attributes)
        $parameters.Add("Cost", $parameter)

        # Credential
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.CredentialAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Credential", [System.Management.Automation.PSCredential], $attributes)
        $parameters.Add("Credential", $parameter)

        # Description
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Identity"
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Description", [System.String], $attributes)
        $parameters.Add("Description", $parameter)

        # Identity
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.Position = 0
        $attribute.ParameterSetName = "Identity"
        $attribute.Mandatory = $True
        $attribute.ValueFromPipeline = $True
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Identity", [System.Object], $attributes)
        $parameters.Add("Identity", $parameter)

        # Instance
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Instance"
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Instance", [System.Object], $attributes)
        $parameters.Add("Instance", $parameter)

        # PassThru
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("PassThru", [System.Management.Automation.SwitchParameter], $attributes)
        $parameters.Add("PassThru", $parameter)

        # Remove
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Identity"
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Remove", [System.Collections.Hashtable], $attributes)
        $parameters.Add("Remove", $parameter)

        # Replace
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Identity"
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Replace", [System.Collections.Hashtable], $attributes)
        $parameters.Add("Replace", $parameter)

        # ReplicationFrequencyInMinutes
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Identity"
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("ReplicationFrequencyInMinutes", [System.Int32], $attributes)
        $parameters.Add("ReplicationFrequencyInMinutes", $parameter)

        # ReplicationSchedule
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Identity"
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("ReplicationSchedule", [System.DirectoryServices.ActiveDirectory.ActiveDirectorySchedule], $attributes)
        $parameters.Add("ReplicationSchedule", $parameter)

        # Server
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Server", [System.String], $attributes)
        $parameters.Add("Server", $parameter)

        # SitesIncluded
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Identity"
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("SitesIncluded", [System.Collections.Hashtable], $attributes)
        $parameters.Add("SitesIncluded", $parameter)

        return $parameters
    }

    end {
        throw '{0}: StubNotImplemented' -f $MyInvocation.MyCommand
    }
}

function Set-ADReplicationSiteLinkBridge {
    <#
    .SYNOPSIS
        Set-ADReplicationSiteLinkBridge [-Identity] <ADReplicationSiteLinkBridge> [-WhatIf] [-Confirm] [-Add <hashtable>] [-AuthType <ADAuthType>] [-Clear <string[]>] [-Credential <pscredential>] [-Description <string>] [-PassThru] [-Remove <hashtable>] [-Replace <hashtable>] [-Server <string>] [-SiteLinksIncluded <hashtable>] [<CommonParameters>]
 
Set-ADReplicationSiteLinkBridge [-WhatIf] [-Confirm] [-AuthType <ADAuthType>] [-Credential <pscredential>] [-Instance <ADReplicationSiteLinkBridge>] [-PassThru] [-Server <string>] [<CommonParameters>]
    #>


    [CmdletBinding(SupportsShouldProcess=$true, ConfirmImpact='Medium', HelpUri='http://go.microsoft.com/fwlink/?LinkId=216416')]
    param ( )

    dynamicparam {
        $parameters = New-Object System.Management.Automation.RuntimeDefinedParameterDictionary

        # Add
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Identity"
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Add", [System.Collections.Hashtable], $attributes)
        $parameters.Add("Add", $parameter)

        # AuthType
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("AuthType", [System.Object], $attributes)
        $parameters.Add("AuthType", $parameter)

        # Clear
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Identity"
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Clear", [System.String[]], $attributes)
        $parameters.Add("Clear", $parameter)

        # Credential
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.CredentialAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Credential", [System.Management.Automation.PSCredential], $attributes)
        $parameters.Add("Credential", $parameter)

        # Description
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Identity"
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Description", [System.String], $attributes)
        $parameters.Add("Description", $parameter)

        # Identity
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.Position = 0
        $attribute.ParameterSetName = "Identity"
        $attribute.Mandatory = $True
        $attribute.ValueFromPipeline = $True
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Identity", [System.Object], $attributes)
        $parameters.Add("Identity", $parameter)

        # Instance
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Instance"
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Instance", [System.Object], $attributes)
        $parameters.Add("Instance", $parameter)

        # PassThru
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ValidateNotNullAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("PassThru", [System.Management.Automation.SwitchParameter], $attributes)
        $parameters.Add("PassThru", $parameter)

        # Remove
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Identity"
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Remove", [System.Collections.Hashtable], $attributes)
        $parameters.Add("Remove", $parameter)

        # Replace
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Identity"
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Replace", [System.Collections.Hashtable], $attributes)
        $parameters.Add("Replace", $parameter)

        # Server
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Server", [System.String], $attributes)
        $parameters.Add("Server", $parameter)

        # SiteLinksIncluded
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Identity"
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("SiteLinksIncluded", [System.Collections.Hashtable], $attributes)
        $parameters.Add("SiteLinksIncluded", $parameter)

        return $parameters
    }

    end {
        throw '{0}: StubNotImplemented' -f $MyInvocation.MyCommand
    }
}

function Set-ADReplicationSubnet {
    <#
    .SYNOPSIS
        Set-ADReplicationSubnet [-Identity] <ADReplicationSubnet> [-WhatIf] [-Confirm] [-Add <hashtable>] [-AuthType <ADAuthType>] [-Clear <string[]>] [-Credential <pscredential>] [-Description <string>] [-Location <string>] [-PassThru] [-Remove <hashtable>] [-Replace <hashtable>] [-Server <string>] [-Site <ADReplicationSite>] [<CommonParameters>]
 
Set-ADReplicationSubnet [-WhatIf] [-Confirm] [-AuthType <ADAuthType>] [-Credential <pscredential>] [-Instance <ADReplicationSubnet>] [-PassThru] [-Server <string>] [<CommonParameters>]
    #>


    [CmdletBinding(SupportsShouldProcess=$true, ConfirmImpact='Medium', HelpUri='http://go.microsoft.com/fwlink/?LinkId=216417')]
    param ( )

    dynamicparam {
        $parameters = New-Object System.Management.Automation.RuntimeDefinedParameterDictionary

        # Add
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Identity"
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Add", [System.Collections.Hashtable], $attributes)
        $parameters.Add("Add", $parameter)

        # AuthType
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("AuthType", [System.Object], $attributes)
        $parameters.Add("AuthType", $parameter)

        # Clear
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Identity"
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Clear", [System.String[]], $attributes)
        $parameters.Add("Clear", $parameter)

        # Credential
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.CredentialAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Credential", [System.Management.Automation.PSCredential], $attributes)
        $parameters.Add("Credential", $parameter)

        # Description
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Identity"
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Description", [System.String], $attributes)
        $parameters.Add("Description", $parameter)

        # Identity
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.Position = 0
        $attribute.ParameterSetName = "Identity"
        $attribute.Mandatory = $True
        $attribute.ValueFromPipeline = $True
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Identity", [System.Object], $attributes)
        $parameters.Add("Identity", $parameter)

        # Instance
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Instance"
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Instance", [System.Object], $attributes)
        $parameters.Add("Instance", $parameter)

        # Location
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Identity"
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Location", [System.String], $attributes)
        $parameters.Add("Location", $parameter)

        # PassThru
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("PassThru", [System.Management.Automation.SwitchParameter], $attributes)
        $parameters.Add("PassThru", $parameter)

        # Remove
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Identity"
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Remove", [System.Collections.Hashtable], $attributes)
        $parameters.Add("Remove", $parameter)

        # Replace
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Identity"
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Replace", [System.Collections.Hashtable], $attributes)
        $parameters.Add("Replace", $parameter)

        # Server
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Server", [System.String], $attributes)
        $parameters.Add("Server", $parameter)

        # Site
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Identity"
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Site", [System.Object], $attributes)
        $parameters.Add("Site", $parameter)

        return $parameters
    }

    end {
        throw '{0}: StubNotImplemented' -f $MyInvocation.MyCommand
    }
}

function Set-ADResourceProperty {
    <#
    .SYNOPSIS
        Set-ADResourceProperty [-Identity] <ADResourceProperty> [-WhatIf] [-Confirm] [-Add <hashtable>] [-AppliesToResourceTypes <hashtable>] [-AuthType <ADAuthType>] [-Clear <string[]>] [-Credential <pscredential>] [-Description <string>] [-DisplayName <string>] [-Enabled <bool>] [-PassThru] [-ProtectedFromAccidentalDeletion <bool>] [-Remove <hashtable>] [-Replace <hashtable>] [-Server <string>] [-SharesValuesWith <ADClaimType>] [-SuggestedValues <ADSuggestedValueEntry[]>] [<CommonParameters>]
 
Set-ADResourceProperty -Instance <ADResourceProperty> [-WhatIf] [-Confirm] [-AuthType <ADAuthType>] [-Credential <pscredential>] [-PassThru] [-Server <string>] [<CommonParameters>]
    #>


    [CmdletBinding(SupportsShouldProcess=$true, ConfirmImpact='Medium', HelpUri='http://go.microsoft.com/fwlink/?LinkId=216418')]
    param ( )

    dynamicparam {
        $parameters = New-Object System.Management.Automation.RuntimeDefinedParameterDictionary

        # Add
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Identity"
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Add", [System.Collections.Hashtable], $attributes)
        $parameters.Add("Add", $parameter)

        # AppliesToResourceTypes
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Identity"
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("AppliesToResourceTypes", [System.Collections.Hashtable], $attributes)
        $parameters.Add("AppliesToResourceTypes", $parameter)

        # AuthType
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("AuthType", [System.Object], $attributes)
        $parameters.Add("AuthType", $parameter)

        # Clear
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Identity"
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Clear", [System.String[]], $attributes)
        $parameters.Add("Clear", $parameter)

        # Credential
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.CredentialAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Credential", [System.Management.Automation.PSCredential], $attributes)
        $parameters.Add("Credential", $parameter)

        # Description
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Identity"
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Description", [System.String], $attributes)
        $parameters.Add("Description", $parameter)

        # DisplayName
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Identity"
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("DisplayName", [System.String], $attributes)
        $parameters.Add("DisplayName", $parameter)

        # Enabled
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Identity"
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Enabled", [System.Boolean], $attributes)
        $parameters.Add("Enabled", $parameter)

        # Identity
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.Position = 0
        $attribute.ParameterSetName = "Identity"
        $attribute.Mandatory = $True
        $attribute.ValueFromPipeline = $True
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Identity", [System.Object], $attributes)
        $parameters.Add("Identity", $parameter)

        # Instance
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ValidateNotNullAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Instance"
        $attribute.Mandatory = $True
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Instance", [System.Object], $attributes)
        $parameters.Add("Instance", $parameter)

        # PassThru
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("PassThru", [System.Management.Automation.SwitchParameter], $attributes)
        $parameters.Add("PassThru", $parameter)

        # ProtectedFromAccidentalDeletion
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Identity"
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("ProtectedFromAccidentalDeletion", [System.Nullable`1[System.Boolean]], $attributes)
        $parameters.Add("ProtectedFromAccidentalDeletion", $parameter)

        # Remove
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Identity"
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Remove", [System.Collections.Hashtable], $attributes)
        $parameters.Add("Remove", $parameter)

        # Replace
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Identity"
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Replace", [System.Collections.Hashtable], $attributes)
        $parameters.Add("Replace", $parameter)

        # Server
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Server", [System.String], $attributes)
        $parameters.Add("Server", $parameter)

        # SharesValuesWith
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Identity"
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("SharesValuesWith", [System.Object], $attributes)
        $parameters.Add("SharesValuesWith", $parameter)

        # SuggestedValues
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Identity"
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("SuggestedValues", [System.Object[]], $attributes)
        $parameters.Add("SuggestedValues", $parameter)

        return $parameters
    }

    end {
        throw '{0}: StubNotImplemented' -f $MyInvocation.MyCommand
    }
}

function Set-ADResourcePropertyList {
    <#
    .SYNOPSIS
        Set-ADResourcePropertyList [-Identity] <ADResourcePropertyList> [-WhatIf] [-Confirm] [-Add <hashtable>] [-AuthType <ADAuthType>] [-Clear <string[]>] [-Credential <pscredential>] [-Description <string>] [-PassThru] [-ProtectedFromAccidentalDeletion <bool>] [-Remove <hashtable>] [-Replace <hashtable>] [-Server <string>] [<CommonParameters>]
 
Set-ADResourcePropertyList -Instance <ADResourcePropertyList> [-WhatIf] [-Confirm] [-AuthType <ADAuthType>] [-Credential <pscredential>] [-PassThru] [-Server <string>] [<CommonParameters>]
    #>


    [CmdletBinding(SupportsShouldProcess=$true, ConfirmImpact='Medium', HelpUri='http://go.microsoft.com/fwlink/?LinkId=216419')]
    param ( )

    dynamicparam {
        $parameters = New-Object System.Management.Automation.RuntimeDefinedParameterDictionary

        # Add
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Identity"
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Add", [System.Collections.Hashtable], $attributes)
        $parameters.Add("Add", $parameter)

        # AuthType
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("AuthType", [System.Object], $attributes)
        $parameters.Add("AuthType", $parameter)

        # Clear
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Identity"
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Clear", [System.String[]], $attributes)
        $parameters.Add("Clear", $parameter)

        # Credential
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.CredentialAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Credential", [System.Management.Automation.PSCredential], $attributes)
        $parameters.Add("Credential", $parameter)

        # Description
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Identity"
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Description", [System.String], $attributes)
        $parameters.Add("Description", $parameter)

        # Identity
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ValidateNotNullAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.Position = 0
        $attribute.ParameterSetName = "Identity"
        $attribute.Mandatory = $True
        $attribute.ValueFromPipeline = $True
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Identity", [System.Object], $attributes)
        $parameters.Add("Identity", $parameter)

        # Instance
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ValidateNotNullAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Instance"
        $attribute.Mandatory = $True
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Instance", [System.Object], $attributes)
        $parameters.Add("Instance", $parameter)

        # PassThru
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("PassThru", [System.Management.Automation.SwitchParameter], $attributes)
        $parameters.Add("PassThru", $parameter)

        # ProtectedFromAccidentalDeletion
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Identity"
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("ProtectedFromAccidentalDeletion", [System.Nullable`1[System.Boolean]], $attributes)
        $parameters.Add("ProtectedFromAccidentalDeletion", $parameter)

        # Remove
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Identity"
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Remove", [System.Collections.Hashtable], $attributes)
        $parameters.Add("Remove", $parameter)

        # Replace
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Identity"
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Replace", [System.Collections.Hashtable], $attributes)
        $parameters.Add("Replace", $parameter)

        # Server
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Server", [System.String], $attributes)
        $parameters.Add("Server", $parameter)

        return $parameters
    }

    end {
        throw '{0}: StubNotImplemented' -f $MyInvocation.MyCommand
    }
}

function Set-ADServiceAccount {
    <#
    .SYNOPSIS
        Set-ADServiceAccount [-Identity] <ADServiceAccount> [-WhatIf] [-Confirm] [-AccountExpirationDate <datetime>] [-AccountNotDelegated <bool>] [-Add <hashtable>] [-AuthenticationPolicy <ADAuthenticationPolicy>] [-AuthenticationPolicySilo <ADAuthenticationPolicySilo>] [-AuthType <ADAuthType>] [-Certificates <string[]>] [-Clear <string[]>] [-CompoundIdentitySupported <bool>] [-Credential <pscredential>] [-Description <string>] [-DisplayName <string>] [-DNSHostName <string>] [-Enabled <bool>] [-HomePage <string>] [-KerberosEncryptionType <ADKerberosEncryptionType>] [-Partition <string>] [-PassThru] [-PrincipalsAllowedToDelegateToAccount <ADPrincipal[]>] [-PrincipalsAllowedToRetrieveManagedPassword <ADPrincipal[]>] [-Remove <hashtable>] [-Replace <hashtable>] [-SamAccountName <string>] [-Server <string>] [-ServicePrincipalNames <hashtable>] [-TrustedForDelegation <bool>] [<CommonParameters>]
 
Set-ADServiceAccount -Instance <ADServiceAccount> [-WhatIf] [-Confirm] [-AuthType <ADAuthType>] [-Credential <pscredential>] [-PassThru] [-Server <string>] [<CommonParameters>]
    #>


    [CmdletBinding(SupportsShouldProcess=$true, ConfirmImpact='Medium', HelpUri='http://go.microsoft.com/fwlink/?LinkId=301404')]
    param ( )

    dynamicparam {
        $parameters = New-Object System.Management.Automation.RuntimeDefinedParameterDictionary

        # AccountExpirationDate
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Identity"
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("AccountExpirationDate", [System.Nullable`1[System.DateTime]], $attributes)
        $parameters.Add("AccountExpirationDate", $parameter)

        # AccountNotDelegated
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Identity"
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("AccountNotDelegated", [System.Nullable`1[System.Boolean]], $attributes)
        $parameters.Add("AccountNotDelegated", $parameter)

        # Add
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Identity"
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Add", [System.Collections.Hashtable], $attributes)
        $parameters.Add("Add", $parameter)

        # AuthenticationPolicy
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Identity"
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("AuthenticationPolicy", [System.Object], $attributes)
        $parameters.Add("AuthenticationPolicy", $parameter)

        # AuthenticationPolicySilo
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Identity"
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("AuthenticationPolicySilo", [System.Object], $attributes)
        $parameters.Add("AuthenticationPolicySilo", $parameter)

        # AuthType
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("AuthType", [System.Object], $attributes)
        $parameters.Add("AuthType", $parameter)

        # Certificates
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Identity"
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Certificates", [System.String[]], $attributes)
        $parameters.Add("Certificates", $parameter)

        # Clear
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Identity"
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Clear", [System.String[]], $attributes)
        $parameters.Add("Clear", $parameter)

        # CompoundIdentitySupported
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Identity"
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("CompoundIdentitySupported", [System.Nullable`1[System.Boolean]], $attributes)
        $parameters.Add("CompoundIdentitySupported", $parameter)

        # Credential
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.CredentialAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Credential", [System.Management.Automation.PSCredential], $attributes)
        $parameters.Add("Credential", $parameter)

        # Description
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Identity"
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Description", [System.String], $attributes)
        $parameters.Add("Description", $parameter)

        # DisplayName
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Identity"
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("DisplayName", [System.String], $attributes)
        $parameters.Add("DisplayName", $parameter)

        # DNSHostName
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Identity"
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("DNSHostName", [System.String], $attributes)
        $parameters.Add("DNSHostName", $parameter)

        # Enabled
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Identity"
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Enabled", [System.Nullable`1[System.Boolean]], $attributes)
        $parameters.Add("Enabled", $parameter)

        # HomePage
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Identity"
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("HomePage", [System.String], $attributes)
        $parameters.Add("HomePage", $parameter)

        # Identity
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.Position = 0
        $attribute.ParameterSetName = "Identity"
        $attribute.Mandatory = $True
        $attribute.ValueFromPipeline = $True
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Identity", [System.Object], $attributes)
        $parameters.Add("Identity", $parameter)

        # Instance
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ValidateNotNullAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Instance"
        $attribute.Mandatory = $True
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Instance", [System.Object], $attributes)
        $parameters.Add("Instance", $parameter)

        # KerberosEncryptionType
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Identity"
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("KerberosEncryptionType", [System.Object], $attributes)
        $parameters.Add("KerberosEncryptionType", $parameter)

        # Partition
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Identity"
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Partition", [System.String], $attributes)
        $parameters.Add("Partition", $parameter)

        # PassThru
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("PassThru", [System.Management.Automation.SwitchParameter], $attributes)
        $parameters.Add("PassThru", $parameter)

        # PrincipalsAllowedToDelegateToAccount
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Identity"
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("PrincipalsAllowedToDelegateToAccount", [System.Object[]], $attributes)
        $parameters.Add("PrincipalsAllowedToDelegateToAccount", $parameter)

        # PrincipalsAllowedToRetrieveManagedPassword
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Identity"
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("PrincipalsAllowedToRetrieveManagedPassword", [System.Object[]], $attributes)
        $parameters.Add("PrincipalsAllowedToRetrieveManagedPassword", $parameter)

        # Remove
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Identity"
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Remove", [System.Collections.Hashtable], $attributes)
        $parameters.Add("Remove", $parameter)

        # Replace
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Identity"
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Replace", [System.Collections.Hashtable], $attributes)
        $parameters.Add("Replace", $parameter)

        # SamAccountName
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Identity"
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("SamAccountName", [System.String], $attributes)
        $parameters.Add("SamAccountName", $parameter)

        # Server
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Server", [System.String], $attributes)
        $parameters.Add("Server", $parameter)

        # ServicePrincipalNames
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Identity"
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("ServicePrincipalNames", [System.Collections.Hashtable], $attributes)
        $parameters.Add("ServicePrincipalNames", $parameter)

        # TrustedForDelegation
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Identity"
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("TrustedForDelegation", [System.Nullable`1[System.Boolean]], $attributes)
        $parameters.Add("TrustedForDelegation", $parameter)

        return $parameters
    }

    end {
        throw '{0}: StubNotImplemented' -f $MyInvocation.MyCommand
    }
}

function Set-ADUser {
    <#
    .SYNOPSIS
        Set-ADUser [-Identity] <ADUser> [-WhatIf] [-Confirm] [-AccountExpirationDate <datetime>] [-AccountNotDelegated <bool>] [-Add <hashtable>] [-AllowReversiblePasswordEncryption <bool>] [-AuthenticationPolicy <ADAuthenticationPolicy>] [-AuthenticationPolicySilo <ADAuthenticationPolicySilo>] [-AuthType <ADAuthType>] [-CannotChangePassword <bool>] [-Certificates <hashtable>] [-ChangePasswordAtLogon <bool>] [-City <string>] [-Clear <string[]>] [-Company <string>] [-CompoundIdentitySupported <bool>] [-Country <string>] [-Credential <pscredential>] [-Department <string>] [-Description <string>] [-DisplayName <string>] [-Division <string>] [-EmailAddress <string>] [-EmployeeID <string>] [-EmployeeNumber <string>] [-Enabled <bool>] [-Fax <string>] [-GivenName <string>] [-HomeDirectory <string>] [-HomeDrive <string>] [-HomePage <string>] [-HomePhone <string>] [-Initials <string>] [-KerberosEncryptionType <ADKerberosEncryptionType>] [-LogonWorkstations <string>] [-Manager <ADUser>] [-MobilePhone <string>] [-Office <string>] [-OfficePhone <string>] [-Organization <string>] [-OtherName <string>] [-Partition <string>] [-PassThru] [-PasswordNeverExpires <bool>] [-PasswordNotRequired <bool>] [-POBox <string>] [-PostalCode <string>] [-PrincipalsAllowedToDelegateToAccount <ADPrincipal[]>] [-ProfilePath <string>] [-Remove <hashtable>] [-Replace <hashtable>] [-SamAccountName <string>] [-ScriptPath <string>] [-Server <string>] [-ServicePrincipalNames <hashtable>] [-SmartcardLogonRequired <bool>] [-State <string>] [-StreetAddress <string>] [-Surname <string>] [-Title <string>] [-TrustedForDelegation <bool>] [-UserPrincipalName <string>] [<CommonParameters>]
 
Set-ADUser -Instance <ADUser> [-WhatIf] [-Confirm] [-AuthType <ADAuthType>] [-Credential <pscredential>] [-PassThru] [-SamAccountName <string>] [-Server <string>] [<CommonParameters>]
    #>


    [CmdletBinding(SupportsShouldProcess=$true, ConfirmImpact='Medium', HelpUri='http://go.microsoft.com/fwlink/?LinkId=301403')]
    param ( )

    dynamicparam {
        $parameters = New-Object System.Management.Automation.RuntimeDefinedParameterDictionary

        # AccountExpirationDate
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Identity"
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("AccountExpirationDate", [System.Nullable`1[System.DateTime]], $attributes)
        $parameters.Add("AccountExpirationDate", $parameter)

        # AccountNotDelegated
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Identity"
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("AccountNotDelegated", [System.Nullable`1[System.Boolean]], $attributes)
        $parameters.Add("AccountNotDelegated", $parameter)

        # Add
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Identity"
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Add", [System.Collections.Hashtable], $attributes)
        $parameters.Add("Add", $parameter)

        # AllowReversiblePasswordEncryption
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Identity"
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("AllowReversiblePasswordEncryption", [System.Nullable`1[System.Boolean]], $attributes)
        $parameters.Add("AllowReversiblePasswordEncryption", $parameter)

        # AuthenticationPolicy
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Identity"
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("AuthenticationPolicy", [System.Object], $attributes)
        $parameters.Add("AuthenticationPolicy", $parameter)

        # AuthenticationPolicySilo
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Identity"
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("AuthenticationPolicySilo", [System.Object], $attributes)
        $parameters.Add("AuthenticationPolicySilo", $parameter)

        # AuthType
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("AuthType", [System.Object], $attributes)
        $parameters.Add("AuthType", $parameter)

        # CannotChangePassword
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Identity"
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("CannotChangePassword", [System.Nullable`1[System.Boolean]], $attributes)
        $parameters.Add("CannotChangePassword", $parameter)

        # Certificates
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Identity"
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Certificates", [System.Collections.Hashtable], $attributes)
        $parameters.Add("Certificates", $parameter)

        # ChangePasswordAtLogon
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Identity"
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("ChangePasswordAtLogon", [System.Nullable`1[System.Boolean]], $attributes)
        $parameters.Add("ChangePasswordAtLogon", $parameter)

        # City
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Identity"
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("City", [System.String], $attributes)
        $parameters.Add("City", $parameter)

        # Clear
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Identity"
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Clear", [System.String[]], $attributes)
        $parameters.Add("Clear", $parameter)

        # Company
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Identity"
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Company", [System.String], $attributes)
        $parameters.Add("Company", $parameter)

        # CompoundIdentitySupported
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ValidateNotNullAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Identity"
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("CompoundIdentitySupported", [System.Nullable`1[System.Boolean]], $attributes)
        $parameters.Add("CompoundIdentitySupported", $parameter)

        # Country
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Identity"
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Country", [System.String], $attributes)
        $parameters.Add("Country", $parameter)

        # Credential
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.CredentialAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Credential", [System.Management.Automation.PSCredential], $attributes)
        $parameters.Add("Credential", $parameter)

        # Department
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Identity"
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Department", [System.String], $attributes)
        $parameters.Add("Department", $parameter)

        # Description
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Identity"
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Description", [System.String], $attributes)
        $parameters.Add("Description", $parameter)

        # DisplayName
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Identity"
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("DisplayName", [System.String], $attributes)
        $parameters.Add("DisplayName", $parameter)

        # Division
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Identity"
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Division", [System.String], $attributes)
        $parameters.Add("Division", $parameter)

        # EmailAddress
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Identity"
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("EmailAddress", [System.String], $attributes)
        $parameters.Add("EmailAddress", $parameter)

        # EmployeeID
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Identity"
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("EmployeeID", [System.String], $attributes)
        $parameters.Add("EmployeeID", $parameter)

        # EmployeeNumber
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Identity"
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("EmployeeNumber", [System.String], $attributes)
        $parameters.Add("EmployeeNumber", $parameter)

        # Enabled
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Identity"
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Enabled", [System.Nullable`1[System.Boolean]], $attributes)
        $parameters.Add("Enabled", $parameter)

        # Fax
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Identity"
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Fax", [System.String], $attributes)
        $parameters.Add("Fax", $parameter)

        # GivenName
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Identity"
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("GivenName", [System.String], $attributes)
        $parameters.Add("GivenName", $parameter)

        # HomeDirectory
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Identity"
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("HomeDirectory", [System.String], $attributes)
        $parameters.Add("HomeDirectory", $parameter)

        # HomeDrive
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Identity"
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("HomeDrive", [System.String], $attributes)
        $parameters.Add("HomeDrive", $parameter)

        # HomePage
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Identity"
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("HomePage", [System.String], $attributes)
        $parameters.Add("HomePage", $parameter)

        # HomePhone
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Identity"
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("HomePhone", [System.String], $attributes)
        $parameters.Add("HomePhone", $parameter)

        # Identity
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.Position = 0
        $attribute.ParameterSetName = "Identity"
        $attribute.Mandatory = $True
        $attribute.ValueFromPipeline = $True
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Identity", [System.Object], $attributes)
        $parameters.Add("Identity", $parameter)

        # Initials
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Identity"
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Initials", [System.String], $attributes)
        $parameters.Add("Initials", $parameter)

        # Instance
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ValidateNotNullAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Instance"
        $attribute.Mandatory = $True
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Instance", [System.Object], $attributes)
        $parameters.Add("Instance", $parameter)

        # KerberosEncryptionType
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Identity"
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("KerberosEncryptionType", [System.Object], $attributes)
        $parameters.Add("KerberosEncryptionType", $parameter)

        # LogonWorkstations
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Identity"
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("LogonWorkstations", [System.String], $attributes)
        $parameters.Add("LogonWorkstations", $parameter)

        # Manager
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Identity"
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Manager", [System.Object], $attributes)
        $parameters.Add("Manager", $parameter)

        # MobilePhone
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Identity"
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("MobilePhone", [System.String], $attributes)
        $parameters.Add("MobilePhone", $parameter)

        # Office
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Identity"
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Office", [System.String], $attributes)
        $parameters.Add("Office", $parameter)

        # OfficePhone
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Identity"
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("OfficePhone", [System.String], $attributes)
        $parameters.Add("OfficePhone", $parameter)

        # Organization
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Identity"
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Organization", [System.String], $attributes)
        $parameters.Add("Organization", $parameter)

        # OtherName
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Identity"
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("OtherName", [System.String], $attributes)
        $parameters.Add("OtherName", $parameter)

        # Partition
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Identity"
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Partition", [System.String], $attributes)
        $parameters.Add("Partition", $parameter)

        # PassThru
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ValidateNotNullAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("PassThru", [System.Management.Automation.SwitchParameter], $attributes)
        $parameters.Add("PassThru", $parameter)

        # PasswordNeverExpires
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Identity"
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("PasswordNeverExpires", [System.Nullable`1[System.Boolean]], $attributes)
        $parameters.Add("PasswordNeverExpires", $parameter)

        # PasswordNotRequired
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Identity"
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("PasswordNotRequired", [System.Nullable`1[System.Boolean]], $attributes)
        $parameters.Add("PasswordNotRequired", $parameter)

        # POBox
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Identity"
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("POBox", [System.String], $attributes)
        $parameters.Add("POBox", $parameter)

        # PostalCode
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Identity"
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("PostalCode", [System.String], $attributes)
        $parameters.Add("PostalCode", $parameter)

        # PrincipalsAllowedToDelegateToAccount
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Identity"
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("PrincipalsAllowedToDelegateToAccount", [System.Object[]], $attributes)
        $parameters.Add("PrincipalsAllowedToDelegateToAccount", $parameter)

        # ProfilePath
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Identity"
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("ProfilePath", [System.String], $attributes)
        $parameters.Add("ProfilePath", $parameter)

        # Remove
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Identity"
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Remove", [System.Collections.Hashtable], $attributes)
        $parameters.Add("Remove", $parameter)

        # Replace
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Identity"
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Replace", [System.Collections.Hashtable], $attributes)
        $parameters.Add("Replace", $parameter)

        # SamAccountName
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Identity"
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Instance"
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("SamAccountName", [System.String], $attributes)
        $parameters.Add("SamAccountName", $parameter)

        # ScriptPath
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Identity"
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("ScriptPath", [System.String], $attributes)
        $parameters.Add("ScriptPath", $parameter)

        # Server
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Server", [System.String], $attributes)
        $parameters.Add("Server", $parameter)

        # ServicePrincipalNames
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Identity"
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("ServicePrincipalNames", [System.Collections.Hashtable], $attributes)
        $parameters.Add("ServicePrincipalNames", $parameter)

        # SmartcardLogonRequired
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Identity"
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("SmartcardLogonRequired", [System.Nullable`1[System.Boolean]], $attributes)
        $parameters.Add("SmartcardLogonRequired", $parameter)

        # State
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Identity"
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("State", [System.String], $attributes)
        $parameters.Add("State", $parameter)

        # StreetAddress
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Identity"
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("StreetAddress", [System.String], $attributes)
        $parameters.Add("StreetAddress", $parameter)

        # Surname
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Identity"
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Surname", [System.String], $attributes)
        $parameters.Add("Surname", $parameter)

        # Title
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Identity"
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Title", [System.String], $attributes)
        $parameters.Add("Title", $parameter)

        # TrustedForDelegation
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Identity"
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("TrustedForDelegation", [System.Nullable`1[System.Boolean]], $attributes)
        $parameters.Add("TrustedForDelegation", $parameter)

        # UserPrincipalName
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Identity"
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("UserPrincipalName", [System.String], $attributes)
        $parameters.Add("UserPrincipalName", $parameter)

        return $parameters
    }

    end {
        throw '{0}: StubNotImplemented' -f $MyInvocation.MyCommand
    }
}

function Show-ADAuthenticationPolicyExpression {
    <#
    .SYNOPSIS
        Show-ADAuthenticationPolicyExpression [[-SDDL] <string>] [[-Title] <string>] -AllowedToAuthenticateFrom [-WhatIf] [-Confirm] [-AuthType <ADAuthType>] [-Credential <pscredential>] [-Server <string>] [<CommonParameters>]
 
Show-ADAuthenticationPolicyExpression [[-SDDL] <string>] [[-Title] <string>] -AllowedToAuthenticateTo [-WhatIf] [-Confirm] [-AuthType <ADAuthType>] [-Credential <pscredential>] [-Server <string>] [<CommonParameters>]
    #>


    [CmdletBinding(SupportsShouldProcess=$true, ConfirmImpact='Medium', HelpUri='http://go.microsoft.com/fwlink/?LinkId=301418')]
    param ( )

    dynamicparam {
        $parameters = New-Object System.Management.Automation.RuntimeDefinedParameterDictionary

        # AllowedToAuthenticateFrom
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "AllowedToAuthenticateFrom"
        $attribute.Mandatory = $True
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("AllowedToAuthenticateFrom", [System.Management.Automation.SwitchParameter], $attributes)
        $parameters.Add("AllowedToAuthenticateFrom", $parameter)

        # AllowedToAuthenticateTo
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "AllowedToAuthenticateTo"
        $attribute.Mandatory = $True
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("AllowedToAuthenticateTo", [System.Management.Automation.SwitchParameter], $attributes)
        $parameters.Add("AllowedToAuthenticateTo", $parameter)

        # AuthType
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("AuthType", [System.Object], $attributes)
        $parameters.Add("AuthType", $parameter)

        # Credential
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.CredentialAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Credential", [System.Management.Automation.PSCredential], $attributes)
        $parameters.Add("Credential", $parameter)

        # SDDL
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.Position = 0
        $attribute.ValueFromPipeline = $True
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("SDDL", [System.String], $attributes)
        $parameters.Add("SDDL", $parameter)

        # Server
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Server", [System.String], $attributes)
        $parameters.Add("Server", $parameter)

        # Title
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.Position = 1
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Title", [System.String], $attributes)
        $parameters.Add("Title", $parameter)

        return $parameters
    }

    end {
        throw '{0}: StubNotImplemented' -f $MyInvocation.MyCommand
    }
}

function Sync-ADObject {
    <#
    .SYNOPSIS
        Sync-ADObject [-Object] <ADObject> [[-Source] <string>] [-Destination] <string> [-AuthType <ADAuthType>] [-Credential <pscredential>] [-PassThru] [-PasswordOnly] [<CommonParameters>]
    #>


    [CmdletBinding(HelpUri='http://go.microsoft.com/fwlink/?LinkId=216426')]
    param ( )

    dynamicparam {
        $parameters = New-Object System.Management.Automation.RuntimeDefinedParameterDictionary

        # AuthType
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("AuthType", [System.Object], $attributes)
        $parameters.Add("AuthType", $parameter)

        # Credential
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.CredentialAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Credential", [System.Management.Automation.PSCredential], $attributes)
        $parameters.Add("Credential", $parameter)

        # Destination
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.Position = 2
        $attribute.ParameterSetName = "Object"
        $attribute.Mandatory = $True
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.AliasAttribute('Server', 'HostName', 'IPv4Address')
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Destination", [System.String], $attributes)
        $parameters.Add("Destination", $parameter)

        # Object
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ValidateNotNullAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.Position = 0
        $attribute.ParameterSetName = "Object"
        $attribute.Mandatory = $True
        $attribute.ValueFromPipeline = $True
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Object", [System.Object], $attributes)
        $parameters.Add("Object", $parameter)

        # PassThru
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ValidateNotNullAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("PassThru", [System.Management.Automation.SwitchParameter], $attributes)
        $parameters.Add("PassThru", $parameter)

        # PasswordOnly
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ValidateNotNullAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.ParameterSetName = "Object"
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("PasswordOnly", [System.Management.Automation.SwitchParameter], $attributes)
        $parameters.Add("PasswordOnly", $parameter)

        # Source
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.Position = 1
        $attribute.ParameterSetName = "Object"
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Source", [System.String], $attributes)
        $parameters.Add("Source", $parameter)

        return $parameters
    }

    end {
        throw '{0}: StubNotImplemented' -f $MyInvocation.MyCommand
    }
}

function Test-ADServiceAccount {
    <#
    .SYNOPSIS
        Test-ADServiceAccount [-Identity] <ADServiceAccount> [-AuthType <ADAuthType>] [<CommonParameters>]
    #>


    [CmdletBinding(HelpUri='http://go.microsoft.com/fwlink/?LinkId=216559')]
    param ( )

    dynamicparam {
        $parameters = New-Object System.Management.Automation.RuntimeDefinedParameterDictionary

        # AuthType
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("AuthType", [System.Object], $attributes)
        $parameters.Add("AuthType", $parameter)

        # Identity
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ValidateNotNullAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.Position = 0
        $attribute.ParameterSetName = "Identity"
        $attribute.Mandatory = $True
        $attribute.ValueFromPipeline = $True
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Identity", [System.Object], $attributes)
        $parameters.Add("Identity", $parameter)

        return $parameters
    }

    end {
        throw '{0}: StubNotImplemented' -f $MyInvocation.MyCommand
    }
}

function Uninstall-ADServiceAccount {
    <#
    .SYNOPSIS
        Uninstall-ADServiceAccount [-Identity] <ADServiceAccount> [-WhatIf] [-Confirm] [-AuthType <ADAuthType>] [-ForceRemoveLocal] [<CommonParameters>]
    #>


    [CmdletBinding(SupportsShouldProcess=$true, ConfirmImpact='Medium', HelpUri='http://go.microsoft.com/fwlink/?LinkId=219359')]
    param ( )

    dynamicparam {
        $parameters = New-Object System.Management.Automation.RuntimeDefinedParameterDictionary

        # AuthType
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("AuthType", [System.Object], $attributes)
        $parameters.Add("AuthType", $parameter)

        # ForceRemoveLocal
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ValidateNotNullAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("ForceRemoveLocal", [System.Management.Automation.SwitchParameter], $attributes)
        $parameters.Add("ForceRemoveLocal", $parameter)

        # Identity
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.Position = 0
        $attribute.Mandatory = $True
        $attribute.ValueFromPipeline = $True
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Identity", [System.Object], $attributes)
        $parameters.Add("Identity", $parameter)

        return $parameters
    }

    end {
        throw '{0}: StubNotImplemented' -f $MyInvocation.MyCommand
    }
}

function Unlock-ADAccount {
    <#
    .SYNOPSIS
        Unlock-ADAccount [-Identity] <ADAccount> [-WhatIf] [-Confirm] [-AuthType <ADAuthType>] [-Credential <pscredential>] [-Partition <string>] [-PassThru] [-Server <string>] [<CommonParameters>]
    #>


    [CmdletBinding(SupportsShouldProcess=$true, ConfirmImpact='Medium', HelpUri='http://go.microsoft.com/fwlink/?LinkId=219360')]
    param ( )

    dynamicparam {
        $parameters = New-Object System.Management.Automation.RuntimeDefinedParameterDictionary

        # AuthType
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("AuthType", [System.Object], $attributes)
        $parameters.Add("AuthType", $parameter)

        # Credential
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.CredentialAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Credential", [System.Management.Automation.PSCredential], $attributes)
        $parameters.Add("Credential", $parameter)

        # Identity
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ValidateNotNullAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attribute.Position = 0
        $attribute.Mandatory = $True
        $attribute.ValueFromPipeline = $True
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Identity", [System.Object], $attributes)
        $parameters.Add("Identity", $parameter)

        # Partition
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Partition", [System.String], $attributes)
        $parameters.Add("Partition", $parameter)

        # PassThru
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ValidateNotNullAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("PassThru", [System.Management.Automation.SwitchParameter], $attributes)
        $parameters.Add("PassThru", $parameter)

        # Server
        $attributes = New-Object System.Collections.Generic.List[Attribute]

        $attribute = New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
        $attributes.Add($attribute)

        $attribute = New-Object System.Management.Automation.ParameterAttribute
        $attributes.Add($attribute)

        $parameter = New-Object System.Management.Automation.RuntimeDefinedParameter("Server", [System.String], $attributes)
        $parameters.Add("Server", $parameter)

        return $parameters
    }

    end {
        throw '{0}: StubNotImplemented' -f $MyInvocation.MyCommand
    }
}