To be honest, I think one of the biggest problems with using a Microsoft stack is licensing. With Linux/OSS infrastructure the only limit in terms of flexibility is your imagination. Want a server? All you need to buy is the hardware. Want to change the OS on a server? Just takes time and effort. Want to change your infrastructure from a few big iron boxes to 10x as many smaller boxes? Again, just time and effort and hardware costs.
In contrast, with an MS stack you have licensing and purchasing friction at every step. You get mired with infrastructure inertia, you don't want to waste the money you've spent on buying OS/database licenses, you don't want to spend new money on new licenses. Even when the money isn't very consequential (and in most operations it's not) the mere fact that budgeting has to be involved in so many technical changes often reduces flexibility and development velocity. For example, what if you want to merely investigate a potential new server configuration? With Linux you can perhaps find some older hardware and spend some time prototyping a new system, and if it doesn't work you've wasted time but you've at least learned something. With Windows you have to commit money before you've completed your test.