diff --git a/src/main/java/com/googlesource/gerrit/plugins/adminconsole/AdminConsoleCommandModule.java b/src/main/java/com/googlesource/gerrit/plugins/adminconsole/AdminConsoleCommandModule.java
index 98da362..c29da8f 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/adminconsole/AdminConsoleCommandModule.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/adminconsole/AdminConsoleCommandModule.java
@@ -21,8 +21,10 @@
   protected void configureCommands() {
     command(ShowAccountCommand.class);
     command(ListUsersCommand.class);
+    command(GetFullPathCommand.class);
     alias("show-account", ShowAccountCommand.class);
     alias("show-repo-account-access", ShowRepoAccountAccessCommand.class);
     alias("show-repo-access", ShowRepoAccessCommand.class);
+    alias("get-path", GetFullPathCommand.class);
   }
 }
diff --git a/src/main/java/com/googlesource/gerrit/plugins/adminconsole/GetFullPathCommand.java b/src/main/java/com/googlesource/gerrit/plugins/adminconsole/GetFullPathCommand.java
new file mode 100644
index 0000000..5dcbed0
--- /dev/null
+++ b/src/main/java/com/googlesource/gerrit/plugins/adminconsole/GetFullPathCommand.java
@@ -0,0 +1,66 @@
+// Copyright (C) 2017 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+
+package com.googlesource.gerrit.plugins.adminconsole;
+
+import static com.google.gerrit.sshd.CommandMetaData.Mode.MASTER_OR_SLAVE;
+
+import com.google.gerrit.common.data.GlobalCapability;
+import com.google.gerrit.extensions.annotations.CapabilityScope;
+import com.google.gerrit.extensions.annotations.RequiresCapability;
+import com.google.gerrit.reviewdb.client.Project;
+import com.google.gerrit.sshd.CommandMetaData;
+import com.google.gerrit.sshd.SshCommand;
+import com.google.gerrit.server.git.LocalDiskRepositoryManager;
+import com.google.gerrit.server.git.GitRepositoryManager;
+import com.google.gerrit.server.project.ProjectCache;
+import com.google.inject.Inject;
+
+import org.eclipse.jgit.lib.Constants;
+import org.kohsuke.args4j.Argument;
+
+@RequiresCapability(value = GlobalCapability.ADMINISTRATE_SERVER, scope = CapabilityScope.CORE)
+@CommandMetaData(runsAt = MASTER_OR_SLAVE, name = "get-path", description = "Gets the full path of a repository")
+public final class GetFullPathCommand extends SshCommand {
+
+  @Argument(index = 0, required = true, metaVar = "PROJECT", usage = "Name of the project")
+  private String projectName = "";
+
+  private LocalDiskRepositoryManager localDiskRepositoryManager;
+  private ProjectCache projectCache;
+
+  @Inject
+  GetFullPathCommand(GitRepositoryManager grm, ProjectCache pc) {
+    if (grm instanceof LocalDiskRepositoryManager) {
+      localDiskRepositoryManager = (LocalDiskRepositoryManager) grm;
+    }
+    projectCache = pc;
+  }
+
+  @Override
+  protected void run() throws UnloggedFailure {
+    if (localDiskRepositoryManager == null) {
+      throw new UnloggedFailure(1,
+          "Command only works with disk based repository managers");
+    }
+    Project.NameKey nameKey = new Project.NameKey(projectName);
+    if (projectCache.get(nameKey) != null) {
+      stdout.println(localDiskRepositoryManager.getBasePath(nameKey)
+          .resolve(nameKey.get().concat(Constants.DOT_GIT_EXT)));
+    } else {
+      throw new UnloggedFailure(1, "Repository not found");
+    }
+  }
+}
diff --git a/src/main/resources/Documentation/cmd-get-path.md b/src/main/resources/Documentation/cmd-get-path.md
new file mode 100644
index 0000000..a694ec9
--- /dev/null
+++ b/src/main/resources/Documentation/cmd-get-path.md
@@ -0,0 +1,34 @@
+@PLUGIN@ get-path
+================
+
+NAME
+----
+@PLUGIN@ get-path get full path of repository
+
+SYNOPSIS
+--------
+>     ssh -p <port> <host> @PLUGIN@ get-path
+>      [repository]
+
+
+DESCRIPTION
+-----------
+Get the full path of an existing repository.
+
+OPTIONS
+-------
+`repository`
+> Repository to show access for
+
+ACCESS
+------
+Gerrit Administrators only.
+
+SCRIPTING
+---------
+This command is intended to be used in scripts.
+
+EXAMPLES
+--------
+Get full path for a repository named "my-project"
+>     $ ssh -p @SSH_PORT@ @SSH_HOST@ @PLUGIN@ get-path my-project
\ No newline at end of file
