国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > VBScript > 正文

用vbs確定用戶的登錄名的代碼

2020-03-24 17:57:28
字體:
來源:轉載
供稿:網友
問:
您好,腳本專家!如何確定名為 John Smith 的用戶的用戶登錄名?

-- FR

答:
您好,FR。您知道,我們很愿意告訴您如何確定名為 John Smith 的用戶的用戶登錄名,但是我們不能這樣做:因為在我們的某個樣例腳本中有一個特定的姓名列表,表示我們只能引用的用戶名。遺憾的是,John Smith 不在該列表中,因此我們不能使用他的名字。

是的,對此我們也覺得不舒服,但是我們無能為力。但是要告訴您的是:向您介紹一個確定名為 Ken Myer 的用戶的用戶登錄名的腳本怎么樣?是的,我們知道:確實不一樣,不是嗎?但我們最多只能做到這樣了:

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

您可能已經發現了,這是一個用于搜索 Active Directory 的腳本。我們不打算逐個解釋此腳本中使用的每一行代碼,那樣會花費太多時間。如果您不熟悉 Active Directory 搜索腳本,建議您看一下我們的兩篇“腳本故事”系列文章 Dude:Where's My Printer? 您在此腳本中看到的所有看起來怪怪的東西 - ADsDSOObject、DS_SCOPE_SUBTREE、ADODB.Command - 在這兩個專欄中都有詳細的解釋。

但是,我們將指出與用于進行搜索的查詢有關的幾件事情。在編寫用于搜索 Active Directory 的腳本時,最難的部分也許就是知道要搜索的屬性名。例如,您提到的用戶登錄名。我們知道用戶登錄名的意思,您也知道用戶登錄名的意思,但是 Active Directory 不知道用戶登錄名是什么。Active Directory 會改為調用 sAMAccountName。(注意:盡管字母的大小寫無關緊要,但是我們會將此屬性名寫作 sAMAccountName,僅僅是因為這是該屬性的正式名稱而已。因而,SQL 查詢將檢索指定用戶的 sAMAccountName。

那么如何指定該用戶呢?嗯,我們要查找符合以下三個條件的 Active Directory 對象:

是用戶帳戶。為了將返回的數據限制為用戶帳戶,我們要搜索 objectCategory 等于 user 的項。

名字為 Ken。當然,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'"

剩下的就很容易了。執行此查詢,Active Directory 將返回一個記錄集,該記錄集由 giveName 為 Ken 且 sn 為 Myer 的所有用戶組成。然后,設置一個 Do Until 循環來遍歷該記錄集,并回顯每個用戶的 sAMAccountName。(理想的情形為,Active Directory 中只有一個 Ken Myer,但是實際上可能會有多個同名同姓的用戶。在這種情況下,sAMAccountName 將是一個區別因素,因為 sAMAccountNames 必定是唯一的。)

明白一些了吧?好了,看(不要告訴任何人是我們說的),拿剛才向您介紹的腳本來說,用 John 替換 Ken、用 Smith 替換 Myer,您將得到用于搜索名為 John Smith 的用戶的腳本。但是,這只是您和我們之間的秘密,好嗎?好
html教程

鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: 临沭县| 蓝田县| 大安市| 永新县| 湄潭县| 西平县| 东莞市| 山西省| 临西县| 银川市| 东兰县| 定远县| 新建县| 体育| 高雄县| 百色市| 宝鸡市| 庄河市| 喀喇| 永宁县| 五峰| 三穗县| 怀宁县| 望江县| 迁安市| 金秀| 巧家县| 枣庄市| 定州市| 普定县| 陆河县| 哈尔滨市| 扶沟县| 泸水县| 崇州市| 东乌| 拉孜县| 连州市| 伊春市| 河北区| 丹凤县|