Index: trunk/src/VBox/Frontends/VBoxManage/VBoxManage.cpp
===================================================================
--- trunk/src/VBox/Frontends/VBoxManage/VBoxManage.cpp	(revision 94209)
+++ trunk/src/VBox/Frontends/VBoxManage/VBoxManage.cpp	(revision 94210)
@@ -237,5 +237,5 @@
     { "guestcontrol",       USAGE_S_NEWCMD, HELP_CMD_GUESTCONTROL, handleGuestControl,         0 },
 #endif
-    { "metrics",            USAGE_METRICS,          VBMG_CMD_TODO, handleMetrics,              0 },
+    { "metrics",            USAGE_S_NEWCMD,      HELP_CMD_METRICS, handleMetrics,              0 },
     { "import",             USAGE_S_NEWCMD,       HELP_CMD_IMPORT, handleImportAppliance,      0 },
     { "export",             USAGE_S_NEWCMD,       HELP_CMD_EXPORT, handleExportAppliance,      0 },
Index: trunk/src/VBox/Frontends/VBoxManage/VBoxManage.h
===================================================================
--- trunk/src/VBox/Frontends/VBoxManage/VBoxManage.h	(revision 94209)
+++ trunk/src/VBox/Frontends/VBoxManage/VBoxManage.h	(revision 94210)
@@ -110,5 +110,4 @@
     USAGE_I_RENAMEVMDK,
     USAGE_I_CONVERTTORAW,
-    USAGE_METRICS,
     USAGE_I_CONVERTHD,
     USAGE_HOSTONLYIFS,
Index: trunk/src/VBox/Frontends/VBoxManage/VBoxManageHelp.cpp
===================================================================
--- trunk/src/VBox/Frontends/VBoxManage/VBoxManageHelp.cpp	(revision 94209)
+++ trunk/src/VBox/Frontends/VBoxManage/VBoxManageHelp.cpp	(revision 94210)
@@ -544,4 +544,6 @@
     bool fVBoxSDL = false;
 #endif
+
+    RT_NOREF(fSubcommandScope);
 
     Assert(enmCommand != USAGE_INVALID);
@@ -639,28 +641,4 @@
                      "\n", SEP);
 
-    if (enmCommand == USAGE_METRICS || enmCommand == USAGE_S_ALL)
-        RTStrmPrintf(pStrm,
-                           "%s metrics %s         list [*|host|<vmname> [<metric_list>]]\n"
-                     "                                                 (comma-separated)\n\n"
-                           "%s metrics %s         setup\n"
-                     "                            [--period <seconds>] (default: 1)\n"
-                     "                            [--samples <count>] (default: 1)\n"
-                     "                            [--list]\n"
-                     "                            [*|host|<vmname> [<metric_list>]]\n\n"
-                           "%s metrics %s         query [*|host|<vmname> [<metric_list>]]\n\n"
-                           "%s metrics %s         enable\n"
-                     "                            [--list]\n"
-                     "                            [*|host|<vmname> [<metric_list>]]\n\n"
-                           "%s metrics %s         disable\n"
-                     "                            [--list]\n"
-                     "                            [*|host|<vmname> [<metric_list>]]\n\n"
-                           "%s metrics %s         collect\n"
-                     "                            [--period <seconds>] (default: 1)\n"
-                     "                            [--samples <count>] (default: 1)\n"
-                     "                            [--list]\n"
-                     "                            [--detach]\n"
-                     "                            [*|host|<vmname> [<metric_list>]]\n"
-                     "\n", SEP, SEP, SEP, SEP, SEP, SEP);
-
 #if defined(VBOX_WITH_NAT_SERVICE)
     if (enmCommand == USAGE_NATNETWORK || enmCommand == USAGE_S_ALL)
Index: trunk/src/VBox/Frontends/VBoxManage/VBoxManageMetrics.cpp
===================================================================
--- trunk/src/VBox/Frontends/VBoxManage/VBoxManageMetrics.cpp	(revision 94209)
+++ trunk/src/VBox/Frontends/VBoxManage/VBoxManageMetrics.cpp	(revision 94210)
@@ -178,4 +178,6 @@
     com::SafeIfaceArray<IUnknown> objects;
 
+    setCurrentSubcommand(HELP_SCOPE_METRICS_LIST);
+
     rc = parseFilterParameters(argc - 1, &argv[1], aVirtualBox,
                                ComSafeArrayAsOutParam(metrics),
@@ -230,4 +232,6 @@
     int i;
 
+    setCurrentSubcommand(HELP_SCOPE_METRICS_SETUP);
+
     for (i = 1; i < argc; i++)
     {
@@ -287,4 +291,6 @@
     com::SafeArray<BSTR>          metrics;
     com::SafeIfaceArray<IUnknown> objects;
+
+    setCurrentSubcommand(HELP_SCOPE_METRICS_QUERY);
 
     rc = parseFilterParameters(argc - 1, &argv[1], aVirtualBox,
@@ -397,4 +403,7 @@
     bool isDetached = false, listMatches = false;
     int i;
+
+    setCurrentSubcommand(HELP_SCOPE_METRICS_COLLECT);
+
     for (i = 1; i < argc; i++)
     {
@@ -550,4 +559,6 @@
     int i;
 
+    setCurrentSubcommand(HELP_SCOPE_METRICS_ENABLE);
+
     for (i = 1; i < argc; i++)
     {
@@ -592,4 +603,6 @@
     int i;
 
+    setCurrentSubcommand(HELP_SCOPE_METRICS_DISABLE);
+
     for (i = 1; i < argc; i++)
     {
@@ -626,5 +639,5 @@
     /* at least one option: subcommand name */
     if (a->argc < 1)
-        return errorSyntax(USAGE_METRICS, Metrics::tr("Subcommand missing"));
+        return errorSyntax(Metrics::tr("Subcommand missing"));
 
     ComPtr<IPerformanceCollector> performanceCollector;
@@ -645,5 +658,5 @@
         rcExit = handleMetricsDisable(a->argc, a->argv, a->virtualBox, performanceCollector);
     else
-        return errorSyntax(USAGE_METRICS, Metrics::tr("Invalid subcommand '%s'"), a->argv[0]);
+        return errorSyntax(Metrics::tr("Invalid subcommand '%s'"), a->argv[0]);
 
     return rcExit;
