Malta started well as Rockey Dianish made 20 as he and skipper Zeeshan Khan put on 42 for the first wicket before Dianish was caught by Luke Bichard off Forshaw’s bowling for 20.
Khan went on to make 41 off 30 balls as he and Basil George (19) had a second-wicket stand of 40 to put them in a strong position.
But the pair fell within three balls of one another to leave Malta on 82-3 from 11.2 overs.
From there on Guernsey’s bowlers prevailed as Malta went on to lose their final five wickets for just 22 runs as Martin Dale Bradley took 2-23 and four other Guernsey bowlers got a wicket each.
In reply Ben Fitchet and Butler put on an opening stand of 51 before the former was caught for 32 after 5.2 overs.
Nightingale hit three sixes in a 19-ball 35 as he and Butler put on 50 for the second wicket before he was caught after 10.2 overs.
But Guernsey’s batters continued to control the game as Matt Stokes came in to guide the islanders home with 26 not out as Butler ended with five fours in a 32-ball 44 not out.