/// <summary> /// Process groups requested by -Name /// </summary> /// <remarks> /// All arguments to -Name will be treated as names, /// even if a name looks like a SID. /// Groups may be specified using wildcards. /// </remarks> private void ProcessNames() { if (Name != null) { foreach (var name in Name) { try { if (WildcardPattern.ContainsWildcardCharacters(name)) { var pattern = new WildcardPattern(name, WildcardOptions.Compiled | WildcardOptions.IgnoreCase); foreach (var group in sam.GetMatchingLocalGroups(n => pattern.IsMatch(n))) { WriteObject(group); } } else { WriteObject(sam.GetLocalGroup(name)); } } catch (Exception ex) { WriteError(ex.MakeErrorRecord()); } } } }