Родился в 1821 году, сын героя Наполеоновских войн генерала князя Ивана Леонтьевича Шаховского.
На службу поступил в 1837 году в одну из лёгких батарей лейб-гвардии конной артиллерии, в офицеры произведён 19 апреля 1842 года. Боевой опыт приобрёл на Кавказе в борьбе с горцами. За отличия получил орден св. Анны 3-й степени с бантом (в 1848 году) и золотую саблю с надписью «За храбрость» (в 1850 году).
В 1854 году был произведён в полковники и 18 ноября назначен флигель-адъютантом. Командовал Ингерманландским сапёрным полком и лейб-гвардии 1-м стрелковым Его Величества батальоном.
17 апреля 1860 года произведён в генерал-майоры свиты, а 27 марта 1866 года — в генерал-лейтенанты (со старшинством от 20 мая 1868 года). За это время он получил ордена св. Владимира 3-й степени (в 1864 году), св. Станислава 1-й степени (в 1869 году) и св. Анны 1-й степени (в 1871 году).
Перед русско-турецкой войной был назначен командиром 11-го армейского корпуса и действовал в составе Нижне-Дунайского отряда.
С 1885 года в чине генерала от инфантерии числился по запасным войскам. Скончался в 1900 году.