Server Fault is a question and answer site for system and network administrators. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

We are using Group Policy Preferences to push screensaver files to our workstations. The file is 50+ Mb.

If we set the file to "Replace" then we don't have any functional issues, but performance wise it's just killing our network copying this file down to every workstation everytime GP updates. "Update" does not "Update" the file, it just updates the properties associated with the file so this doesn't solve our issue. The frequency needs to be more consistent then a logon script can provide.

Is there a way that we can only copy down an updated copy of our screensaver when the copy of the file on the network has changed?

share|improve this question
How are defining "the file on the network has changed"? Last modify time? File size? File version number? – jscott Oct 18 '11 at 17:12
@jscott - Last Modify Time – Peter Oct 18 '11 at 17:50
A 50-MB SCREENSAVER?!? Wow... just... Wow. – Massimo Oct 18 '11 at 20:18
@Massimo - The scr file itself is only a couple hundred kb if that. But the scr file runs a PowerPoint presentation as the actual screensaver, and it's the PPT file that is 50+ MB's. – Peter Oct 19 '11 at 13:02

Don't just put in giant exes and re-deploy them. Instead write a script in the language of your choice. Python, autohotkey, vbs, batch, whatever. Write some conditional logic that checks the the file modified date on the server against the version on the local machine, if they differ, grab the new version. So instead of you pushing out a 50mb file, you're pushing a 2kb file.

I like autohotkey for this because its so easy and there's a decent community.

I'm not sure what you mean by "The frequency needs to be more consistent then a logon script can provide." Do you need it to run more frequently? Setup a scheduled job or write your script as a service. Run on all workstations. No need for AD to be involved.

share|improve this answer
The plan is to modify the screensaver once a week. I usually only logoff my box once a month when they deploy patches and many other users do the same. We'de like people to get the updated screensaver within 48 hours, but preferably sooner. Running a script as a scheduled task on ALL workstations to check for a new screensaver seems totally crazy to me. (though some people probalby think having a 50MB screensaver is crazy too...) GP Preferences is so close and we use it for so much other stuff it would be nice to try and get this working there. – Peter Oct 19 '11 at 13:09
Write the scr so that it looks to a share for the ppt, if the ppt is newer than the one copied locally, do nothing, if it is, copy it over. Now you're not doing 50mb copies all the time. Its only being done if there is a newer file. You can also distribute the load by having an offset put in. Have it check every hour for the file, but with a random chance to check at – DrZaiusApeLord Oct 20 '11 at 14:35
continued.... with a random(60) to check at a random minute. Not at x:00, but at x:random-number. So some client will check at x:04 others at x:15, etc. Now instead of pounding your server trying to download this thing at the same time, there's a 1/60th chance that your clients are pulling this at that minute. – DrZaiusApeLord Oct 20 '11 at 14:45

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.