WMI scripting template that runs the script against all the computers found in the domain fabrikam.com. This script prompts you to enter a user name and password to be used when connecting to the remote computers.

Visual Basic
Edit|Remove
On Error Resume Next

Const WbemAuthenticationLevelPktPrivacy = 6

strCredentials = InputBox _
    ("Please enter the user name, a blank space, and then the password:", _
        "Enter User Credentials")

If strCredentials = "" Then
    Wscript.Quit
End If

arrCredentials = Split(strCredentials," ")
strUser = arrCredentials(0)
strPassword = arrCredentials(1)
strNamespace = "root\cimv2"

Const ADS_SCOPE_SUBTREE = 2

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

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

objCommand.CommandText = _
    "SELECT CN FROM 'LDAP://dc=fabrikam,dc=com' WHERE objectCategory='computer'"  
Set objRecordSet = objCommand.Execute

objRecordSet.MoveFirst

Do Until objRecordSet.EOF
    strComputer = objRecordSet.Fields("Name").Value

    Set objWbemLocator = CreateObject("WbemScripting.SWbemLocator")
    Set objWMIService = objwbemLocator.ConnectServer _
        (strComputer, strNamespace, strUser, strPassword)
    objWMIService.Security_.authenticationLevel = WbemAuthenticationLevelPktPrivacy


    ' =====================================================================
    ' Insert your code here
    ' =====================================================================

    Set colItems = objWMIService.ExecQuery _
        ("Select * From Win32_OperatingSystem")
    For Each objItem in ColItems
        Wscript.Echo strComputer & ": " & objItem.Caption
    Next

    ' =====================================================================
    ' End
    ' =====================================================================

    objRecordSet.MoveNext
Loop