Discussion:
string manipulation in vbs or vb.net
(too old to reply)
Jesper Ravn
2009-11-09 10:57:49 UTC
Permalink
Hello

Im retriving users out from a security group in Active Directory.
The output is like the string below.

StrMember = "CN=ctxadmin,OU=ITservices,OU=RootDomain,DC=company,DC=com"

How can I clean the string, so it always will list only the username.
StrMember = "ctxadmin"

Thanks,

/Jesper
Tom Lavedas
2009-11-09 12:54:49 UTC
Permalink
Post by Jesper Ravn
Hello
Im retriving users out from a security group in Active Directory.
The output is like the string below.
StrMember = "CN=ctxadmin,OU=ITservices,OU=RootDomain,DC=company,DC=com"
How can I clean the string, so it always will list only the username.
StrMember = "ctxadmin"
Thanks,
/Jesper
Maybe ...

StrMember =
"CN=ctxadmin,OU=ITservices,OU=RootDomain,DC=company,DC=com"
strMember=Replace(Split(strMember. ",")(0), "CN=", "", -1, 1)
_____________________
Tom Lavedas
Jesper Ravn
2009-11-09 13:37:23 UTC
Permalink
Post by Tom Lavedas
Post by Jesper Ravn
Hello
Im retriving users out from a security group in Active Directory.
The output is like the string below.
StrMember = "CN=ctxadmin,OU=ITservices,OU=RootDomain,DC=company,DC=com"
How can I clean the string, so it always will list only the username.
StrMember = "ctxadmin"
Thanks,
/Jesper
Maybe ...
StrMember =
"CN=ctxadmin,OU=ITservices,OU=RootDomain,DC=company,DC=com"
strMember=Replace(Split(strMember. ",")(0), "CN=", "", -1, 1)
Hi Tom

Thanks, for your suggestion, but the code sample fails. I also tried to
change "StrMember. " to "StrMember," without any luck.
I just ran the code in a VBScript file.

/Jesper
Tom Lavedas
2009-11-09 14:04:24 UTC
Permalink
Post by Jesper Ravn
Post by Tom Lavedas
Post by Jesper Ravn
Hello
Im retriving users out from a security group in Active Directory.
The output is like the string below.
StrMember = "CN=ctxadmin,OU=ITservices,OU=RootDomain,DC=company,DC=com"
How can I clean the string, so it always will list only the username.
StrMember = "ctxadmin"
Thanks,
/Jesper
Maybe ...
 StrMember =
"CN=ctxadmin,OU=ITservices,OU=RootDomain,DC=company,DC=com"
 strMember=Replace(Split(strMember. ",")(0), "CN=", "", -1, 1)
Hi Tom
Thanks, for your suggestion, but the code sample fails. I also tried to
change "StrMember. " to "StrMember," without any luck.
I just ran the code in a VBScript file.
/Jesper
Sorry, I did that from memory and without testing. There is a typo
and a missing argument (which you could have researched), but the
concept is valid. Try this ..

strMember = Replace(Split(strMember, ",")(0), "CN=", "", 1, -1, 1)

_____________________
Tom Lavedas
Jesper Ravn
2009-11-09 14:19:59 UTC
Permalink
Post by Tom Lavedas
Sorry, I did that from memory and without testing. There is a typo
and a missing argument (which you could have researched), but the
concept is valid. Try this ..
strMember = Replace(Split(strMember, ",")(0), "CN=", "", 1, -1, 1)
Hi Tom

Great, it's working now. Thanks a lot.

/Jesper
Richard Mueller [MVP]
2009-11-09 14:36:58 UTC
Permalink
Post by Jesper Ravn
Post by Tom Lavedas
Sorry, I did that from memory and without testing. There is a typo
and a missing argument (which you could have researched), but the
concept is valid. Try this ..
strMember = Replace(Split(strMember, ",")(0), "CN=", "", 1, -1, 1)
Hi Tom
Great, it's working now. Thanks a lot.
/Jesper
However, note that the result is the "Common Name" of the user, not what
most people call the username, unless the two values have been made always
the same in your environment.

The value of the "cn" attribute is the Common Name of the object. It must be
unique in the OU, but there can be several objects with the same Common Name
as long as they are in different OU's or containers. The value of the
sAMAccountName attribute is the "pre-Windows 2000 logon name" (on the
"Account" tab of ADUC). This is also referred to as the userID, username, or
NT name of the user. This must be unique in the domain.

If the cn and sAMAccountName attributes are always the same in your domain,
you can parse the Distinguished Name of the user. Otherwise, you should use
the NameTranslate object to convert the Distinguished Name into the
sAMAccountName. See this link for details:

