Boil a large pot of water for the pasta and cook as directed. Grate cheese and set aside.
Meanwhile, in a large sauce pan, melt the butter over low heat. Add the flour and whisk constantly until bubbles form and the roux begins to thicken.
Add milk, garlic powder, onion powder, and salt, and continue whisking until the cream sauce starts to thicken. (You may need to turn the heat up slightly if your milk is cold.)
Add cheese by the handful and whisk between handfuls to melt. Taste and adjust seasonings.
Pour sauce over cooked, drained pasta and serve immediately.