diff --git a/src/main/java/com/googlesource/gerrit/plugins/adminconsole/ListUsersCommand.java b/src/main/java/com/googlesource/gerrit/plugins/adminconsole/ListUsersCommand.java
index 12c3b97..8ead5ad 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/adminconsole/ListUsersCommand.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/adminconsole/ListUsersCommand.java
@@ -20,28 +20,52 @@
 import com.google.gerrit.extensions.annotations.RequiresCapability;
 import com.google.gerrit.reviewdb.client.Account;
 import com.google.gerrit.reviewdb.server.ReviewDb;
+import com.google.gerrit.server.account.AccountResolver;
 import com.google.gerrit.sshd.CommandMetaData;
 import com.google.gerrit.sshd.SshCommand;
+import com.google.gwtorm.server.OrmException;
 import com.google.gwtorm.server.ResultSet;
 import com.google.inject.Inject;
 
+import org.kohsuke.args4j.Option;
+
 @RequiresCapability(value=GlobalCapability.ADMINISTRATE_SERVER, scope=CapabilityScope.CORE)
 @CommandMetaData(name = "ls-users", description = "List users")
 public final class ListUsersCommand extends SshCommand {
   private ReviewDb db;
+  private final AccountResolver accountResolver;
+
+  @Option(name = "--active-only", usage = "show only active users")
+  private boolean activeOnly = false;
+
+  @Option(name = "--inactive-only", usage = "show only inactive users")
+  private boolean inactiveOnly = false;
 
   @Inject
-  ListUsersCommand(ReviewDb db) {
+  ListUsersCommand(ReviewDb db,
+      AccountResolver accountResolver) {
     this.db = db;
+    this.accountResolver = accountResolver;
   }
 
   @Override
   protected void run() throws UnloggedFailure, Failure, Exception {
     ResultSet<Account> accounts = db.accounts().all();
     for (Account account : accounts) {
+      if (activeOnly && !account.isActive()) {
+        continue;
+      }
+      if (inactiveOnly && account.isActive()) {
+        continue;
+      }
+      String username = getUsername(account);
       String out = new StringBuilder()
         .append(account.getId().toString())
         .append(" |")
+        .append(Strings.isNullOrEmpty(username)
+            ? ""
+            : " " + username)
+        .append(" |")
         .append(Strings.isNullOrEmpty(account.getFullName())
             ? ""
             : " " + account.getFullName())
@@ -49,8 +73,19 @@
         .append(Strings.isNullOrEmpty(account.getPreferredEmail())
             ? ""
             : " " + account.getPreferredEmail())
+        .append(" |")
+        .append(account.isActive()
+            ? " active"
+            : " inactive")
         .toString();
       stdout.println(out);
     }
   }
+
+  private String getUsername(Account account) throws OrmException {
+    String id = account.getId().toString();
+    Account accountFromResolver = accountResolver.find(db, id);
+    return accountFromResolver == null ? null
+        : accountFromResolver.getUserName();
+  }
 }
diff --git a/src/main/resources/Documentation/cmd-ls-users.md b/src/main/resources/Documentation/cmd-ls-users.md
index a3ead52..db4aa9b 100644
--- a/src/main/resources/Documentation/cmd-ls-users.md
+++ b/src/main/resources/Documentation/cmd-ls-users.md
@@ -15,10 +15,13 @@
 
 OPTIONS
 -------
+`--active-only`
+> Show only active users
 
---help
+`--inactive-only`
+> Show only inactive users
 
--h
+`--help, -h`
 > Display usage information.
 
 ACCESS
diff --git a/src/main/resources/Documentation/cmd-show-account.md b/src/main/resources/Documentation/cmd-show-account.md
index c1455ec..96c3bba 100644
--- a/src/main/resources/Documentation/cmd-show-account.md
+++ b/src/main/resources/Documentation/cmd-show-account.md
@@ -20,24 +20,22 @@
 OPTIONS
 -------
 
-user
+`user`
 > User to look up: This can be in one of several formats: LastName,\\\\ FirstName,  email\@address.com, account id or an user name. Be sure to double-escape spaces.  Case-sensitive
 
---show-groups
+`--show-groups`
 > Show all groups user is a member of?
 
---filter-groups
+`--filter-groups`
 > Filter group list?
 
---filter-string
+`--filter-string`
 > String to perform group filtering on.  Does not currently support regex.  Case-insensitive.
 
---show-keys
+`--show-keys`
 > Show users ssh public keys?
 
---help
-
--h
+`--help, -h`
 > Display usage information.
 
 ACCESS
diff --git a/src/main/resources/Documentation/cmd-show-repo-access.md b/src/main/resources/Documentation/cmd-show-repo-access.md
index 2ecd376..fa8d3b0 100644
--- a/src/main/resources/Documentation/cmd-show-repo-access.md
+++ b/src/main/resources/Documentation/cmd-show-repo-access.md
@@ -19,14 +19,13 @@
 
 OPTIONS
 -------
-repository
+`repository`
 > Repository to show access for
 
--w
+`-w`
 > Display without line width truncation
---help
 
--h
+`--help, -h`
 > Display usage information.
 
 ACCESS
diff --git a/src/main/resources/Documentation/cmd-show-repo-account-access.md b/src/main/resources/Documentation/cmd-show-repo-account-access.md
index e59913b..9743fda 100644
--- a/src/main/resources/Documentation/cmd-show-repo-account-access.md
+++ b/src/main/resources/Documentation/cmd-show-repo-account-access.md
@@ -19,17 +19,16 @@
 
 OPTIONS
 -------
-repository
+`repository`
 > Repository to show access for
 
---user
+`--user`
 > User to look up: This can be in one of several formats: LastName,\\\\ FirstName,  email\@address.com, account id or an user name. Be sure to double-escape spaces.  Case-sensitive
 
--w
+`-w`
 > Display without line width truncation
---help
 
--h
+`--help, -h`
 > Display usage information.
 
 ACCESS
