This is a pain. I can't get "Fire", "dofire", or "action ["useWeapon",...] to work for this.
The sure fire way is to use invisible targets (like Mapfact's Misc addon), but that requires an addon. If you are interested in that approach see my Coup De Grace scripts in the scripting resource beta thread.
For a cutscene, you can use the trick I used in the outro for Last Tango in Bagango, where I had a MG AI fire on a camera. The trick was I had an enemy soldier stashed away off camera, who was setcaptive true. His name was "vidCamTarget". The Machine gunner was named "corporal". In the script below, I setpos the enemy (vidCamTarget) in front of the shooter (corporal). The camera was focused on the shooter, so the enemy was not in the field of view. The shooter was then ordered to target and fire. The timing of when the shooter would recognize the enemy and shoot varied greatly from each test, so I accellerated time to make it fast, and immediately de-accelerated time once the shooter shot (via a "fired" eventhandler on the shooter setting the global variable mgFired true). It was a lot of work to figure out, but it worked well. The shooter fired quickly, exactly where I wanted him to.
vidCamTarget setpos (vid2 modelToWorld [2,.5,0])
corporal doTarget vidCamTarget
~.1
mgFired = false
setacctime 2.5
corporal dotarget vidCamTarget
~.3
vidCamTarget setCaptive false
corporal dofire vidCamTarget
~1
corporal dofire vidCamTarget
corporal dofire vidCamTarget
#mgNotFired
~.05
?(Alive vidCamTarget): goto "mgNotFired"
setacctime 1.0
vidCamTarget setpos [0,0,0]
If you find an easier way, be sure and post it. Good luck.