嗨,Scripting Guy!

嗨,Scripting Guy!

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

今天的問題: 如何在使用者每次登入時,變更使用者和電腦帳戶的 Description 屬性?


如何在使用者每次登入時,變更使用者和電腦帳戶的 Description 屬性?

嗨,Scripting Guy! 我要如何在使用者每次登入時,變更使用者和電腦帳戶的 Description 屬性?我希望 Description 能夠指出有誰登入,以及何時登入。

-- GG

GG,您好。這問題問得好!我們經常被問到這個問題:「如何取得我所有電腦的清單,以及如何知道有誰登入這些電腦?」說實話,還真的沒什麼好方法呢。對於這個問題,我們只能提供一個還算不錯的解答:您只要查詢 Active Directory,請它傳回一份電腦 (或使用者) 清單以及 Description 屬性,就能得到您要的清單了。

不過,我們得先提出幾個警告。首先,您得將它設定為登入指令碼;不過這得靠您自己完成,沒人幫得上忙。另外,還必須確定所有的使用者都有權變更自己帳戶和電腦帳戶的 Description 屬性。差不多就是這樣,不過在實作這個解決方案之前,一定要先仔細檢查才行。

好,現在就來看看這個指令碼,它會在使用者每次登入時,同時變更 Active Directory 使用者帳戶和電腦帳戶的 Description 屬性:

Set objSysInfo = CreateObject("ADSystemInfo")
Set objUser = GetObject("LDAP://" & objSysInfo.UserName)
Set objComputer = GetObject("LDAP://" & objSysInfo.ComputerName)
strMessage = objUser.CN & " logged on to " & objComputer.CN & " " & Now & "."
objUser.Description = strMessage
objUser.SetInfo
objComputer.Description = strMessage
objComputer.SetInfo

我們先為 ADSystemInfo 建立一個執行個體,這是一個 Active Directory 類別,可以傳回許多有關目前使用者和電腦的資訊,相當有用 (如果需要一個指令碼,列出所有可以利用 ADSystemInfo 傳回的資料,請按一下這裡)。然後再利用這個物件的 UserNameComputerName 內容,建立一對物件參考,其中一個 (objUser) 會將我們繫結到登入使用者的 Active Directory 帳戶,另一個 (objComputer) 則繫結到電腦的 Active Directory 帳戶。

接下來就建立我們希望寫到 Description 屬性的字串。不用我多說,您一看就知道可以在這個屬性寫上任何東西;在此我們選擇的是使用者 CN、電腦 CN 以及目前日期和時間的組合 (另外再加上幾個字,把它湊成一個句子)。下面就是程式碼的內容:

strMessage = objUser.CN & " logged on to " & objComputer.CN & " " & Now & "."

最後,就構成如下所示的說明:

Ken Myer logged on to atl-ws-01 4/25/2005 8:04:54 AM

所以,如果您問我將 Description 設為這個字串的真正推手是誰?我的回答是,就是下面這兩行程式碼,為登入的使用者設定 Description:

objUser.Description = strMessage
objUser.SetInfo

它所做的,就是在使用者帳戶的本機快取版本上設定 Description,然後利用 SetInfo 方法,將這項資訊寫回 Active Directory (不知道本機快取版本是什麼嗎?如需詳細資訊,請參閱《Microsoft Windows 2000 Scripting Guide》(英文) 的相關部分)。接下來我們就用類似的程式碼,設定電腦帳戶的 Description:

objComputer.Description = strMessage
objComputer.SetInfo

另外,您還可以加入一個登出指令碼,來清除 Description 或變更訊息 (例如,Ken Myer 在 2005 年 4 月 25 日上午 8:04:54 登入 atl-ws-01)。這樣一來,就可以同時追蹤哪些使用者登入哪些電腦,哪些使用者根本沒登入,以及哪些電腦目前沒有使用者。

這個點子真不賴耶,GG。連我們如果早點想出來就好了!


如需詳細資訊

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

 

回到頁首 回到頁首