注册 登录
编程论坛 VB6论坛

VB6写WMI查询网路域內电脑并自动生成清单的问题

wube 发布于 2016-12-08 17:29, 2139 次点击
1.最快的方法是上AD将电脑清单汇出,但是问题是AD上的电脑清单不完全〜
  因为用了2012的一个BUG快速转移AD控制站〜这问题日后会慢慢解决〜

  不知道有没有方法是能查询到同域名的全部主机〜不透过查询AD内资料?
  当然扫指定段落的全部IP地址再反查主机名称和域名是最后手段~
  希望有更好的使用WMI的解决方法~

-------------------------------------------------------------------

2.网路上找到一段代码可以停用太久没使用的使用者帐户〜
  不知怎麼改成停用太久没使用的使用者电脑〜

程序代码:
on error resume next
Set objRootDSE = GetObject("LDAP://rootDSE")
Domain=objRootDSE.Get("defaultNamingContext")
Const ADS_SCOPE_SUBTREE = 2
Const adOpenStatic = 3
Const adLockOptimistic = 3
Const adUseClient = 3

Set AD_Connection = CreateObject("ADODB.Connection")
Set objCommand =   CreateObject("")
AD_Connection.Provider = "ADsDSOObject"
AD_Connection.Open "Active Directory Provider"
Set objCommand.ActiveConnection = AD_Connection

objCommand.Properties("Page Size") = 10000
objCommand.Properties("Searchscope") = ADS_SCOPE_SUBTREE


= _
    "SELECT sAMAccountName,cn,department,adspath FROM 'LDAP://""' WHERE objectCategory='computer'"

Set ADRecordSet = objCommand.Execute

ADRecordSet.MoveFirst

Do Until ADRecordSet.EOF
    strPath = ADRecordSet.Fields("AdsPath").Value
    ComputerCN = ADRecordSet.Fields("CN").Value
    If InStr(strPath,"Domain Controllers")=0 Then

    Set objPC = GetObject(strPath)
    Set objLastLogon = objPC.Get("lastLogon")

        intLastLogonTime = objLastLogon.HighPart * (2^32) + objLastLogon.LowPart

    intLastLogonTime = intLastLogonTime / (60 * 10000000)

    intLastLogonTime = intLastLogonTime / 1440

    StrTime = intLastLogonTime + #1/1/1601#

    dtmEndingDate = strTime

    intDays = DateDiff("d", dtmEndingDate, Now)


    If (intDays > 60) Then

        ' 停用 60 天以上未登入的电脑帐户

        WScript.Echo "停用 " & ComputerCN & " " & strTime & " " & Intdays

        objPC.AccountDisabled = True

        objPC.SetInfo

    End If

    end If
    ADRecordSet.MoveNext
Loop

AMS_cpf_cpyRecordset.Close
ADRecordSet.close

试过能用〜
5 回复
#2
xiangyue05102016-12-08 18:55
赞一个
#3
wube2016-12-09 10:06
以下是引用xiangyue0510在2016-12-8 18:55:14的发言:

赞一个

我是来问问题的~不是来分享程式的耶~
#4
xiangyue05102016-12-09 14:07
回复 3楼 wube
不好意思,没有注意看。 你最后有
试过能用〜
还以为自己解决了分享出来的
AD域VB的代码比较少,我自己之前也没有接触过。看其他的版主是否能帮你了
#5
风吹过b2016-12-09 20:24
局域网搜索计算机方面没接触过,
域,用都没用过。。。。
下次来用用,需要什么设置?
server: WIN2003

#6
wube2016-12-12 14:29
以下是引用风吹过b在2016-12-9 20:24:54的发言:

局域网搜索计算机方面没接触过,
域,用都没用过。。。。
下次来用用,需要什么设置?
server: WIN2003
 

WMI在Windows系统全都能用~不用另外装编译器~
用来管理或检视或设置Windows系统用的~
可以直接运行~也可以写在VB6中去运行~

权限够大的话~也可以把别人的电脑搞得半死不活~
1