1
我正在寫一個腳本,需要查詢幾個域用戶最後登錄到一臺機器時。我以爲我可以用\ docs和settings \ username的最近訪問日期來做到這一點,但是我們的備份工具讓這個計劃陷入困境。查詢最後登錄日期爲多個用戶
然後我看着使用WMI_UserProfile,但只查詢本地配置文件。所以這導致我到WNI_NetworkLoginProfile,但我似乎只能得到登錄用戶的登錄日期。是否有可能使用WNI_NetworkLoginProfile查詢多個用戶的上次登錄日期,還是有其他可以查詢的內容?
On Error Resume Next
Set WshNetwork = CreateObject("Wscript.Network")
strComputer = WshNetwork.ComputerName
strDayOfMonth = Right("0" & Day(Date()),2)
strMonth = Right("0" & Month(Date()),2)
strYear = Right (Year(Date()),4)
strDate = strDayOfMonth & "/" & strMonth & "/" & strYear
oLast = DateAdd("d", -60, strDate)
Set objRegEx = CreateObject("VBScript.RegExp")
objRegEx.Global = True
objRegEx.IgnoreCase = True
objRegEx.Pattern = "NT AUTHORITY\SYSTEM|NT AUTHORITY\SYSTEM|NT AUTHORITY\LOCAL SERVICE|NT AUTHORITY\NETWORK SERVICE"
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
Set colItems = objWMIService.ExecQuery("Select * from Win32_NetworkLoginProfile")
For Each objItem in colItems
dtmAccessTime = objItem.LastLogon
strReturn = WMIDateStringToDate(dtmAccessTime)
strUsers = objItem.Name
Set colMatches = objRegEx.Execute(strUsers)
If colMatches.Count < 1 Then
strfolder = objFolder.Name
Wscript.Echo objItem.Name & " " & strReturn
End If
Next
' Format Time and Date
Function WMIDateStringToDate(dtmStart)
WMIDateStringToDate = CDate(Mid(dtmStart, 5, 2) & "/" & _
Mid(dtmStart, 7, 2) & "/" & Left(dtmStart, 4) _
& " " & Mid (dtmStart, 9, 2) & ":" & _
Mid(dtmStart, 11, 2) & ":" & Mid(dtmStart, _
13, 2))
End Function
謝謝,運行,返回所有的用戶配置文件和日期。出於某種原因,我的腳本不會 – chemist 2012-04-02 12:15:11
發佈您的腳本,讓其他人可以看看它。 – 2012-04-02 15:33:46