剛使用Active Directory的常見問題(2)

剛使用Active Directory的常見問題(二)。我們使用windows 2003 AD。如何檢查我的網絡內部的客戶端電腦:
1、已經加入域
2、並且用戶也使用域賬戶登陸了機器。

回答:1、如何檢查客戶端電腦已經加入網域。
在服務器端檢查:您可以在DC上的管理員工具中運行Active Directory Users and Computers,展開域節點,展開Computers,初始所有的加入域的計算機都會列在這個節點下。在客戶端檢查: 打開我的電腦的屬性值,切換到“Computer Name”,您會看到當前計算機屬於域或工作組。您看到的文章來自活動目錄seo http://gnaw0725.blogbus.com/c1404552/

2、並且用戶也使用域賬戶登陸了機器。
回答:您可以通過auditing policy來監控當前域用戶登錄的相關信息。具體信息請參考以下文檔:

Audit logon events
http://technet2.microsoft.com/windowsserver/en/library/6847e72b-9c47-42ab-b3e3-691addac9f331033.mspx?mfr=true

Chapter 3: Audit Policy
http://www.microsoft.com/technet/security/guidance/serversecurity/tcg/tcgch03n.mspx

1、 用戶加入域的機器名會保存在 computers OU中,但是當用戶退出網域,此OU並不更新,仍然會保留該電腦名。(所以,我們判斷此OU中的成員是加入過網域的機器,但是當前是否仍在域中,如何判斷呢?)您看到的文章來自活動目錄seo http://gnaw0725.blogbus.com/c1404552/
答:如果該計算機被正常退出domain加入workgroup中的話,它會顯示爲disable(標有紅X)的狀態。同時,您也可以使用dsquery命令找出當前domain中有多少臺機器幾周內沒有登錄域
dsquery computer -inactive <NumWeeks>
該命令會找出當前domain中至少NumWeeks個禮拜沒有登錄過域的機器。

2、我想了解誰登入了網域,需要查log,這各方法不是很方便。我們人員很多,查起來會比較繁瑣。而且log日至需要每一條都進入才能看到內容,並不能提煉成一個登入網域的人員列表。
答:同樣您可以通過dsquery檢查當前domain中至少NumWeeks個禮拜沒有登錄過域的用戶
dsquery user -inactive <NumWeeks>

3、我們有辦法可以強制要求用戶加入網域或登入玉帳號嗎?
答:如果用戶知道該計算機本地管理員帳號的密碼,那麼您的要求恐怕無法達到。

4、以及,我可以提煉出加入網域的電腦名稱,登入網域的帳戶名稱,的列表進行公告與報告用途嗎?(圖和提煉名單列表?
答:沒有直接的方法滿足您的需求,您需要寫script,同時您可以參考Wen共享腳本。您看到的文章來自活動目錄seo http://gnaw0725.blogbus.com/c1404552/

Vicky Hu 胡曉潔 微軟全球技術支持中心

你好,希望下面的方法對你有用。
1、活動目錄的dsquery命令似乎可以滿足你的需要,但是好像是要在純2003的域功能級別,本想給你個工具,太大新聞組發不了;
2、給你個腳本,可以導出最近30天沒有登錄的用戶到Excel文件,時間你可自己定義,見附件;
3、如果用戶沒有本地計算機用戶帳號的密碼,那他就不能登錄到本地了,通過腳本更改用戶的本地帳號密碼;
4、第2點應該已經可以滿足你的需求;

---不包含此行---
' Assign Variables

Dim DomainString, fso, DomianObj, UserDel, C, Code
Dim ChkLast, UserObj, Flag, s

' Create Object for File System Access您看到的文章來自活動目錄seo http://gnaw0725.blogbus.com/c1404552/

set fso = CreateObject ("Scripting.FileSystemObject")

' Set Domain Name
DomainString = "overmcse.com" 'Modify this line or this script wont work

' Open ADSI and connect to Domain user data

Set DomainObj = GetObject("WinNT://" & DomainString)
DomainObj.Filter = Array("user")

' Insure that file does not already exist

IF fso.FileExists ("C:/temp/USER.TSV") THEN
     set USERDel = fso.GetFile ("C:/TEMP/USER.TSV")
     USERDel.Delete
End IF

' Create File in temp directory

set C = fso.CreateTextFile ("C:/TEMP/USER.TSV", True)

on error resume next

' Add collumn headings to new file

C.WriteLine "Name" & vbTab & "Description" & vbTab & "FullName" & _
     vbTab & "LastLogin" & vbTab & "PasswordExpirationDate" & _
     vbTab & "IsAccountLocked" & vbTab & "Class" & vbTab & "UserFlags"

' List all users

For Each UserObj In DomainObj
     ChkLast = UserObj.LastLogin ' ChkLast is used to determine the last logon time.
     IF (ChkLast < (Date - 30) OR ChkLast = NULL ) AND UserObj.UserFlags <> 661103 AND UserObj.UserFlags <> 515 THEN
          s = CHR(34) & UserObj.Name & CHR (34)
          s = s & vbTab
          s = s & CHR (34) & UserObj.Description & CHR (34)
          s = s & vbTab
          s = s & UserObj.FullName
          s = s & vbTab
          s = s & UserObj.LastLogin
          s = s & vbTab
          s = s & CHR (34) & UserObj.PasswordExpirationDate & CHR (34)
          s = s & vbTab
          s = s & CHR (34) & UserObj.IsAccountLocked & CHR (34)
          s = s & vbTab
          s = s & CHR (34) &UserObj.Class & CHR (34)
          s = s & vbTab

' Convert Flags to more undersandable terms.

               Flag = UserObj.UserFlags
               IF Flag = 66113 THEN
                    Code = "Password never expires and user cannot change password"
               ELSEIF Flag = 66115 THEN
                    Code = "Account is Disabled"
               ELSEIF     Flag = 577 THEN
                    Code = "Account is not setup right, login not possible"
               ELSEIF Flag = 515 THEN
                    Code = "Account is disabled and user must change password at next logon"
               ELSEIF Flag = 513 THEN
                    Code = "Account has no flags set. User is active"
               ELSEIF Flag = 66049 THEN
                    Code = "Password Does Not expire"
               ELSE
                    Code = "Unknown Code"
               END IF

          s = s & CHR (34) & Code & CHR (34)
          C.WriteLine s ' Write new line to file.
     End IF
Next ' Repeat for all users

Wscript.Quit

---不包含此行---

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章