diff --git a/doc/source/command-objects/server.rst b/doc/source/command-objects/server.rst
index 211963f3eb..d8b3dbcbaf 100644
--- a/doc/source/command-objects/server.rst
+++ b/doc/source/command-objects/server.rst
@@ -253,17 +253,17 @@ List servers
 server lock
 -----------
 
-Lock a server. A non-admin user will not be able to execute actions
+Lock server(s). A non-admin user will not be able to execute actions
 
 .. program:: server lock
 .. code:: bash
 
     os server lock
-        <server>
+        <server> [<server> ...]
 
 .. describe:: <server>
 
-    Server (name or ID)
+    Server(s) to lock (name or ID)
 
 server migrate
 --------------
diff --git a/doc/source/commands.rst b/doc/source/commands.rst
index 62ed7652cc..ca60ab8e76 100644
--- a/doc/source/commands.rst
+++ b/doc/source/commands.rst
@@ -169,7 +169,7 @@ Those actions with an opposite action are noted in parens if applicable.
 * ``delete`` (``create``) - delete specific occurrences of the specified objects
 * ``issue`` (``revoke``) - issue a token
 * ``list`` - display summary information about multiple objects
-* ``lock`` (``unlock``) - lock a server so that non-admin user won't be able to execute actions
+* ``lock`` (``unlock``) - lock one or more servers so that non-admin user won't be able to execute actions
 * ``migrate`` - move a server to a different host; ``--live`` performs a
   live migration if possible
 * ``pause`` (``unpause``) - stop one or more servers and leave them in memory
diff --git a/openstackclient/compute/v2/server.py b/openstackclient/compute/v2/server.py
index 7c8e4055a1..bd6f5a54fd 100644
--- a/openstackclient/compute/v2/server.py
+++ b/openstackclient/compute/v2/server.py
@@ -846,7 +846,7 @@ class ListServer(lister.Lister):
 
 class LockServer(command.Command):
 
-    """Lock a server. A non-admin user will not be able to execute actions"""
+    """Lock server(s). A non-admin user will not be able to execute actions"""
 
     log = logging.getLogger(__name__ + '.LockServer')
 
@@ -855,7 +855,8 @@ class LockServer(command.Command):
         parser.add_argument(
             'server',
             metavar='<server>',
-            help=_('Server (name or ID)'),
+            nargs='+',
+            help=_('Server(s) to lock (name or ID)'),
         )
         return parser
 
@@ -863,10 +864,11 @@ class LockServer(command.Command):
     def take_action(self, parsed_args):
 
         compute_client = self.app.client_manager.compute
-        utils.find_resource(
-            compute_client.servers,
-            parsed_args.server,
-        ).lock()
+        for server in parsed_args.server:
+            utils.find_resource(
+                compute_client.servers,
+                server,
+            ).lock()
 
 
 # FIXME(dtroyer): Here is what I want, how with argparse/cliff?