Share via


嗨,Scripting Guy!

嗨,Scripting Guy!

歡迎使用 TechNet 專欄,Microsoft Scripting Guys 會在此為您解答有關系統管理指令碼的常見問題。您有關於系統管理指令碼方面的問題嗎?請將電子郵件傳送到 scripter@microsoft.com。我們無法保證能夠逐一回答每個問題,不過我們會盡力而為。

還有,別忘了瞧瞧全新經過改良的嗨,Scripting Guy!過往文件

今天的問題:如何確定驗證了使用者的網域控制站名稱?


如何確定是哪個網域控制站驗證了使用者?

嗨,Scripting Guy!我要如何在登入指令碼中,確定驗證了使用者的網域控制站名稱?

-- CK

CK,您好。身為 Scripting Guy 的不成文規定之一就是,每個星期困難的事不得做超過一次 (為什麼這是不成文規定呢?主要是因為我們太懶得把它寫下來了)。在昨天的專欄中,我們處理了一個有點複雜的問題,嘗試使 IP 位址與網路連線相關聯。因為昨天的專欄很難,而 Scripting Guy 的不成文法則迫使我們不得不在今天處理一個比較簡單的問題。

所以要確定驗證登入使用者的網域控制站名稱能有多簡單呢?就如這三行程式碼一樣簡單:

Set objDomain = GetObject("LDAP://rootDSE")
strDC = objDomain.Get("dnsHostName")
Wscript.Echo "Authenticating domain controller: " & strDC

不,您不是在作夢;這真的只需要三行程式碼 (即使您是在作夢,不至於真的想要承認作了關於指令碼的夢吧?)。我們先是繫結到 rootDSE,它代表網域控制站上面 Active Directory 服務的根目錄。rootDSE 物件的存在是要提供關於網域與網域控制站的資訊;事實上,rootDSE 提供的一份資訊是 dnsHostName 屬性的值。

這可能不是最直覺的屬性名稱,不過 dnsHostName 正是驗證網域控制站的名稱。所以我們使用 Get 方法來擷取 dnsHostName 屬性的值,並將該值儲存在一個名為 strDC 的變數中。回應 strDC 的值,就能確定驗證使用者的網域控制站名稱了。

現在既然已經展示了三行指令碼,今天的工作就到此告一段落。如果您有需要什麼,我們會在家裡看 Jerry Springer 脫口秀。


如需詳細資訊

查看嗨,Scripting Guy!- 過往文件

 

回到頁首 回到頁首