我是靠谱客的博主 潇洒鸡,最近开发中收集的这篇文章主要介绍导出加入域的计算机脚本,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

通过下边脚本可以把当前加入域某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( " HKLMSystemCurrentControlSetControl "  _
    
&   " TimeZoneInformationActiveTimeBias " )
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  <>   0 Then
                                        
On   Error   GoTo   0
                                        dtmDate 
=  # 1 / 1 / 1601 #
                                    
Else
                                        
On   Error   GoTo   0
                                        lngHigh 
=  objDate.HighPart
                                        lngLow 
=  objDate.LowPart
                                        
If  (lngLow  <   0 Then
                                            lngHigh 
=  lngHigh  +   1
                                        
End   If
                                        
If  (lngHigh  =   0 And  (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

 

转载于:https://www.cnblogs.com/alronzhang/archive/2010/06/09/1754640.html

最后

以上就是潇洒鸡为你收集整理的导出加入域的计算机脚本的全部内容,希望文章能够帮你解决导出加入域的计算机脚本所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(39)

评论列表共有 0 条评论

立即
投稿
返回
顶部