There is really no point in having OU's per location. OU's really make sense for administration / delegation or application of group policy.
if your administration is centralized or with a global team that supports all users, then your support team needs the same access to all computers. If your clients can be mobile as well, then they should receive the same uniform experience regardless of where they go to. Both these are arguments against a separate OU per location.
What is useful however is separating laptops from desktops, so that policies such as offline files, power etc may be applied differently to each type of device.
However, to answer the question, you could do the below -
- Allow the "self" principal to move the computer object at the OU level.- have a group policy startup script that calculates the proper OU for the machine an moves itself there.
for laptops, you could check whether the laptop has a battery and process it differently. Another option is to have the computer startup script write its model number to the AD attributes for its computer object, and then you can use adfind / admod to process.