protected void SetDelimiterAndElements(FnJoinDelimiter delimiter, object[] elements)
        {
            switch (delimiter)
            {
            case FnJoinDelimiter.Space:
                this.Delimiter = " ";
                break;

            case FnJoinDelimiter.Comma:
                this.Delimiter = ",";
                break;

            case FnJoinDelimiter.None:
                this.Delimiter = string.Empty;
                break;

            case FnJoinDelimiter.Period:
                this.Delimiter = ".";
                break;

            default:
                throw new ArgumentException(nameof(delimiter));
            }
            this.Elements = elements;
        }
        public FnJoinPowershellCommand(FnJoinDelimiter delimiter, params object[] elements) : base(delimiter, elements)
        {
            var  temp         = new List <object>();
            var  commandLine  = "powershell.exe ";
            bool remoteSigned = false;

            elements.ToList().ForEach(e => remoteSigned = remoteSigned || e.ToString().ToLowerInvariant().Contains(".ps1"));
            if (remoteSigned)
            {
                commandLine += "-ExecutionPolicy RemoteSigned ";
            }
            temp.Add(commandLine);
            temp.AddRange(this.Elements);
            this.Elements = temp.ToArray();
        }
 public FnJoin(FnJoinDelimiter delimiter, params object[] elements)
 {
     SetDelimiterAndElements(delimiter, elements);
 }