Experts from experts-exchange,
First of all, I am not even sure if this is the most appropriate topic area for my question. I am not sure because I did not find any area closer to this topic, so if some admin wants to change it of place, go ahead.
Now, let me describe my situation so you can help me to find a suitable solution:
I am in charge of a computer lab in a school. This computer lab has 20 computers and I am supposed to be the guy that keeps them properly working.
To keep the computer lab operational I have to:
(1) Install the appropriate operating system (OS) that is needed or instructed by the teachers, according to the classes that are going to take place in my lab. This can vary from Windows 2000 Professional, Windows XP Professional or even several distributions (distros) of Linux.
(2) Install all the software applications that are needed by the teachers for their curses. From the typical Microsoft Office to specialized academic software such as MathLab, SPICE (electric circuitry simulator), Programming Languages (such as Microsoft Visual C++ or Borland Pascal) and graphical design applications (e.g. Macromedia Fireworks).
(3) Keep the computers free of viruses by updating and running the Antivirus software, downloading and applying OS patches and service packs and keeping an eye over my users (mostly students whose sole purpose is to browse sex-related websites full of spyware as soon as I stop watching them or I get distracted).
(4) Keep the computers clean and clear. I mean with this, that I have to keep the computers free of pornographic wallpapers, weird customizations of the desktop and I must avoid users from installing or uninstalling applications (or printers, drivers, screen savers...) without permission.
The problem is, that every time I need to do a management task, I usually have to do it 20 times, each time for every computer in the lab. Take for example, if a teacher requests me to install a new application that is going to be needed for the next days for several classes in his course, I need to install this application in every machine, this is 20 times, a time-consuming task that I would like to avoid. If then I need to uninstall it because it seems to cause some conflicts with another already installed application, then again, I need to perform the same task 20 times. If a new lethal virus comes out from the Internet and my antiviruses cannot stop it, I need to disconnect my poor lab from the Internet, then update the antivirus on every machine and then hope it can fix the situation.
If a computer stops working, and the problem cannot be solved, I have to format it again, install the OS again, and all the applications again. This can take a lot of time. Now imagine if this happens to more than one computer...
Every time a user (usually a student, as I said before) leaves the computer lab, I am afraid that she changed the wallpaper to a disagreeable picture; I am afraid she downloaded the MSN Messenger again (although I printed a legend on a sheet of paper and hanged it on the wall that clearly states: "the use of any software for chat purposes is forbidden, particularly MSN Messenger". Each time a student leaves the computer she was using I have to rollback all customizations she could made to the system so it can stay more or less standardized, according to the lab's policies.
Maintenance duties are done on a regular basis (every six months). This includes formatting all the computers and installing the OS and base applications in order to give the PCs a fresh start for each semester. This is also a time-consuming duty which I would like to avoid.
I feel I am being repetitive and I am wasting time. I would like to find a solution for all these issues. I would like to control all my PCs from a single station where I could deliver and deploy everything I need, from applications to usage policies.
I would like my users to be restricted to do all the things they are not allowed to do. I would like to set up an ideal computer and then replicate it the number of times it is needed without doing all the work each time. I would like to be able to distribute new applications as they are needed to all the desired PCs, and also be able to remove it from all the PCs when it is no longer needed. I would like to be able to monitor all my users without having to stand up from my station and I also would like to be able to close windows, and even shut down PCs remotely if needed. I would like to apply upgrades and patches to the OS and applications in my PCs in a distributed way, I don't want to apply the upgrades manually in each PC.
If different OSes are needed for different courses, I would like to be able to switch from one OS to another in each PC with ease, without having to switch hard disks or changing partitions in the same hard disk. I would like that whenever a student comes to my lab, she will find the proper OS and applications for her course, all these without having to re-install the whole thing every time it changes.
Well, this is my situation.. I really can't stress enough how much I would like to save time and reduce management work. I am all hears and I'll be glad to read your pieces of advice.
Regards.