Peel and slice the potatoes into 1/4-inch rounds—keeping them uniform ensures even cooking. Dice the ham into 1/2-inch cubes and finely dice the onion so it distributes evenly throughout the casserole. Slice the fresh mushrooms into even pieces about 1/4-inch thick. Having everything prepped and ready before assembly makes the layering process much smoother and prevents the potatoes from browning.
In a bowl, whisk together the cream of mushroom soup, whole milk, garlic powder, and black pepper until smooth and well combined. This creates your sauce base that will braise the potatoes and infuse them with rich, savory flavor throughout the cooking process.
In your crockpot, arrange half of the sliced potatoes in an even layer on the bottom. Scatter half of the diced ham, onion, and sliced mushrooms over the potatoes. Pour half of the sauce mixture from Step 2 over this layer, then repeat with the remaining potatoes, ham, onion, and mushrooms. Top everything with the remaining sauce, making sure the potatoes on top are mostly submerged—this ensures they'll cook evenly and absorb all the creamy flavors.
Cover the crockpot and cook on low for 4 to 6 hours, depending on your crockpot's strength. The potatoes should be very tender when pierced with a fork, and the sauce will have thickened slightly. I find that checking at 4 hours helps me catch it at the perfect doneness—you want the potatoes creamy but not falling apart.
Give the casserole a gentle stir to distribute the sauce evenly and ensure any cream has incorporated throughout. Taste for seasoning and adjust if needed. Serve hot directly from the crockpot, making sure each portion gets a good mix of potatoes, ham, and creamy sauce.