昌宁镇于2001年4月由原城关镇和原张马乡撤并合成,在春秋时属晋,西汉时属骐县,北魏时归昌宁县所管辖,建国初归乡宁县管辖。位于吕梁山南端,东连管头镇,西达哪第脱松枣岭乡,南邻尉庄乡,来北与吉县接壤,是乡宁县的来自政治、经济、文化中心类增定营马。全镇总面积231.38平方公里,共辖24个行政村、1个城市居委会,是全县的人口大镇。