William Henry Penrose was born March 10, 1832 at Madison Barracks in Sackett's Harbor, New York, where his father, Captain James W. Penrose, was stationed as a officer of the Regular Army. William entered Dickinson College in Carlisle, Pennsylvania in 1846 with the class of 1849; he is listed in college records as a Carlisle resident living at the home of his mother. He withdrew from the College after his junior year and later trained as a civil and mechanical engineer. He was working in Michigan when the Civil War broke out and in April 1861 was appointed as second lieutenant in the Third Infantry of the Regular Army, probably thanks to his father's connections. He served in the Peninsula Campaign, at Second Bull Run, and at Fredericksburg. By April 1863 he was colonel of the 15th New Jersey, commanding them at Chancellorsville, Gettysburg, and the Wilderness. He commanded the First Brigade of Sixth Corps First Division at Cold Harbor before moving with it to the campaigns in the Shenandoah and later at Petersburg, where he was wounded. He had been breveted as a Brigadier General of Volunteers in October 1864 and as Brigadier General U.S. Army on April 9, 1865.
Penrose was mustered out of the volunteer service in 1866 and took up service in the Regular Army as captain of the 3rd United States Infantry, a rank he held in various posts for seventeen years. He was at last promoted, to major in 1883, then to lieutenant colonel in 1888, and once again became, after thirty years, a full colonel with the 20th United States Infantry in 1893. He finished his career with the 16th United States Infantry and retired in 1896 at the age of sixty-four. He lived in Salt Lake City, Utah with his wife Harriet Elizabeth Penrose until his death there from typhoid fever on August 29, 1903. He was buried with full military honors in Arlington Cemetery.