you need to make the piece that will move into a func_static with an origin brush, then give it the key/value script_targetname/whatever. next you need to place two tag_refs in the places you want it to move to, give them targetnames of left/right or something like that.
then you need to make two scripts, 1 for one moving it each way. each script will look like this:
affect ( whatever, FLUSH )
move ( tag( "left", ORIGIN ), time taken to get there )
then as long as you have two buttons, or two triggers (one for each of the directions) it should work
email me if you have any problems, email@example.com