Heat a skillet over medium heat. Add 2 tablespoons of butter to the pan and melt.
Slice the ends off the shallots and then slice the shallots in half. Thinly slice the shallots, lengthwise.
Separate and add to the pan with the melted butter. Cook shallots, stirring often, until browned, but not crispy, about 20 minutes. Set aside.
Bring a large pot of salted water to a boil. Cook pasta for one minute less than the package directions state.
While the water is heating, preheat the oven to 375 degrees. Lay the prosciutto out in a single layer on a rimmed baking sheet. Bake for 10 minutes or until deep brown and beginning to curl up. Remove from the oven and place prosciutto on a paper towel lined plate. Set aside.
Reduce heat of the oven to 350 degrees.
To make the cheese sauce, add the milk and cream to a small pan and heat over low heat to warm. Do not bring to a boil.
In a large sauce pan, melt the remaining butter. Add the flour and whisk to combine over medium heat, cooking for about 2 minutes. Slowly add the milk to the flour mixture, stirring constantly. Continue cooking and stirring until the mixture has thickened, about 5 minutes.
Remove from the heat and whisk in the cheeses, salt, pepper, and nutmeg. Continue stirring until the sauce is smooth and creamy.
Crumble the prosciutto into the cheese sauce, stir in the shallots, and add it to a large bowl with the cooked pasta. Stir to coat.
Add pasta to a 9x13 baking dish and bake for 20 minutes.
For best results, reheat leftovers in the oven.