private static void ProcessCommand(MyArguments arguments) { Check.DoRequireArgumentNotNull(arguments, nameof(arguments)); if (arguments.IsOperationResetAdmin) { CheckCommandLineArgument(!string.IsNullOrWhiteSpace(arguments.IdentityDatabasePath), "Identity database path is required."); CheckCommandLineArgument(!string.IsNullOrWhiteSpace(arguments.NewPassword), "New password is required."); var database = new LiteDatabase($"Filename={arguments.IdentityDatabasePath}; Password={arguments.DatabasePassword};"); var contextFactory = new IdentityDatabaseContextFactory(database); var identityConfig = new IdentityConfiguration(contextFactory); identityConfig.EnsureDefaultUsersAndRolesAsync().GetAwaiter().GetResult(); Console.WriteLine("Resetting admin password in {0} to {1}", arguments.IdentityDatabasePath, arguments.NewPassword); identityConfig.ResetPasswordAsync(IdentityConfiguration.AdminUserName, arguments.NewPassword) .GetAwaiter() .GetResult(); var userManager = ApplicationUserManager.CreateOutOfContext(contextFactory); var adminUser = userManager.FindByNameAsync(IdentityConfiguration.AdminUserName) .GetAwaiter().GetResult(); Console.WriteLine("Admin user locked: {0}; end date: {1}, has password: {2}", adminUser?.LockoutEnabled, adminUser?.LockoutEndDateUtc, adminUser?.HasPassword()); if (adminUser != null) { if (adminUser.LockoutEnabled) { Console.WriteLine("Unlocking admin"); userManager.ResetAccessFailedCountAsync(adminUser.Id); userManager.SetLockoutEnabledAsync(adminUser.Id, false); } } } else { throw new MyArgumentException($"Operation not recognized: '{arguments.Operation}'; nothing to do."); } }