/// <summary> /// ProcessRecord method. /// </summary> protected override void ProcessRecord() { TemplateGroupInfo group = null; if (Group != null) { group = Group; group.Bind(this); var templateNames = group.Templates.Select(t => t.Name); var safeTemplateNames = templateNames as string[] ?? templateNames.ToArray(); var name = Name ?? safeTemplateNames.FirstOrDefault(); if (!safeTemplateNames.Contains(name)) { var nameString = string.Join( CultureInfo.CurrentCulture.TextInfo.ListSeparator, safeTemplateNames); var msg = string.Format( CultureInfo.CurrentCulture, Strings.TemplateNotFound, name, nameString); var error = new ErrorRecord( new InvalidOperationException(msg), nameof(Strings.TemplateNotFound), ErrorCategory.ObjectNotFound, name); ThrowTerminatingError(error); } _currentTemplate = group.Templates .FirstOrDefault(t => t.Name == name); } if (Definition != null) { group = TemplateGroupInfo.CreateFromTemplateDefinition(this, Definition); _currentTemplate = group.Templates.FirstOrDefault(); } Debug.Assert(_currentTemplate != null, "_currentTemplate != null"); if (Parameters != null) { if (Parameters.BaseObject is IDictionary asDictionary) { foreach (DictionaryEntry keyValuePair in asDictionary) { AddTemplateArgument(keyValuePair.Key as string, keyValuePair.Value); } } else { ProcessObjectAsArguments(); } } var result = _currentTemplate.Instance.Render(CultureInfo.CurrentCulture); if (result != null) { WriteObject(result); } _currentTemplate.ResetInstance(); group.Unbind(); }