All of our workstations have a folder on their local drive that contains some common files used by our company. Periodically we need to push out changes to some of these files. Currently we are using System Center Configuration Manager (SCCM) to run a VBScript that executes robocopy.
This method does not provide very good reporting in SCCM and some clients are not receiving the updates.
There has to be a better way to do this, but I cannot find anything online. We would like an automated method that is transparent to the user. We are open to spending a little money, but a free solution is best. Any help would be appreciated. Thanks!
Using a script through SCCM actually sounds like a pretty good approach. Can you provide more information on why it's not working, or why some clients don't get the updates? It might be possible to modify your script so that the return code is passed along to SCCM and you get better reporting.
For example, looking at the documentation for WshShell.Run, it will return the exit code of your command. So your line should be :
Success = WshShell.Run "\\server\robocopy.exe ""\\path\to\folder"" C:\Destination_Folder /MIR, 0, True
Looking at the documentation for Robocopy shows that it will return either 0 or 1 on success. Now most commands exit 0 on success, which what I think SCCM will report. So the next step is to make sure that your VBScript passes the correct result back to SCCM. In this case, you want to return 0 if Success was 0 or 1, and return 1 if Success was >1 (or you can get more advanced and return special codes to get different error messages in SCCM). To pass this exit code we look at the documentation for WScript.Quit and we see that we need to run
WScript.Quit (1);
for failure orWScript.Quit (0);
for successThe nice part about SCCM, is that it has all of the clients pulling the data down from the server, and SCCM can be used to stage out that event, thereby reducing load on the host file server.
The opposite (and uglier) approach is to have your server push the folder contents out to each client. Assuming you can dump out a list of all your computers, you should be able to put together a simple script that itterative over that list and coppied the folder to each client. However, this approach would require the client machine be on at the time you initiate the copy (something that SCCM can take care of for you)
Another possible alternative (you probably already thought of) is to locate this folder on a shared drive. Eliminate the issue of pushing out file entirely. Depending upon the size of the folder, perhaps this is a viable alternative.
Why not set up a Subversion server, then have users use something like TortoiseSVN to pull updates?