用vbs確定用戶的登錄名的代碼
									問: 
您好,腳本專家!如何確定名為 John Smith 的用戶的用戶登錄名? 
-- FR 
答: 
您好,F(xiàn)R。您知道,我們很愿意告訴您如何確定名為 John Smith 的用戶的用戶登錄名,但是我們不能這樣做:因?yàn)樵谖覀兊哪硞€(gè)樣例腳本中有一個(gè)特定的姓名列表,表示我們只能引用的用戶名。遺憾的是,John Smith 不在該列表中,因此我們不能使用他的名字。 
是的,對(duì)此我們也覺得不舒服,但是我們無能為力。但是要告訴您的是:向您介紹一個(gè)確定名為 Ken Myer 的用戶的用戶登錄名的腳本怎么樣?是的,我們知道:確實(shí)不一樣,不是嗎?但我們最多只能做到這樣了: 
On Error Resume Next 
Const ADS_SCOPE_SUBTREE = 2 
Set objConnection = CreateObject("ADODB.Connection") 
Set objCommand =   CreateObject("ADODB.Command") 
objConnection.Provider = "ADsDSOObject" 
objConnection.Open "Active Directory Provider" 
Set objCommand.ActiveConnection = objConnection 
objCommand.Properties("Page Size") = 1000 
objCommand.Properties("Searchscope") = ADS_SCOPE_SUBTREE  
objCommand.CommandText = _ 
    "SELECT sAMAccountName FROM 'LDAP://dc=fabrikam,dc=com' WHERE objectCategory='user' " & _ 
        "AND givenName='Ken' AND sn='Myer'" 
Set objRecordSet = objCommand.Execute 
objRecordSet.MoveFirst 
Do Until objRecordSet.EOF 
    Wscript.Echo objRecordSet.Fields("sAMAccountName").Value 
    objRecordSet.MoveNext 
Loop 
您可能已經(jīng)發(fā)現(xiàn)了,這是一個(gè)用于搜索 Active Directory 的腳本。我們不打算逐個(gè)解釋此腳本中使用的每一行代碼,那樣會(huì)花費(fèi)太多時(shí)間。如果您不熟悉 Active Directory 搜索腳本,建議您看一下我們的兩篇“腳本故事”系列文章 Dude:Where's My Printer? 您在此腳本中看到的所有看起來怪怪的東西 - ADsDSOObject、DS_SCOPE_SUBTREE、ADODB.Command - 在這兩個(gè)專欄中都有詳細(xì)的解釋。 
但是,我們將指出與用于進(jìn)行搜索的查詢有關(guān)的幾件事情。在編寫用于搜索 Active Directory 的腳本時(shí),最難的部分也許就是知道要搜索的屬性名。例如,您提到的用戶登錄名。我們知道用戶登錄名的意思,您也知道用戶登錄名的意思,但是 Active Directory 不知道用戶登錄名是什么。Active Directory 會(huì)改為調(diào)用 sAMAccountName。(注意:盡管字母的大小寫無關(guān)緊要,但是我們會(huì)將此屬性名寫作 sAMAccountName,僅僅是因?yàn)檫@是該屬性的正式名稱而已。因而,SQL 查詢將檢索指定用戶的 sAMAccountName。 
那么如何指定該用戶呢?嗯,我們要查找符合以下三個(gè)條件的 Active Directory 對(duì)象: 
• 是用戶帳戶。為了將返回的數(shù)據(jù)限制為用戶帳戶,我們要搜索 objectCategory 等于 user 的項(xiàng)。 
• 名字為 Ken。當(dāng)然,Active Directory 不知道什么是“名字”。因此,我們需要搜索 givenName 為 Ken 的用戶。 
• 姓氏為 Myer。正如您所料,Active Directory 也從未聽說過“姓氏”一詞。因此,我們需要改為搜索 sn(姓)Myer。 
將以上所有條件加起來,查詢最后將如下所示: 
objCommand.CommandText = _ 
    "SELECT sAMAccountName FROM 'LDAP://dc=fabrikam,dc=com' WHERE objectCategory='user' " & _ 
        "AND givenName='Ken' AND sn='Myer'" 
剩下的就很容易了。執(zhí)行此查詢,Active Directory 將返回一個(gè)記錄集,該記錄集由 giveName 為 Ken 且 sn 為 Myer 的所有用戶組成。然后,設(shè)置一個(gè) Do Until 循環(huán)來遍歷該記錄集,并回顯每個(gè)用戶的 sAMAccountName。(理想的情形為,Active Directory 中只有一個(gè) Ken Myer,但是實(shí)際上可能會(huì)有多個(gè)同名同姓的用戶。在這種情況下,sAMAccountName 將是一個(gè)區(qū)別因素,因?yàn)?nbsp;sAMAccountNames 必定是唯一的。) 
明白一些了吧?好了,看(不要告訴任何人是我們說的),拿剛才向您介紹的腳本來說,用 John 替換 Ken、用 Smith 替換 Myer,您將得到用于搜索名為 John Smith 的用戶的腳本。但是,這只是您和我們之間的秘密,好嗎?好 
									
上一篇:用vbs讀取遠(yuǎn)程計(jì)算機(jī)上的文本文件的代碼
欄 目:vb
下一篇:使用vbscript腳本在表單中進(jìn)行選擇的代碼
本文標(biāo)題:用vbs確定用戶的登錄名的代碼
本文地址:http://www.jygsgssxh.com/a1/vb/7868.html
您可能感興趣的文章
- 01-10下載文件到本地運(yùn)行的vbs
 - 01-10VBS中的正則表達(dá)式的用法大全 <font color=red>原創(chuàng)&
 - 01-10VBS中SendKeys的基本應(yīng)用
 - 01-10VBScript教程 第十一課深入VBScript
 - 01-10用VBSCRIPT控制ONSUBMIT事件
 - 01-10VBScript語法速查及實(shí)例說明
 - 01-10VBS中Select CASE的其它用法
 - 01-10VBScript教程 第七課使用條件語句
 - 01-10vbscript 可以按引用傳遞參數(shù)嗎?
 - 01-10VBScript教程 第二課在HTML頁面中添加VBscript代碼
 


閱讀排行
本欄相關(guān)
- 01-10下載文件到本地運(yùn)行的vbs
 - 01-10飄葉千夫指源代碼,又稱qq刷屏器
 - 01-10SendKeys參考文檔
 - 01-10什么是一個(gè)高效的軟件
 - 01-10VBS中的正則表達(dá)式的用法大全 &l
 - 01-10exe2swf 工具(Adodb.Stream版)
 - 01-10VBS中SendKeys的基本應(yīng)用
 - 01-10用VBSCRIPT控制ONSUBMIT事件
 - 01-10VBScript教程 第十一課深入VBScript
 - 01-10VBScript語法速查及實(shí)例說明
 
隨機(jī)閱讀
- 04-02jquery與jsp,用jquery
 - 01-10SublimeText編譯C開發(fā)環(huán)境設(shè)置
 - 01-11ajax實(shí)現(xiàn)頁面的局部加載
 - 08-05織夢(mèng)dedecms什么時(shí)候用欄目交叉功能?
 - 08-05DEDE織夢(mèng)data目錄下的sessions文件夾有什
 - 01-10C#中split用法實(shí)例總結(jié)
 - 01-10delphi制作wav文件的方法
 - 01-10使用C語言求解撲克牌的順子及n個(gè)骰子
 - 08-05dedecms(織夢(mèng))副欄目數(shù)量限制代碼修改
 - 01-11Mac OSX 打開原生自帶讀寫NTFS功能(圖文
 


