/// <summary>
        /// ProcessRecord method.
        /// </summary>
        protected override void ProcessRecord()
        {
            try
            {
                if (CheckShouldProcess(Name))
                {
                    var user = new LocalUser
                    {
                        Name                  = Name,
                        Description           = Description,
                        Enabled               = true,
                        FullName              = FullName,
                        UserMayChangePassword = true
                    };

                    foreach (var paramName in parameterNames)
                    {
                        if (this.HasParameter(paramName))
                        {
                            switch (paramName)
                            {
                            case "AccountExpires":
                                user.AccountExpires = AccountExpires;
                                break;

                            case "Disabled":
                                user.Enabled = !Disabled;
                                break;

                            case "UserMayNotChangePassword":
                                user.UserMayChangePassword = !UserMayNotChangePassword;
                                break;
                            }
                        }
                    }

                    if (AccountNeverExpires.IsPresent)
                    {
                        user.AccountExpires = null;
                    }

                    // Password will be null if NoPassword was given
                    user = sam.CreateLocalUser(user, Password, PasswordNeverExpires.IsPresent);

                    WriteObject(user);
                }
            }
            catch (Exception ex)
            {
                WriteError(ex.MakeErrorRecord());
            }
        }