As I think about it, a computer script won't work. When you connect/map a printer, it is tied to the user profile.. since a user profile isn't loaded when a computer startup script runs, the printer has no profile to connect to.
You could, in theory, try to map a printer and copy that profile to the default profile. This will allow any new profile that is created to already have that printer connected. For existing users, you could either map them manually, or delete their profile and force them to generate a new one from the default profile (I don't recommend deleting existing profiles..). The downside of using the profile method, is anytime you add/replace/move a computer to a department, you'll have to remember to set this up each file.
A script solution is still more ideal to me for this reason.
Since a computer startup script won't work, you'll have to do it during the user login script. You still have to choices depending on your needs:
1) Put computers into seperate OU's and check the computer OU during the login script and map printers accordingly.
2) Put computers into groups and check computer group membership during the login script and map printers accordingly.
Checking the OU is quicker/faster to script, but some environments don't allow/don't want computer's in OU's based on location.. thus checking group membership would be used. If you're workplace doesn't mind seperate OU's for each location/dept for the computer accounts, which it sounds like your location, then use the OU.
Code:
'returns the LDAP Path (distinguished name) of the computer account
set objSysInfo = CreateObject("ADSystemInfo")
strComputerDN = objSysInfo.ComputerName
From there, it will return the full LDAP path of the computer account as a string (ie:"CN=MyComputerName,OU=Math,DC=Contessa,DC=com")
You would then search the LDAP string for your OU and using either a case statement or if/then's map your printers accordingly.
Searching the LDAP string can be done a number of ways depending on the complexity of your LDAP path and if you use commas in OU names, etc. If it's fairly simple (ie: no nested OU's, etc..)
Code:
'find where the OU section starts in the LDAP Path
intStart=InStr(0,strComputerDN,"OU=")
'if the OU section exists, process the ou name
if intStart <> 0 then
intEnd=InStr(intStart,strComputerDN,",")
'extract just the ou= portion
strOU = mid(strComputerDN,intStart,intEnd)
Set objNetwork= CreateObject("WScript.Network")
'depending on which ou, map printers (converted ou string to all lower case)
select case lcase(strOU)
case "ou=english"
objNetwork.AddWindowsPrinterConnect "<printer path>"
objNetwork.AddWindowsPrinterConnect "<printer path2>"
objNewwork.SetDefaultPrinter "<defaultPritnerPath>"
case "ou=math"
<map printers for computers in math dept.>
end select
end if
edit:
disclaimer - the code above is for example purposes only. It is only a skeleton/framework and really needs some error checking and other controls put in before being considered for production use.