剛使用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
---不包含此行---