Index: /trunk/doc/manual/en_US/man_VBoxManage-controlvm.xml
===================================================================
--- /trunk/doc/manual/en_US/man_VBoxManage-controlvm.xml	(revision 84574)
+++ /trunk/doc/manual/en_US/man_VBoxManage-controlvm.xml	(revision 84575)
@@ -100,4 +100,22 @@
     </cmdsynopsis>
 
+    <cmdsynopsis id="synopsis-vboxmanage-controlvm-reboot">
+      <command>VBoxManage controlvm</command>
+      <group choice="req">
+        <arg choice="plain"><replaceable>uuid</replaceable></arg>
+        <arg choice="plain"><replaceable>vmname</replaceable></arg>
+      </group>
+      <arg choice="plain">reboot</arg>
+    </cmdsynopsis>
+
+    <cmdsynopsis id="synopsis-vboxmanage-controlvm-shutdown">
+      <command>VBoxManage controlvm</command>
+      <group choice="req">
+        <arg choice="plain"><replaceable>uuid</replaceable></arg>
+        <arg choice="plain"><replaceable>vmname</replaceable></arg>
+      </group>
+      <arg choice="plain">shutdown</arg>
+    </cmdsynopsis>
+
     <cmdsynopsis id="synopsis-vboxmanage-controlvm-keyboardputscancode">
       <command>VBoxManage controlvm</command>
@@ -787,4 +805,28 @@
         this command triggers a proper sleep mechanism from within the
         VM.
+      </para>
+    </refsect2>
+    <refsect2 id="vboxmanage-controlvm-reboot">
+      <title>Reboot the guest OS</title>
+      <remark role="help-copy-synopsis"/>
+      <para>
+        The <command>VBoxManage controlvm
+        <replaceable>vmname</replaceable> reboot</command>
+        command asks the guest OS to reboot itself.
+      </para>
+      <para>
+        This commands new recent Guest Additions installed.
+      </para>
+    </refsect2>
+    <refsect2 id="vboxmanage-controlvm-shutdown">
+      <title>Shut down the guest OS</title>
+      <remark role="help-copy-synopsis"/>
+      <para>
+        The <command>VBoxManage controlvm
+        <replaceable>vmname</replaceable> shutdown</command>
+        command asks the guest OS to halt + shutdown.
+      </para>
+      <para>
+        This commands new recent Guest Additions installed.
       </para>
     </refsect2>
Index: /trunk/src/VBox/Frontends/VBoxManage/VBoxManageControlVM.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VBoxManage/VBoxManageControlVM.cpp	(revision 84574)
+++ /trunk/src/VBox/Frontends/VBoxManage/VBoxManageControlVM.cpp	(revision 84575)
@@ -677,4 +677,25 @@
             CHECK_ERROR_BREAK(console, SleepButton());
         }
+        else if (   !strcmp(a->argv[1], "reboot")
+                 || !strcmp(a->argv[1], "shutdown")) /* With shutdown we mean gracefully powering off the VM by letting the guest OS do its thing. */
+        {
+            ComPtr<IGuest> guest;
+            CHECK_ERROR_BREAK(console, COMGETTER(Guest)(guest.asOutParam()));
+
+            const bool fReboot = !strcmp(a->argv[1], "reboot");
+
+            com::SafeArray<GuestShutdownFlag_T> aShutdownFlags;
+            if (fReboot)
+                aShutdownFlags.push_back(GuestShutdownFlag_Reboot);
+            else
+                aShutdownFlags.push_back(GuestShutdownFlag_PowerOff);
+            CHECK_ERROR(guest, Shutdown(ComSafeArrayAsInParam(aShutdownFlags)));
+            if (FAILED(rc))
+            {
+                if (rc == VBOX_E_NOT_SUPPORTED)
+                    RTPrintf("Current installed Guest Additions don't support %s the guest.",
+                             fReboot ? "rebooting" : "shutting down");
+            }
+        }
         else if (!strcmp(a->argv[1], "keyboardputscancode"))
         {
Index: /trunk/src/VBox/Frontends/VBoxManage/VBoxManageHelp.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VBoxManage/VBoxManageHelp.cpp	(revision 84574)
+++ /trunk/src/VBox/Frontends/VBoxManage/VBoxManageHelp.cpp	(revision 84575)
@@ -833,4 +833,5 @@
                            "%s controlvm %s       <uuid|vmname>\n"
                      "                            pause|resume|reset|poweroff|savestate|\n"
+                     "                            reboot|shutdown|\n"
                      "                            acpipowerbutton|acpisleepbutton|\n"
                      "                            keyboardputscancode <hex> [<hex> ...]|\n"
