protected override void ProcessRecord() { switch (ParameterSetName) { case "Current": WriteObject(Context.User); break; case "Filter": var filter = Filter; if (filter.Is("*") || filter.Is("%")) { int total; var users = new PagingIterator <MembershipUser>( pageIndex => Membership.GetAllUsers(pageIndex, ResultPageSize, out total)); WriteUsers(users); } else if (filter.Contains("?") || filter.Contains("*")) { var pattern = filter.Replace("*", "%").Replace("?", "%"); int total; if (filter.Contains("@")) { var users = new PagingIterator <MembershipUser>( pageIndex => Membership.FindUsersByEmail(pattern, pageIndex, ResultPageSize, out total)); WriteUsers(users); } else { var users = new PagingIterator <MembershipUser>( pageIndex => Membership.FindUsersByName(pattern, pageIndex, ResultPageSize, out total)); WriteUsers(users); } } break; default: if (this.CanFindAccount(Identity, AccountType.User)) { WriteObject(User.FromName(Identity.Name, Authenticated)); } break; } }
private void WriteUsers(PagingIterator <MembershipUser> users) { if (IsParameterSpecified("ResultPageSize")) { foreach (var user in users) { WriteObject(User.FromName(user.UserName, Authenticated)); } } else { var accumulatedUsers = new Enumerable <User>(() => users.ToList(), o => User.FromName(((MembershipUser)o).UserName, Authenticated)); WriteObject(accumulatedUsers, true); } }