Windows GPOs only would allow you to preset a background image to a given image file and to disable the UI functionality to change it. There is no feature to restrict the choice of available images.
You could just disable the wallpaper changing UI via GPO and let your users set the desired wallpaper by calling a script which would write to the respective registry key (
HKCU\Control Panel\Desktop) in the user's profile which might look as simple as
set-itemproperty -path "HKCU:Control Panel\Desktop" -name WallPaper -value "\\domain\Dfs\wallpaper\image1.jpg"
in PowerShell (requires a logoff / logon sequence to take effect).
The trouble with this approach is that a sufficiently smart or knowledgeable user could simply change the registry key value herself to set any wallpaper she likes. If this is a concern, you could try a different, although considerably more complex setup:
- set the desktop background to a user-specific path (e.g. an image file in the user's profile) via GPO
- remove the user's write/delete access to the directory containing the file and the file itself
- providing an interface to replace this file which would be running under a different security context and have the permissions to replace the aforementioned file
An implementation could include a number of scheduled tasks on all of your Windows workstations which would be set up to run in a sufficiently privileged context (e.g. the SYSTEM / LocalSystem account) to replace the currently logged on user's wallpaper image with one of the allowed ones.