Shakib scored 64 off 68 balls, his innings laced with seven fours, but lacked support from the other end as Bangladesh kept losing wickets.
For the Kiwis, Henry (4/47) was the pick of the bowlers with his figures the best in the World Cup so far. For India, leg-spinner Yuvendra Chahal also returned figures of 4/51 against South Africa.
After being put in to bat, Bangladesh openers Tamim Iqbal and Soumya Sarkar were off to a good start, sharing a 45-run stand for the opening wicket before Henry clean-bowled Sarkar (25) just when he was looking good.
Iqbal (24) followed suit, skying a super fast Lockie Ferguson bouncer to Trent Boult at midwicket. The experienced pair of Mushfiqur Rahim (19) and Shakib then joined hands for a 50-run partnership for the third wicket before the former ran himself out.
Shakib and Mohammed Mithun also looked good with a 41-run stand but Colin de Grandhomme ensured the Kiwis kept taking wickets at regular intervals, sending Shakib back in the hut with a caught behind.
Mithun (26) holed out to Grandhomme at fine leg off Henry soon after while Mahmudullah (20) was not in his elements, flapping a Mitchell Santner (1/41) delivery to to Williamson at cover.
Mohammad Saifuddin then played an important 23-ball 29 run cameo before Henry, bowling the final over, snared two wickets in two balls to bowl them out.
Brief scores: Bangladesh 244 all out in 49.2 overs (Shakib Al Hasan 64; Matt Henry 4/47)