Solved

change output of ldif file

Posted on 2013-01-14
5
277 Views
Last Modified: 2013-01-16
Been searching the topics and haven't found anything and thought I would ask. I am looking for help. I have output in an ldif file that I need to read the SN and the givenName and overwrite what is in the CN with (givenName SN). This is for an ever growing number of users.

example
from
cn: BLAH
sn: LastName
givenName: FirstName

to
cn: Firstname Lastname
sn: LastName
givenName: FirstName
0
Comment
Question by:aev2061
  • 3
  • 2
5 Comments
 
LVL 16

Expert Comment

by:terencino
ID: 38778386
Hi I got this to work on the limited info I had for your LDIF file, can you test it and let me know how you go? It uses the FileSystemObject to read and write the file and the Mid function to modify the CN line. I'm not sure how LDIF files end (to stop the loop with the AtEndOfStream property), so it will probably crash at the end. If so could probably get round it with On Error
...Terry
Option Explicit
Dim objFSO, objImport, objExport
Dim Line1, Line2, Line3, Line4
Dim strImport, strExport
Set objFSO = CreateObject("Scripting.FileSystemObject")
strImport = "C:\test.ldf"
strExport = "C:\test_fix.ldf"
Set objImport = objFSO.GetFile(strImport)
Set objImport = objFSO.OpenTextFile(objImport, 1)
Set objExport = objFSO.CreateTextFile(strExport)
Do Until objImport.AtEndOfStream
	Line1 = objImport.ReadLine
	Line2 = objImport.ReadLine
	Line3 = objImport.ReadLine
	Line4 = objImport.ReadLine
	objExport.WriteLine "cn: " & Mid(Line3,12,200) & " " & Mid(Line2,5,200)
	objExport.WriteLine Line2
	objExport.WriteLine Line3
	objExport.WriteLine Line4
Loop
objImport.Close
objExport.Close

Open in new window

0
 

Author Comment

by:aev2061
ID: 38779567
Thanks for your response. Below is an output of an ldf file so you can see how 2 exports would look like and the file ends just like it is. I guess it would have help had I put a better example in my first post. As you can see better now I am try to replace the
(cn: Person1) with (cn: Bill Smith) and likewise the (cn: Person2) with (cn: Sandy Jones), etc, etc...

dn: CN=BLAH1,OU=OFFICEUSR,OU=OFFICE1,OU=AAA,OU=BB,DC=city,DC=state,DC=com
#changetype: add
objectClass: top
objectClass: person
objectClass: organizationalPerson
objectClass: user
cn: Person1
sn: Smith
givenName: Bill
displayName: Smith, Bill
sAMAccountName: Person1
userPrincipalName: Person1@city.state.com
mail: Bill.Smith@state.com

dn: CN=BLAH2,OU=OFFICEUSR,OU=OFFICE1,OU=AAA,OU=BB,DC=city,DC=state,DC=com
#changetype: add
objectClass: top
objectClass: person
objectClass: organizationalPerson
objectClass: user
cn: Person2
sn: Jones
givenName: Sandy
displayName: Jones, Sandy
sAMAccountName: Person2
userPrincipalName: Person2@city.state.com
mail: Sandy.Jones@state.com
0
 
LVL 16

Accepted Solution

by:
terencino earned 250 total points
ID: 38781015
Ok, the coding is a bit different but works fine for that sample, let me know how you go
...Terry

Option Explicit
Dim objFSO, objImport, objExport
Dim LDIFGroup
Dim strImport, strExport, i , a
Set objFSO = CreateObject("Scripting.FileSystemObject")
strImport = "C:\Users\tharvey.BBIDBCT\SkyDrive\EE\test.ldf"
strExport = "C:\Users\tharvey.BBIDBCT\SkyDrive\EE\test_fix.ldf"
Set objImport = objFSO.GetFile(strImport)
Set objImport = objFSO.OpenTextFile(objImport, 1)
Set objExport = objFSO.CreateTextFile(strExport)
On Error Resume Next
Do Until objImport.AtEndOfStream
  For i = 0 To 13 'Load 14 lines into a group
    If i = 0 Then
      LDIFGroup = objImport.ReadLine
    Else
      LDIFGroup = LDIFGroup & "|" & objImport.ReadLine
    End If
  Next 

a = Split(LDIFGroup, "|") 'convert the group to an array and split lines out

  For i = 0 To 13 'write lines to new file
    If i = 6 Then
      objExport.WriteLine "cn: " & Mid(a(8),12,200) & " " & Mid(a(7),5,200)
    Else
      objExport.WriteLine a(i)
    End If
  Next 	
Loop
objImport.Close
objExport.Close

Open in new window

0
 

Author Comment

by:aev2061
ID: 38782362
That works and helps me learn a little more on how this works!

Thanks
0
 

Author Closing Comment

by:aev2061
ID: 38782366
Thanks for the help!
0

Featured Post

Is Your Active Directory as Secure as You Think?

More than 75% of all records are compromised because of the loss or theft of a privileged credential. Experts have been exploring Active Directory infrastructure to identify key threats and establish best practices for keeping data safe. Attend this month’s webinar to learn more.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Suggested Solutions

Unlike scripting languages such as C# where a semi-colon is used to indicate the end of a command, Microsoft's VBScript language relies on line breaks to determine when a command begins and ends. As you can imagine, this quickly results in messy cod…
Hello again, all.  For those of you that have been following along, you'll know that this is my third article on this topic (though it is not Part III).  This article is sort of remedial, and probably the topic with which I should have started the s…
Get a first impression of how PRTG looks and learn how it works.   This video is a short introduction to PRTG, as an initial overview or as a quick start for new PRTG users.
Need to grow your business through quality cloud solutions? With everything required to build a cloud platform and solution, you may feel like the distance between you and the cloud is quite long. Help is here. Spend some time learning about the Con…

914 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

12 Experts available now in Live!

Get 1:1 Help Now