I work in an office where we have 200+ windows machine. Each of them have different software installed on them. What I want to do is to be able to update/Install/remove a software in any/all of the computers at once. Like I want to have a Google play like system for the machines I have. Because upgrading them individually will take years. I believe this is related to VM? Any suggestions/directions will be valuable.
200 at a time is basically impossible due to bandwidth restrictions. You can't even use 90% of all bandwidth or you will cripple your users ability to use the network. However, doing them in small groups should be ok.
Many scripting languages can do something like this. https://powershellexplained.com/2017-04-22-Powershell-installing-remote-software/
Microsoft has a SCCM server product that can manage software.
Const wbemImpersonationLevelDelegate = 4 Set objWbemLocator = CreateObject("WbemScripting.SWbemLocator") Set objConnection = objwbemLocator.ConnectServer _ ("WebServer", "root\cimv2", "fabrikam\administrator", _ "password", , "kerberos:WebServer") objConnection.Security_.ImpersonationLevel = wbemImpersonationLevelDelegate Set objSoftware = objConnection.Get("Win32_Product") errReturn = objSoftware.Install("\\atl-dc-02\scripts\1561_lab.msi",,True)
This code could be augmented to include a list of computer names so that it activate the install on a computer and if it fails then the name remains on the list to be tried again later.
Then it works silently in the background until the last computer is done.
200 pc * 10 minutes = 2000/60 = 33 hours.
If you have a active directory you can use GPO's to install the software on specified computers.
I have groups of users so my imaging server just has 1 image for each group and thats it. Go pxe boot the computer, and its done in as little as 15 minutes depending on the image size, speed of your network, and congestion. I update the image with new software and redeploy. Obviously this takes more background work in your office.
- Build a generic PC, that has everything every user needs.
- Make a copy of #1, and modify it for group 1.
- Recapture and deploy.
- repeat for each group.
Now SCCM supposedly allows you to do this without maintaining 200 actual images. You just have the base OS, and it adds the designated software to each image as part of it deployment. However,each software has to be packaged in a SCCM friendly package so that take time.