High Tower, half of what you're looking for is above in my previous post - that is, what task server you're connected to.
Sonic, there's a fundamental problem with what you're asking for, though it can be done.
Sort of.
The simple truth is: we don't actually assign computers to sites. YOU can do so through "manual site assignments" and we have a stored procedure that lookst that up. But we don't.
We let you define a site by subnet range.
When a client computer requests something that has site boundaries (e.g. package download) we look at the subnet for that client, query for what package servers service that subnet based on their site assignments, and deliver a list accordingly. The client is not actually "in" the site per-se.
So the report is going to be interesting.
You'll have to query for all subnets in a site, then match all computers based on that subnet list, and quite frankly, it'll be a slow report if you don't also do something like build a stored procedure and/or views.
CAN it be done? Yes. I'd sort of like to toy with it. But it's not out-of-the-box, because the product frankly doesn't care, so we don't track it already.
I hope that makes sense. We'll see what we can do - the community and I. :D