My Space

导航

导出加入域的计算机脚本

通过下边脚本可以把当前加入域某OU下的计算机导出到“计算机列表.csv ”文件中,导出的计算机信息包括机器名,dNSHostName,最后登录时间等属性。

'Define constants
'
CONST ForReading                    = 1    
CONST ForWriting                    = 2    
CONST ForAppending                    = 8 
CONST CONST_ERROR                   = 0
CONST CONST_WSCRIPT                 = 1
CONST CONST_CSCRIPT                 = 2
CONST CONST_SHOW_USAGE              = 3
CONST CONST_LIST                    = 4
Const ADS_SCOPE_SUBTREE                = 2
Const ADS_UF_DONT_EXPIRE_PASSWD        = 65536
Const ADS_UF_PASSWORD_EXPIRED        = 8388608 
Const E_ADS_PROPERTY_NOT_FOUND  = &h8000500D
Const ONE_HUNDRED_NANOSECOND    = .000000100
Const SECONDS_IN_DAY            = 86400

Dim lastLogin
'''''''''''''''''''''''''
Set objShell = CreateObject("Wscript.Shell")
lngBiasKey 
= objShell.RegRead("HKLM\System\CurrentControlSet\Control\" _
    
& "TimeZoneInformation\ActiveTimeBias")
If (UCase(TypeName(lngBiasKey)) = "LONG"Then
    lngBias 
= lngBiasKey
ElseIf (UCase(TypeName(lngBiasKey)) = "VARIANT()"Then
    lngBias 
= 0
    
For k = 0 To UBound(lngBiasKey)
        lngBias 
= lngBias + (lngBiasKey(k) * 256^k)
    
Next
End If
Set objShell = Nothing

'''''''''''''''''''''''''

inputOU
=inputbox("请输入所需查询计算机的OU,该OU必须位于Machines的下一层,不输入为查询所有计算机","输入信息")
Outputfile
= strDCName1 & "计算机列表"
Set FSO = CreateObject("Scripting.FileSystemObject")
Set fLog = fso.OpenTextFile(Outputfile & inputOU & ".csv", ForWriting,TRUE)
fLog.WriteLine 
"机器名,dNSHostName,最后登录时间"

Set rootDSE = GetObject("LDAP://rootDSE")
BaseDN 
= rootDSE.Get("defaultNamingContext")
DC
= replace(BaseDN,"DC=",",")
DC
= replace(DC,",,",".")
DC
=right(DC,len(DC)-1)

TARGET_OU
= "Machines"

if inputOU<>"" then
    TARGET_OU
= inputOU & ",OU=" & TARGET_OU
end if

inputdate
=0       

Set objConnection = CreateObject("ADODB.Connection")

objConnection.Provider 
= "ADsDSOObject" 
objConnection.Open 
"Active Directory Provider"
Set objCommand = CreateObject("ADODB.Command")
Set objCommand.ActiveConnection = objConnection
Set objCommand1 = CreateObject("ADODB.Command")
Set objCommand1.ActiveConnection = objConnection
'on error resume next
 
    objCommand.CommandText 
= "<LDAP://" & DC & "/OU=" & TARGET_OU & "," & BaseDN & ">;(&(objectclass=Computer));cn,ADsPath;subtree"
    
Set objRecordSet = objCommand.Execute
    
if err.number<>0 then 
        
msgbox "无法找到:" & TARGET_OU 
    
end if
    wscript.echo 
"Begin:"
    
If objRecordSet.RecordCount>0 Then
        objRecordSet.MoveFirst
        
Do Until objRecordSet.EOF                    
                               
                                    
On Error Resume Next
                                    adspath
=objRecordSet.Fields("adspath")
                                    ShowMSG  adspath
                    
Set objComputer = GetObject(adspath)
                    lastName
=objComputer.dNSHostName
                                computername
=objComputer.Name
                    computername
=replace(computername,"CN=","")  
                    
Set objDate = objComputer.lastLogonTimeStamp
                                    
If (Err.Number <> 0Then
                                        
On Error GoTo 0
                                        dtmDate 
= #1/1/1601#
                                    
Else
                                        
On Error GoTo 0
                                        lngHigh 
= objDate.HighPart
                                        lngLow 
= objDate.LowPart
                                        
If (lngLow < 0Then
                                            lngHigh 
= lngHigh + 1
                                        
End If
                                        
If (lngHigh = 0And (lngLow = 0 ) Then
                                            dtmDate 
= #1/1/1601#
                                        
Else
                                            dtmDate 
= #1/1/1601+ (((lngHigh * (2 ^ 32)) _
                                                
+ lngLow)/600000000 - lngBias)/1440
                                        
End If
                                    
End If
                                    lastLogin
=dtmDate
                                    fLog.WriteLine computername 
& ","  & lastName & ","  & lastLogin
                                     
                                    
            objRecordSet.MoveNext
        
Loop
    
End If
 
wscript.echo 
"Count:" & i 

Sub ShowMSG(strSubMSG)
    Wscript.Echo 
Time & vbTab & strSubMSG     
end sub

 

posted on 2010-06-09 12:14  alronzhang  阅读(1030)  评论(0编辑  收藏  举报