http://www.rlmueller.net/NameTranslateFAQ.htm
--
Richard Mueller
MVP Directory Services
Hilltop Lab - http://www.rlmueller.net
--
Jesper Ravn
2009-11-09 15:01:27 UTC
Permalink
Post by Richard Mueller [MVP]
However, note that the result is the "Common Name" of the user, not what
most people call the username, unless the two values have been made always
the same in your environment.
The value of the "cn" attribute is the Common Name of the object. It must
be unique in the OU, but there can be several objects with the same Common
Name as long as they are in different OU's or containers. The value of the
sAMAccountName attribute is the "pre-Windows 2000 logon name" (on the
"Account" tab of ADUC). This is also referred to as the userID, username,
or NT name of the user. This must be unique in the domain.
If the cn and sAMAccountName attributes are always the same in your
domain, you can parse the Distinguished Name of the user. Otherwise, you
should use the NameTranslate object to convert the Distinguished Name into
http://www.rlmueller.net/NameTranslateFAQ.htm
Hi Richard

Thanks for the heads up. I will take a look at your great FAQ ressource.

/Jesper
Richard Mueller [MVP]
2009-11-09 16:06:42 UTC
Permalink
Post by Jesper Ravn
Post by Richard Mueller [MVP]
However, note that the result is the "Common Name" of the user, not what
most people call the username, unless the two values have been made
always the same in your environment.
The value of the "cn" attribute is the Common Name of the object. It must
be unique in the OU, but there can be several objects with the same
Common Name as long as they are in different OU's or containers. The
value of the sAMAccountName attribute is the "pre-Windows 2000 logon
name" (on the "Account" tab of ADUC). This is also referred to as the
userID, username, or NT name of the user. This must be unique in the
domain.
If the cn and sAMAccountName attributes are always the same in your
domain, you can parse the Distinguished Name of the user. Otherwise, you
should use the NameTranslate object to convert the Distinguished Name
http://www.rlmueller.net/NameTranslateFAQ.htm
Hi Richard
Thanks for the heads up. I will take a look at your great FAQ ressource.
/Jesper
A quick example converting a DN into sAMAccountName:
========
Option Explicit

Dim strUserDN, objTrans, strUserName

' Constants for the NameTranslate object.
Const ADS_NAME_INITTYPE_GC = 3
Const ADS_NAME_TYPE_NT4 = 3
Const ADS_NAME_TYPE_1779 = 1

' Specify user Distinguished Name.
strUserDN = "CN=ctxadmin,OU=ITservices,OU=RootDomain,DC=company,DC=com"

' Use the NameTranslate object to convert Distinguished Name
' into sAMAccountName.
Set objTrans = CreateObject("NameTranslate")

' Initialize NameTranslate by locating the Global Catalog.
objTrans.Init ADS_NAME_INITTYPE_GC, ""
' Use the Set method to specify the Distinguished Name of the object.
objTrans.Set ADS_NAME_TYPE_1779, strUserDN
' Use the Get method to retrieve the NT format of the name.
' This format is <NetBIOS-Domain-Name>\<sAMAccountName>
strUserName = objTrans.Get(ADS_NAME_TYPE_NT4)
' Remove NetBIOS name of domain.
strUserName = Mid(strUserName, InStr(strUserName, "\") + 1)

Wscript.Echo strUserName
--
Richard Mueller
MVP Directory Services
Hilltop Lab - http://www.rlmueller.net
--
Jesper Ravn
2009-11-10 11:54:29 UTC
Permalink
Post by Richard Mueller [MVP]
========
Option Explicit
Dim strUserDN, objTrans, strUserName
' Constants for the NameTranslate object.
Const ADS_NAME_INITTYPE_GC = 3
Const ADS_NAME_TYPE_NT4 = 3
Const ADS_NAME_TYPE_1779 = 1
' Specify user Distinguished Name.
strUserDN = "CN=ctxadmin,OU=ITservices,OU=RootDomain,DC=company,DC=com"
' Use the NameTranslate object to convert Distinguished Name
' into sAMAccountName.
Set objTrans = CreateObject("NameTranslate")
' Initialize NameTranslate by locating the Global Catalog.
objTrans.Init ADS_NAME_INITTYPE_GC, ""
' Use the Set method to specify the Distinguished Name of the object.
objTrans.Set ADS_NAME_TYPE_1779, strUserDN
' Use the Get method to retrieve the NT format of the name.
' This format is <NetBIOS-Domain-Name>\<sAMAccountName>
strUserName = objTrans.Get(ADS_NAME_TYPE_NT4)
' Remove NetBIOS name of domain.
strUserName = Mid(strUserName, InStr(strUserName, "\") + 1)
Wscript.Echo strUserName
Hi Richard

Nice, thanks for all your help.

/Jesper

Loading...