Hostname Change on 700+ Workstations
-
@Tom-Elliott that’s why you’re the creator and i’m just some guy breaking stuff lol ^_^ thanks Tom! with this I’ll be able to complete it by assigning them to a group
-
@Tom-Elliott by the way, any snap-in that would detect what OU the computer is in and be able to put it back into that same OU after import? it’s a lot to ask but why not lol
-
@anthony.delarosa I’m sure it could be done, but I don’t think anyone has set one up yet.
That said, you can use the FOG Client to join a host to a domain, including the OU.
-
@anthony.delarosa said in Hostname Change on 700+ Workstations:
@Tom-Elliott by the way, any snap-in that would detect what OU the computer is in and be able to put it back into that same OU after import?
We will have to ask @Joe-Schmitt for confirmation, but a system rename shouldn’t remove the host from AD to rename it. It should just rename it and leave it where the system was in AD/OU. I can understand (re)connecting the target computer to AD may change its OU.
You could also do this with a VBScript or powershell script to rename the system. I’ve done this before with vbscript.
-
@george1421 the problem is likely that he is deleting hosts and then importing them (I’m not sure if a CSV export stores this information). This is why I advised directly modifying the SQL database.
-
@Joe-Schmitt I agree that modifying the database directly is probably the best solution. But my question was around the mechanics of the fog client. The host rename function doesn’t touch/deal with AD does it? Its only a host rename??
-
I can assist with a script to do this - if we think it’s valuable. But I don’t think it’s really valuable to the community - what is wanted here is an edge case.
@Joe-Schmitt I know. I just gave the way that anyone could do without scripting.
-
@george1421 Here is a rough outline of what needs to be done on the database side. Understand you do this at your own risk. I’m only suggesting one way to go about it.
This concept uses a temporary table to hold both the old name and new names. Then we will export the hostid and existing host name to this temp table. This will build the structure of what we need. The mysqldump command will export the temp table with all of the data into a text file. You will have to tweak this file to insert the new names into the dump file. Next we will import that dump file back into mysql and then finally run an update command to replace the existing host name with the updated host name.
mysql -u root
USE fog; CREATE TABLE hostname_fixup ( hostID int, hostName varchar(16), newhostName varchar(16) ); INSERT INTO hostname_fixup (hostID,hostName) SELECT hostID,hostName FROM hosts; EXIT;
Export the fixup table
mysqldump -u root fog hostname_fixup > hname_fixup.sql
fixup the new host names in the dump file
remove any windows nonsense with dos2unix command
Import the database back into the fog server
mysql -u root fog < hname_fixup.sql
Login to mysql
mysql -u root
USE fog; UPDATE hosts JOIN hostname_fixup ON hosts.hostID = hostname_fixup.hostID SET hosts.hostName = hostname_fixup.newhostName; DROP TABLE hostname_fixup;
-
@george1421 Now to the sql dump file.
This is the business end of the dump file.
LOCK TABLES `hostname_fixup` WRITE; /*!40000 ALTER TABLE `hostname_fixup` DISABLE KEYS */; INSERT INTO `hostname_fixup` VALUES (1,'b8ca3ace1d1a',NULL),(4,'joebob',NULL),(3,'0800275f0038',NULL),(5,'tomcat',NULL); /*!40000 ALTER TABLE `hostname_fixup` ENABLE KEYS */; UNLOCK TABLES; /*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;
The key in this the data line.
INSERT INTO `hostname_fixup` VALUES (1,'b8ca3ace1d1a',NULL),(4,'joebob',NULL),(3,'0800275f0038',NULL),(5,'tomcat',NULL);
the VALUES is the data from the table we exported.
How I would go about this is to use notepad++ to clean up the data a bit and then import into excel. Match up the new and old names. Then export back to a text file and finally regroup into this data structure. You can change the format a bit to support the export from excel.
LOCK TABLES `hostname_fixup` WRITE; /*!40000 ALTER TABLE `hostname_fixup` DISABLE KEYS */; INSERT INTO `hostname_fixup` VALUES (1,'b8ca3ace1d1a',NULL), (4,'joebob',NULL), (3,'0800275f0038',NULL), (5,'tomcat',NULL); /*!40000 ALTER TABLE `hostname_fixup` ENABLE KEYS */; UNLOCK TABLES; /*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;
-
From what I’ve seen, when you import you can specify the OU path. Column L on my export.
Use PowerShell to get the current OU’s.
Something like:Get-ADComputer -Identity (Get-WmiObject Win32_ComputerSystem).Name | Select DistinguishedName -ExpandProperty DistinguishedName
It’ll return:
Example: CN=SaraDavisDesktop,CN=Europe,CN=Users,DC=corp,DC=contoso,DC=com
You could export that to a CSV file. Format. Sort by hostname. Copy/Paste into your import file. Then import it.
Might work. All theoretical.
-
Thanks EVERYONE! this should give me enough information on getting 700+ updated and moved over to the correct OU although I didn’t really wanna start mucking around with the DB but I’ll take a snapshot before doing so. Thanks!