NamingConversion/Source/NamingConversion/Convert-ActiveDirectoryNaming.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Management.Automation;
 
namespace CPolydorou.ActiveDirectory.NamingConversion
{
    [Cmdlet("Convert","ActiveDirectoryNaming")]
    public class Convert_ActiveDirectoryNaming : PSCmdlet
    {
        protected String[] DNs;
        protected String[] CNs;
        protected String[] NTs;
        protected String[] UPNs;
        [Parameter(
                Mandatory = true,
                ValueFromPipeline = true,
                ValueFromPipelineByPropertyName = true,
                ParameterSetName = "DN"
        )]
        public String[] DN
        {
            get { return this.DNs; }
            set { this.DNs = value; }
        }
 
        [Parameter(
                Mandatory = true,
                ValueFromPipeline = true,
                ValueFromPipelineByPropertyName = true,
                ParameterSetName = "CN"
        )]
        public String[] CN
        {
            get { return this.CNs; }
            set { this.CNs = value; }
        }
 
        [Parameter(
                Mandatory = true,
                ValueFromPipeline = true,
                ValueFromPipelineByPropertyName = true,
                ParameterSetName = "NT"
        )]
        public String[] NT
        {
            get { return this.NTs; }
            set { this.NTs = value; }
        }
 
        [Parameter(
                Mandatory = true,
                ValueFromPipeline = true,
                ValueFromPipelineByPropertyName = true,
                ParameterSetName = "UPN"
        )]
        public String[] UPN
        {
            get { return this.UPNs; }
            set { this.UPNs = value; }
        }
 
        protected override void ProcessRecord()
        {
            // Convert DNs
            if(DNs != null)
            {
                foreach(String d in DNs)
                {
                    // Create the custom object
                    NamingObject obj = new NamingObject();
                    obj.DN = d;
                    obj.CN = Conversion.DNtoCN(d);
                    obj.NT = Conversion.DNtoNT(d);
                    obj.UPN = Conversion.DNtoUPN(d);
 
                    WriteObject(obj);
                }
            }
 
            // Convert CNs
            if(CNs != null)
            {
                foreach(String c in CNs)
                {
                    NamingObject obj = new NamingObject();
                    obj.CN = c;
                    obj.DN = Conversion.CNtoDN(c);
                    obj.NT = Conversion.CNtoNT(c);
                    obj.UPN = Conversion.CNtoUPN(c);
 
                    WriteObject(obj);
                }
            }
 
            // Convert NTs
            if (NTs != null)
            {
                foreach (String n in NTs)
                {
                    NamingObject obj = new NamingObject();
                    obj.NT = n;
                    obj.DN = Conversion.NTtoDN(n);
                    obj.CN = Conversion.NTtoCN(n);
                    obj.UPN = Conversion.NTtoUPN(n);
 
                    WriteObject(obj);
                }
            }
 
            // Convert UPNs
            if (UPNs != null)
            {
                foreach (String u in UPNs)
                {
                    NamingObject obj = new NamingObject();
                    obj.NT = Conversion.UPNtoNT(u);
                    obj.DN = Conversion.UPNtoDN(u);
                    obj.CN = Conversion.UPNtoCN(u);
                    obj.UPN = u;
 
                    WriteObject(obj);
                }
            }
             
        }
    }
}