Automation objects are implemented in a client-server model to control operations on one or more client machines from a single machine automation control module, such as a test program. The machine automation control module instantiates machine automation server objects in a server process. The control module can then instruct the server objects to instantiate corresponding machine automation client objects on specified client machines via a connection mechanism. Object-oriented automation classes are provided in a library and may be extended to meet customized requirements of a given testing procedure. Examples of automation objects may include, without limitation, application objects, machine image objects, snapshot objects, file and registry access objects, reboot objects, autologon objects, and command execution objects. Automation objects allow the re-establishment of remote control after the loss of control resulting from a reboot, a relogon, or a disk image restoration, for example. Automation objects may also be used to automate the deployment of software throughout an enterprise.