Solved

change output of ldif file

Posted on 2013-01-14
5
276 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

How to run any project with ease

Manage projects of all sizes how you want. Great for personal to-do lists, project milestones, team priorities and launch plans.
- Combine task lists, docs, spreadsheets, and chat in one
- View and edit from mobile/offline
- Cut down on emails

Join & Write a Comment

Script to copy or move mouse-selected collection of files plus targets referenced by shortcuts (.lnk) The purpose of this article is to help illuminate the real challenges and options available (where they may exist) for utilizing simple scriptin…
Introduction During my participation as a VBScript contributor at Experts Exchange, one of the most common questions I come across is this: "I have a script that runs against only one computer. How can I make it run against a list of computers in …
Internet Business Fax to Email Made Easy - With eFax Corporate (http://www.enterprise.efax.com), you'll receive a dedicated online fax number, which is used the same way as a typical analog fax number. You'll receive secure faxes in your email, fr…
You have products, that come in variants and want to set different prices for them? Watch this micro tutorial that describes how to configure prices for Magento super attributes. Assigning simple products to configurable: We assigned simple products…

746 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

13 Experts available now in Live!

Get 1:1 Help Now