Octopus Deploy takes care of this. Each endpoint server has a small app running on it (a tentacle). It can pull or deployment server can push updates to each endpoint. I can deploy to hundreds of servers with no downtime.
I can push builds out of TeamCity directly without even touching Octopus Deploy if I don't want to. Server settings can be set up as part of the deployment.
Web apps, Windows Services, etc can all be deployed and then tweaked with Powershell.
I'm also deploying database scripts at the same time. It isn't hard.