VBS samples
https://www.vbsedit.com/scripts/default.asp
Must Watch!
MustWatch
Copy an Active Directory Computer Account
https://www.vbsedit.com/scripts/default.asp
Set objCompt = _
GetObject("LDAP://cn=Computers,dc=NA,dc=fabrikam,dc=com")
Set objComptCopy = objCompt.Create("computer", "cn=SEA-SQL-01")
objComptCopy.Put "sAMAccountName", "sea-sql-01"
objComptCopy.SetInfo
Set objComptTemplate = GetObject _
("LDAP://cn=SEA-PM-01,cn=Computers,dc=NA,dc=fabrikam,dc=com")
arrAttributes = Array("description", "location")
https://www.vbsedit.com/scripts/default.asp
For Each strAttr
ib in arrAttributes
strValue = objComptTemplate.Get(strAttrib)
objComptCopy.Put strAttrib, strValue
Next
objComptCopy.SetInfo
Create a Computer Account For a Specific User
strComputer = "atl-pro-002"
strComputerUser = "fabrikam\lewjudy"
Const ADS_UF_PASSWD_NOTREQD = &h0020
Const ADS_UF_WORKSTATION_TRUST_ACCOUNT = &h1000
Const ADS_ACETYPE_ACCESS_ALLOWED = &h0
Const ADS_ACETYPE_ACCESS_ALLOWED_OBJECT = &h5
Const ADS_FLAG_OBJECT_TYPE_PRESENT = &h1
Const ADS_RIGHT_GENERIC_READ = &h80000000
Const ADS_RIGHT_DS_SELF = &h8
Const ADS_RIGHT_DS_WRITE_PROP = &h20
Const ADS_RIGHT_DS_CONTROL_ACCESS = &h100
Const ALLOWED_TO_AUTHENTICATE = _
"{68B1D179-0D15-4d4f-AB71-46152E79A7BC}"
Const RECEIVE_AS = "{AB721A56-1E2f-11D0-9819-00AA0040529B}"
Const SEND_AS = "{AB721A54-1E2f-11D0-9819-00AA0040529B}"
Const USER_CHANGE_PASSWORD = _
"{AB721A53-1E2f-11D0-9819-00AA0040529b}"
Const USER_FORCE_CHANGE_PASSWORD = _
"{00299570-246D-11D0-A768-00AA006E0529}"
Const USER_ACCOUNT_RESTRICTIONS = _
"{4C164200-20C0-11D0-A768-00AA006E0529}"
Const VALIDATED_DNS_HOST_NAME = _
"{72E39547-7B18-11D1-ADEF-00C04FD8D5CD}"
Const VALIDATED_SPN = "{F3A64788-5306-11D1-A9C5-0000F80367C1}"
Set objRootDSE = GetObject("LDAP://rootDSE")
Set objContainer = GetObject("LDAP://cn=Computers," & _
objRootDSE.Get("defaultNamingContext"))
Set objComputer = objContainer.Create _
("Computer", "cn=" & strComputer)
objComputer.Put "sAMAccountName", strComputer & "$"
objComputer.Put "userAccountControl", _
ADS_UF_PASSWD_NOTREQD Or ADS_UF_WORKSTATION_TRUST_ACCOUNT
objComputer.SetInfo
Set objSecurityDescriptor = objComputer.Get("ntSecurityDescriptor")
Set objDACL = objSecurityDescriptor.DiscretionaryAcl
Set objACE1 = CreateObject("AccessControlEntry")
objACE1.Trustee= strComputerUser
objACE1.AccessMask = ADS_RIGHT_GENERIC_READ
objACE1.AceFlags = 0
objACE1.AceType= ADS_ACETYPE_ACCESS_ALLOWED
Set objACE2 = CreateObject("AccessControlEntry")
objACE2.Trustee= strComputerUser
objACE2.AccessMask = ADS_RIGHT_DS_CONTROL_ACCESS
objACE2.AceFlags = 0
objACE2.AceType= ADS_ACETYPE_ACCESS_ALLOWED_OBJECT
objACE2.Flags= ADS_FLAG_OBJECT_TYPE_PRESENT
objACE2.ObjectType = ALLOWED_TO_AUTHENTICATE
Set objACE3 = CreateObject("AccessControlEntry")
objACE3.Trustee= strComputerUser
objACE3.AccessMask = ADS_RIGHT_DS_CONTROL_ACCESS
objACE3.AceFlags = 0
objACE3.AceType= ADS_ACETYPE_ACCESS_ALLOWED_OBJECT
objACE3.Flags= ADS_FLAG_OBJECT_TYPE_PRESENT
objACE3.ObjectType = RECEIVE_AS
Set objACE4 = CreateObject("AccessControlEntry")
objACE4.Trustee= strComputerUser
objACE4.AccessMask = ADS_RIGHT_DS_CONTROL_ACCESS
objACE4.AceFlags = 0
objACE4.AceType= ADS_ACETYPE_ACCESS_ALLOWED_OBJECT
objACE4.Flags= ADS_FLAG_OBJECT_TYPE_PRESENT
objACE4.ObjectType = SEND_AS
Set objACE5 = CreateObject("AccessControlEntry")
objACE5.Trustee= strComputerUser
objACE5.AccessMask = ADS_RIGHT_DS_CONTROL_ACCESS
objACE5.AceFlags = 0
objACE5.AceType= ADS_ACETYPE_ACCESS_ALLOWED_OBJECT
objACE5.Flags= ADS_FLAG_OBJECT_TYPE_PRESENT
objACE5.ObjectType = USER_CHANGE_PASSWORD
Set objACE6 = CreateObject("AccessControlEntry")
objACE6.Trustee= strComputerUser
objACE6.AccessMask = ADS_RIGHT_DS_CONTROL_ACCESS
objACE6.AceFlags = 0
objACE6.AceType= ADS_ACETYPE_ACCESS_ALLOWED_OBJECT
objACE6.Flags= ADS_FLAG_OBJECT_TYPE_PRESENT
objACE6.ObjectType = USER_FORCE_CHANGE_PASSWORD
Set objACE7 = CreateObject("AccessControlEntry")
objACE7.Trustee= strComputerUser
objACE7.AccessMask = ADS_RIGHT_DS_WRITE_PROP
objACE7.AceFlags = 0
objACE7.AceType= ADS_ACETYPE_ACCESS_ALLOWED_OBJECT
objACE7.Flags= ADS_FLAG_OBJECT_TYPE_PRESENT
objACE7.ObjectType = USER_ACCOUNT_RESTRICTIONS
Set objACE8 = CreateObject("AccessControlEntry")
objACE8.Trustee= strComputerUser
objACE8.AccessMask = ADS_RIGHT_DS_SELF
objACE8.AceFlags = 0
objACE8.AceType= ADS_ACETYPE_ACCESS_ALLOWED_OBJECT
objACE8.Flags= ADS_FLAG_OBJECT_TYPE_PRESENT
objACE8.ObjectType = VALIDATED_DNS_HOST_NAME
Set objACE9 = CreateObject("AccessControlEntry")
objACE9.Trustee= strComputerUser
objACE9.AccessMask = ADS_RIGHT_DS_SELF
objACE9.AceFlags = 0
objACE9.AceType= ADS_ACETYPE_ACCESS_ALLOWED_OBJECT
objACE9.Flags=ADS_FLAG_OBJECT_TYPE_PRESENT
objACE9.ObjectType = VALIDATED_SPN
objDACL.AddAce objACE1
objDACL.AddAce objACE2
objDACL.AddAce objACE3
objDACL.AddAce objACE4
objDACL.AddAce objACE5
objDACL.AddAce objACE6
objDACL.AddAce objACE7
objDACL.AddAce objACE8
objDACL.AddAce objACE9
objSecurityDescriptor.DiscretionaryAcl = objDACL
objComputer.Put "ntSecurityDescriptor", objSecurityDescriptor
objComputer.SetInfo
Delete a Computer Account
strComputer = "atl-pro-040"
set objComputer = GetObject("LDAP://CN=" & strComputer & _
",CN=Computers,DC=fabrikam,DC=com")
objComputer.DeleteObject (0)
Disable a Global Catalog Server
strComputer = "atl-dc-01"
Const NTDSDSA_OPT_IS_GC = 1
Set objRootDSE = GetObject("LDAP://" & strComputer & "/rootDSE")
strDsServiceDN = objRootDSE.Get("dsServiceName")
Set objDsRoot= GetObject _
("LDAP://" & strComputer & "/" & strDsServiceDN)
intOptions = objDsRoot.Get("options")
If intOptions And NTDSDSA_OPT_IS_GC Then
objDsRoot.Put "options", intOptions Xor NTDSDSA_OPT_IS_GC
objDsRoot.Setinfo
End If
Enable a Global Catalog Server
strComputer = "atl-dc-01"
Const NTDSDSA_OPT_IS_GC = 1
Set objRootDSE = GetObject("LDAP://" & strComputer & "/RootDSE")
strDsServiceDN = objRootDSE.Get("dsServiceName")
Set objDsRoot= GetObject _
("LDAP://" & strComputer & "/" & strDsServiceDN)
intOptions = objDsRoot.Get("options")
If (intOptions And NTDSDSA_OPT_IS_GC) = FALSE Then
objDsRoot.Put "options" , intOptions Or NTDSDSA_OPT_IS_GC
objDsRoot.Setinfo
End If
Join a Computer to a Domain
Const JOIN_DOMAIN = 1
Const ACCT_CREATE = 2
Const ACCT_DELETE = 4
Const WIN9X_UPGRADE = 16
Const DOMAIN_JOIN_IF_JOINED = 32
Const JOIN_UNSECURE = 64
Const MACHINE_PASSWORD_PASSED = 128
Const DEFERRED_SPN_SET = 256
Const INSTALL_INVOCATION = 262144
strDomain = "FABRIKAM"
strPassword = "ls4k5ywA"
strUser = "shenalan"
Set objNetwork = CreateObject("WScript.Network")
strComputer = objNetwork.ComputerName
Set objComputer = GetObject("winmgmts:{impersonationLevel=Impersonate}!\\" & _
strComputer & "\root\cimv2:Win32_ComputerSystem.Name='" & _
strComputer & "'")
ReturnValue = objComputer.JoinDomainOrWorkGroup(strDomain, _
strPassword, strDomain & "\" & strUser, NULL, _
JOIN_DOMAIN + ACCT_CREATE)
List All Computer Accounts in Active Directory
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.CommandText = _
"Select Name, Location from 'LDAP://DC=fabrikam,DC=com' " _
& "Where objectClass='computer'"
objCommand.Properties("Page Size") = 1000
objCommand.Properties("Searchscope") = ADS_SCOPE_SUBTREE
Set objRecordSet = objCommand.Execute
objRecordSet.MoveFirst
Do Until objRecordSet.EOF
Wscript.Echo "Computer Name: " & objRecordSet.Fields("Name").Value
Wscript.Echo "Location: " & objRecordSet.Fields("Location").Value
objRecordSet.MoveNext
Loop
List FSMO Role Holders
Set objRootDSE = GetObject("LDAP://rootDSE")
Set objSchema = GetObject _
("LDAP://" & objRootDSE.Get("schemaNamingContext"))
strSchemaMaster = objSchema.Get("fSMORoleOwner")
Set objNtds = GetObject("LDAP://" & strSchemaMaster)
Set objComputer = GetObject(objNtds.Parent)
WScript.Echo "Forest-wide Schema Master FSMO: " & objComputer.Name
Set objNtds = Nothing
Set objComputer = Nothing
Set objPartitions = GetObject("LDAP://CN=Partitions," & _
objRootDSE.Get("configurationNamingContext"))
strDomainNamingMaster = objPartitions.Get("fSMORoleOwner")
Set objNtds = GetObject("LDAP://" & strDomainNamingMaster)
Set objComputer = GetObject(objNtds.Parent)
WScript.Echo "Forest-wide Domain Naming Master FSMO: " & objComputer.Name
Set objDomain = GetObject _
("LDAP://" & objRootDSE.Get("defaultNamingContext"))
strPdcEmulator = objDomain.Get("fSMORoleOwner")
Set objNtds = GetObject("LDAP://" & strPdcEmulator)
Set objComputer = GetObject(objNtds.Parent)
WScript.Echo "Domain's PDC Emulator FSMO: " & objComputer.Name
Set objRidManager = GetObject("LDAP://CN=RID Manager$,CN=System," & _
objRootDSE.Get("defaultNamingContext"))
strRidMaster = objRidManager.Get("fSMORoleOwner")
Set objNtds = GetObject("LDAP://" & strRidMaster)
Set objComputer = GetObject(objNtds.Parent)
WScript.Echo "Domain's RID Master FSMO: " & objComputer.Name
Set objInfrastructure = GetObject("LDAP://CN=Infrastructure," & _
objRootDSE.Get("defaultNamingContext"))
strInfrastructureMaster = objInfrastructure.Get("fSMORoleOwner")
Set objNtds = GetObject("LDAP://" & strInfrastructureMaster)
Set objComputer = GetObject(objNtds.Parent)
WScript.Echo "Domain's Infrastructure Master FSMO: " & objComputer.Name
List Selected Computer Account Attributes
On Error Resume Next
Set objComputer = GetObject _
("LDAP://CN=atl-dc-01,CN=Computers,DC=fabrikam,DC=com")
objProperty = objComputer.Get("Location")
If IsNull(objProperty) Then
Wscript.Echo "The location has not been set."
Else
Wscript.Echo "Location: " & objProperty
objProperty = Null
End If
objProperty = objComputer.Get("Description")
If IsNull(objProperty) Then
Wscript.Echo "The description has not been set."
Else
Wscript.Echo "Description: " & objProperty
objProperty = Null
End If
Modify Computer Location Attribute
Set objComputer = GetObject _
("LDAP://CN=atl-dc-01,CN=Computers,DC=fabrikam,DC=com")
objComputer.Put "Location" , "Building 37, Floor 2, Room 2133"
objComputer.SetInfo
Move a Computer Account
Set objNewOU = GetObject("LDAP://OU=Finance,DC=fabrikam,DC=com")
Set objMoveComputer = objNewOU.MoveHere _
("LDAP://CN=atl-pro-03,CN=Computers,DC=fabrikam,DC=com", "CN=atl-pro-03")
Move a Computer Account to a New Domain
Set objOU = GetObject("LDAP://cn=Computers,dc=NA,dc=fabrikam,dc=com")
objOU.MoveHere "LDAP://cn=Computer01,cn=Users,dc=fabrikam,dc=com", _
vbNullString
Rename a Computer Account
Set objNewOU = GetObject("LDAP://OU=Finance,DC=fabrikam,DC=com")
Set objMoveComputer = objNewOU.MoveHere _
("LDAP://CN=atl-pro-037,OU=Finance,DC=fabrikam,DC=com", _
"CN=atl-pro-003")
Rename a Computer and Computer Account
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colComputers = objWMIService.ExecQuery _
("Select * from Win32_ComputerSystem")
For Each objComputer in colComputers
err = objComputer.Rename("WebServer")
Next
Reset a Computer Account Password
Set objComputer = GetObject _
("LDAP://CN=atl-dc-01,CN=Computers,DC=Reskit,DC=COM")
objComputer.SetPassword "atl-dc-01$"
Search for Specific Computer Accounts
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.CommandText = _
"Select Name, Location, operatingSystemVersion from " & _
"'LDAP://DC=fabrikam,DC=com' where objectClass='computer'" & _
" and operatingSystemVersion = '5.1 (3600)'"
objCommand.Properties("Page Size") = 1000
objCommand.Properties("Searchscope") = ADS_SCOPE_SUBTREE
Set objRecordSet = objCommand.Execute
objRecordSet.MoveFirst
Do Until objRecordSet.EOF
Wscript.Echo "Computer Name: " & objRecordSet.Fields("Name").Value
Wscript.Echo "Location: " & objRecordSet.Fields("Location").Value
objRecordSet.MoveNext
Loop
Verify Computer Role
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colComputers = objWMIService.ExecQuery _
("Select DomainRole from Win32_ComputerSystem")
For Each objComputer in colComputers
Select Case objComputer.DomainRole
Case 0
strComputerRole = "Standalone Workstation"
Case 1
strComputerRole = "Member Workstation"
Case 2
strComputerRole = "Standalone Server"
Case 3
strComputerRole = "Member Server"
Case 4
strComputerRole = "Backup Domain Controller"
Case 5
strComputerRole = "Primary Domain Controller"
End Select
Wscript.Echo strComputerRole
Next
Verify that a Computer is a Global Catalog Server
strComputer = "atl-dc-01"
Const NTDSDSA_OPT_IS_GC = 1
Set objRootDSE = GetObject("LDAP://" & strComputer & "/rootDSE")
strDsServiceDN = objRootDSE.Get("dsServiceName")
Set objDsRoot= GetObject("LDAP://" & strComputer & "/" & strDsServiceDN)
intOptions = objDsRoot.Get("options")
If intOptions And NTDSDSA_OPT_IS_GC Then
WScript.Echo strComputer & " is a global catalog server."
Else
Wscript.Echo strComputer & " is not a global catalog server."
End If
Unjoin a Computer from a Domain
Const NETSETUP_ACCT_DELETE = 2
'Disables computer account in domain.
strPassword = "password"
strUser = "kenmyer"
Set objNetwork = CreateObject("WScript.Network")
strComputer = objNetwork.ComputerName
Set objComputer = GetObject("winmgmts:{impersonationLevel=Impersonate}!\\" & _
strComputer & "\root\cimv2:Win32_ComputerSystem.Name='" & strComputer & "'")
strDomain = objComputer.Domain
intReturn = objComputer.UnjoinDomainOrWorkgroup _
(strPassword, strDomain & "\" & strUser, NETSETUP_ACCT_DELETE)
List Domain Information Using WMI
On Error Resume Next
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colItems = objWMIService.ExecQuery("Select * from Win32_NTDomain")
For Each objItem in colItems
Wscript.Echo "Client Site Name: " & objItem.ClientSiteName
Wscript.Echo "DC Site Name: " & objItem.DcSiteName
Wscript.Echo "Description: " & objItem.Description
Wscript.Echo "DNS Forest Name: " & objItem.DnsForestName
Wscript.Echo "Domain Controller Address: " & _
objItem.DomainControllerAddress
Wscript.Echo "Domain Controller Address Type: " & _
objItem.DomainControllerAddressType
Wscript.Echo "Domain Controller Name: " & objItem.DomainControllerName
Wscript.Echo "Domain GUID: " & objItem.DomainGuid
Wscript.Echo "Domain Name: " & objItem.DomainName
Wscript.Echo "DS Directory Service Flag: " & objItem.DSDirectoryServiceFlag
Wscript.Echo "DS DNS Controller Flag: " & objItem.DSDnsControllerFlag
Wscript.Echo "DS DNS Domain Flag: " & objItem.DSDnsDomainFlag
Wscript.Echo "DS DNS Forest Flag: " & objItem.DSDnsForestFlag
Wscript.Echo "DS Global Catalog Flag: " & objItem.DSGlobalCatalogFlag
Wscript.Echo "DS Kerberos Distribution Center Flag: " & _
objItem.DSKerberosDistributionCenterFlag
Wscript.Echo "DS Primary Domain Controller Flag: " & _
objItem.DSPrimaryDomainControllerFlag
Wscript.Echo "DS Time Service Flag: " & objItem.DSTimeServiceFlag
Wscript.Echo "DS Writable Flag: " & objItem.DSWritableFlag
Wscript.Echo "Name: " & objItem.Name
Wscript.Echo "Primary Owner Contact: " & objItem.PrimaryOwnerContact
Wscript.Echo
Next
Convert domain name to ADsPath
strDomainName = "accounting.sea.na.fabrikam.com"
arrDomLevels = Split(strDomainName, ".")
strADsPath = "dc=" & Join(arrDomLevels, ",dc=")
WScript.Echo strADsPath
Add 1000 Sample Users to a Security Group
Const ADS_PROPERTY_APPEND = 3
Set objRootDSE = GetObject("LDAP://rootDSE")
Set objContainer = GetObject("LDAP://cn=Users," & _
objRootDSE.Get("defaultNamingContext"))
Set objGroup = objContainer.Create("Group", "cn=Group1")
objGroup.Put "sAMAccountName","Group1"
objGroup.SetInfo
For i = 1 To 1000
strDN = ",cn=Users," & objRootDSE.defaultNamingContext
objGroup.PutEx ADS_PROPERTY_APPEND, "member", _
Array("cn=UserNo" & i & strDN)
objGroup.SetInfo
Next
WScript.Echo "Group1 created and 1000 Users added to the group."
Add a User to Two Security Groups
Const ADS_PROPERTY_APPEND = 3
Set objGroup = GetObject _
("LDAP://cn=Atl-Users,cn=Users,dc=NA,dc=fabrikam,dc=com")
objGroup.PutEx ADS_PROPERTY_APPEND, _
"member", Array("cn=MyerKen,ou=Management,dc=NA,dc=fabrikam,dc=com")
objGroup.SetInfo
Set objGroup = GetObject _
("LDAP://cn=NA-Employees,cn=Users,dc=NA,dc=fabrikam,dc=com")
objGroup.PutEx ADS_PROPERTY_APPEND, _
"member", Array("cn=MyerKen,ou=Management,dc=NA,dc=fabrikam,dc=com")
objGroup.SetInfo
Add New Members to a Security Group
Const ADS_PROPERTY_APPEND = 3
Set objGroup = GetObject _
("LDAP://cn=Sea-Users,cn=Users,dc=NA,dc=fabrikam,dc=com")
objGroup.PutEx ADS_PROPERTY_APPEND, "member", _
Array("cn=Scientists,ou=R&D,dc=NA,dc=fabrikam,dc=com", _
"cn=Executives,ou=Management,dc=NA,dc=fabrikam,dc=com", _
"cn=MyerKen,ou=Management,dc=NA,dc=fabrikam,dc=com")
objGroup.SetInfo
Assign a Group Manager
Set objGroup = GetObject _
("LDAP://cn=Scientists,ou=R&D,dc=NA,dc=fabrikam,dc=com")
objGroup.Put "managedBy", "cn=MyerKen,ou=Management,dc=NA,dc=fabrikam,dc=com"
objGroup.SetInfo
Change the Scope of a Security Group
Const ADS_GROUP_TYPE_GLOBAL_GROUP = &h2
Const ADS_GROUP_TYPE_LOCAL_GROUP = &h4
Const ADS_GROUP_TYPE_UNIVERSAL_GROUP = &h8
Const ADS_GROUP_TYPE_SECURITY_ENABLED = &h80000000
Set objGroup = GetObject _
("LDAP://cn=Scientists,ou=R&D,dc=NA,dc=fabrikam,dc=com")
objGroup.Put "groupType", _
ADS_GROUP_TYPE_GLOBAL_GROUP + ADS_GROUP_TYPE_SECURITY_ENABLED
objGroup.SetInfo
Create a Domain Local Distribution Group
Const ADS_GROUP_TYPE_LOCAL_GROUP = &h4
Set objOU = GetObject("LDAP://ou=HR,dc=NA,dc=fabrikam,dc=com")
Set objGroup = objOU.Create("Group", "cn=Vendors")
objGroup.Put "sAMAccountName", "vendors"
objGroup.Put "groupType", ADS_GROUP_TYPE_LOCAL_GROUP
objGroup.SetInfo
Create a Domain Local Security Group
Const ADS_GROUP_TYPE_LOCAL_GROUP = &h4
Const ADS_GROUP_TYPE_SECURITY_ENABLED = &h80000000
Set objOU = GetObject("LDAP://cn=Computers,dc=NA,dc=fabrikam,dc=com")
Set objGroup = objOU.Create("Group", "cn=DB-Servers")
objGroup.Put "sAMAccountName", "DBServers"
objGroup.Put "groupType", ADS_GROUP_TYPE_LOCAL_GROUP Or _
ADS_GROUP_TYPE_SECURITY_ENABLED
objGroup.SetInfo
Create a Global Distribution Group
Const ADS_GROUP_TYPE_GLOBAL_GROUP = &h2
Set objOU = GetObject("LDAP://ou=R&D,dc=NA,dc=fabrikam,dc=com")
Set objGroup = objOU.Create("Group", "cn=Scientists")
objGroup.Put "sAMAccountName", "scientists"
objGroup.Put "groupType", ADS_GROUP_TYPE_GLOBAL_GROUP
objGroup.SetInfo
Create a Global Security Group
Const ADS_GROUP_TYPE_GLOBAL_GROUP = &h2
Const ADS_GROUP_TYPE_SECURITY_ENABLED = &h80000000
Set objOU = GetObject("LDAP://ou=HR,dc=NA,dc=fabrikam,dc=com")
Set objGroup = objOU.Create("Group", "cn=HR-Employees")
objGroup.Put "sAMAccountName", "HRStaff"
objGroup.Put "groupType", ADS_GROUP_TYPE_GLOBAL_GROUP Or _
ADS_GROUP_TYPE_SECURITY_ENABLED
objGroup.SetInfo
Create a Universal Distribution Group
Const ADS_GROUP_TYPE_UNIVERSAL_GROUP = &h8
Set objOU = GetObject("LDAP://ou=Sales,dc=NA,dc=fabrikam,dc=com")
Set objGroup = objOU.Create("Group", "cn=Customers")
objGroup.Put "sAMAccountName", "customers"
objGroup.Put "groupType", ADS_GROUP_TYPE_UNIVERSAL_GROUP
objGroup.SetInfo
Create a Universal Security Group
Const ADS_GROUP_TYPE_UNIVERSAL_GROUP = &h8
Const ADS_GROUP_TYPE_SECURITY_ENABLED = &h80000000
Set objOU = GetObject("LDAP://cn=Users,dc=NA,dc=fabrikam,dc=com")
Set objGroup = objOU.Create("Group", "cn=All-Employees")
objGroup.Put "sAMAccountName", "AllEmployees"
objGroup.Put "groupType", ADS_GROUP_TYPE_UNIVERSAL_GROUP Or _
ADS_GROUP_TYPE_SECURITY_ENABLED
objGroup.SetInfo
Delete a Group from Active Directory
Set objOU = GetObject("LDAP://ou=hr,dc=fabrikam,dc=com")
objOU.Delete "group", "cn=atl-users"
List All the Members of a Group
On Error Resume Next
Set objGroup = GetObject _
("LDAP://cn=Scientists,ou=R&D,dc=NA,dc=fabrikam,dc=com")
objGroup.GetInfo
arrMemberOf = objGroup.GetEx("member")
WScript.Echo "Members:"
For Each strMember in arrMemberOf
WScript.echo strMember
Next
List Group Memberships for All the Users in an OU
On Error Resume Next
Const E_ADS_PROPERTY_NOT_FOUND= &h8000500D
Set objOU = GetObject _
("LDAP://cn=Users,dc=NA,dc=fabrikam,dc=com")
ObjOU.Filter= Array("user")
For Each objUser in objOU
WScript.Echo objUser.cn & " is a member of: "
WScript.Echo vbTab & "Primary Group ID: " & _
objUser.Get("primaryGroupID")
arrMemberOf = objUser.GetEx("memberOf")
If Err.Number <>E_ADS_PROPERTY_NOT_FOUND Then
For Each Group in arrMemberOf
WScript.Echo vbTab & Group
Next
Else
WScript.Echo vbTab & "memberOf attribute is not set"
Err.Clear
End If
Wscript.Echo
Next
List Group Object Information
Set objGroup = GetObject _
("GC://cn=Scientists,ou=R&D,dc=NA,dc=fabrikam,dc=com")
strWhenCreated = objGroup.Get("whenCreated")
strWhenChanged = objGroup.Get("whenChanged")
Set objUSNChanged = objGroup.Get("uSNChanged")
dblUSNChanged = _
Abs(objUSNChanged.HighPart * 2^32 + objUSNChanged.LowPart)
Set objUSNCreated = objGroup.Get("uSNCreated")
dblUSNCreated = _
Abs(objUSNCreated.HighPart * 2^32 + objUSNCreated.LowPart)
objGroup.GetInfoEx Array("canonicalName"), 0
arrCanonicalName = objGroup.GetEx("canonicalName")
WScript.echo "CanonicalName of object:"
For Each strValue in arrCanonicalName
WScript.Echo vbTab & strValue
Next
WScript.Echo
WScript.Echo "Object class: " & objGroup.Class
WScript.Echo "When Created: " & strWhenCreated & " (Created - GMT)"
WScript.Echo "When Changed: " & strWhenChanged & " (Modified - GMT)"
WScript.Echo
WScript.Echo "USN Changed: " & dblUSNChanged & " (USN Current)"
WScript.Echo "USN Created: " & dblUSNCreated & " (USN Original)"
List Other Groups a Group Belongs To
On Error Resume Next
Set objGroup = GetObject _
("LDAP://cn=Scientists,ou=R&D,dc=NA,dc=fabrikam,dc=com")
objGroup.GetInfo
arrMembersOf = objGroup.GetEx("memberOf")
WScript.Echo "MembersOf:"
For Each strMemberOf in arrMembersOf
WScript.Echo strMemberOf
Next
List the Active Directory Groups a User Belongs To
On Error Resume Next
Const E_ADS_PROPERTY_NOT_FOUND= &h8000500D
Set objUser = GetObject _
("LDAP://cn=MyerKen,ou=Management,dc=NA,dc=fabrikam,dc=com")
intPrimaryGroupID = objUser.Get("primaryGroupID")
arrMemberOf = objUser.GetEx("memberOf")
If Err.Number = E_ADS_PROPERTY_NOT_FOUND Then
WScript.Echo "The memberOf attribute is not set."
Else
WScript.Echo "Member of: "
For Each Group in arrMemberOf
WScript.Echo Group
Next
End If
Set objConnection = CreateObject("ADODB.Connection")
objConnection.Open "Provider=ADsDSOObject;"
Set objCommand = CreateObject("ADODB.Command")
objCommand.ActiveConnection = objConnection
objCommand.CommandText = _
"<LDAP://dc=NA,dc=fabrikam,dc=com>;(objectCategory=Group);" & _
"distinguishedName,primaryGroupToken;subtree"
Set objRecordSet = objCommand.Execute
Do Until objRecordset.EOF
If objRecordset.Fields("primaryGroupToken") = intPrimaryGroupID Then
WScript.Echo "Primary group:"
WScript.Echo objRecordset.Fields("distinguishedName") & _
" (primaryGroupID: " & intPrimaryGroupID & ")"
End If
objRecordset.MoveNext
Loop
objConnection.Close
List the Attributes of the Group Class
Set objGroupClass = GetObject("LDAP://schema/group")
Set objSchemaClass = GetObject(objGroupClass.Parent)
i = 0
WScript.Echo "Mandatory attributes:"
For Each strAttribute in objGroupClass.MandatoryProperties
i= i + 1
WScript.Echo i & vbTab & strAttribute
Set objAttribute = objSchemaClass.GetObject("Property",strAttribute)
WScript.Echo " (Syntax: " & objAttribute.Syntax & ")"
If objAttribute.MultiValued Then
WScript.Echo " Multivalued"
Else
WScript.Echo " Single-valued"
End If
Next
WScript.Echo VbCrLf & "Optional attributes:"
For Each strAttribute in objGroupClass.OptionalProperties
i= i + 1
Wscript.Echo i & vbTab & strAttribute
Set objAttribute = objSchemaClass.GetObject("Property",strAttribute)
Wscript.Echo " [Syntax: " & objAttribute.Syntax & "]"
If objAttribute.MultiValued Then
WScript.Echo " Multivalued"
Else
WScript.Echo " Single-valued"
End If
Next
List the General Properties of a Group
On Error Resume Next
Const ADS_GROUP_TYPE_GLOBAL_GROUP = &h2
Const ADS_GROUP_TYPE_LOCAL_GROUP = &h4
Const ADS_GROUP_TYPE_UNIVERSAL_GROUP = &h8
Const ADS_GROUP_TYPE_SECURITY_ENABLED = &h80000000
Set objGroup = GetObject _
("LDAP://cn=Scientists,ou=R&D,dc=NA,dc=fabrikam,dc=com")
WScript.Echo "Name: " & objGroup.Name
WScript.Echo "SAM Account Name: " & objGroup.SAMAccountName
WScript.Echo "Mail: " & objGroup.Mail
WScript.Echo "Info: " & objGroup.Info
intGroupType = objGroup.GroupType
If intGroupType AND ADS_GROUP_TYPE_LOCAL_GROUP Then
WScript.Echo "Group scope: Domain local"
ElseIf intGroupType AND ADS_GROUP_TYPE_GLOBAL_GROUP Then
WScript.Echo "Group scope: Global"
ElseIf intGroupType AND ADS_GROUP_TYPE_UNIVERSAL_GROUP Then
WScript.Echo "Group scope: Universal"
Else
WScript.Echo "Group scope: Unknown"
End If
If intGroupType AND ADS_GROUP_TYPE_SECURITY_ENABLED Then
WScript.Echo "Group type: Security group"
Else
WScript.Echo "Group type: Distribution group"
End If
For Each strValue in objGroup.Description
WScript.Echo "Description: " & strValue
Next
List the Managed By Information for a Group
On Error Resume Next
Set objGroup = GetObject _
("LDAP://cn=Scientists,ou=R&D,dc=NA,dc=fabrikam,dc=com")
strManagedBy = objGroup.Get("managedBy")
If IsEmpty(strManagedBy) = TRUE Then
WScript.Echo "No user account is assigned to manage " & _
"this group."
Else
Set objUser = GetObject("LDAP://" & strManagedBy)
Call GetUpdateMemberList
WScript.Echo "Office: " & _
objUser.physicalDeliveryOfficeName
WScript.Echo "Street Address: " & objUser.streetAddress
WScript.Echo "Locality: " & objUser.l
WScript.Echo "State/Province: " & objUser.st
WScript.Echo "Country: " & objUser.c
WScript.Echo "Telephone Number: " & objUser.telephoneNumber
WScript.Echo "Fax Number: " & _
objUser.facsimileTelephoneNumber
End If
Sub GetUpdateMemberList
Const ADS_ACETYPE_ACCESS_ALLOWED_OBJECT = &H5
Const Member_SchemaIDGuid = "{BF9679C0-0DE6-11D0-A285-00AA003049E2}"
Const ADS_RIGHT_DS_WRITE_PROP = &H20
objUser.GetInfoEx Array("canonicalName"),0
strCanonicalName = objUser.Get("canonicalName")
strDomain = Mid(strCanonicalName,1,InStr(1,strCanonicalName,".")-1)
strSAMAccountName = objUser.Get("sAMAccountName")
Set objNtSecurityDescriptor = objGroup.Get("ntSecurityDescriptor")
Set objDiscretionaryAcl = objNtSecurityDescriptor.DiscretionaryAcl
blnMatch = False
For Each objAce In objDiscretionaryAcl
If LCase(objAce.Trustee) = _
LCase(strDomain & "\" & strSAMAccountName) AND _
objAce.ObjectType =Member_SchemaIDGuid AND _
objAce.AceType = ADS_ACETYPE_ACCESS_ALLOWED_OBJECT AND _
objAce.AccessMask And ADS_RIGHT_DS_WRITE_PROP Then
blnMatch = True
End If
Next
If blnMatch Then
WScript.Echo "Manager can update the member list"
Else
WScript.Echo "Manager cannot update the member list."
End If
End Sub
List the Owner of a Group
Set objGroup = GetObject _
("LDAP://cn=Scientists,ou=R&D,dc=NA,dc=fabrikam,dc=com")
Set objNtSecurityDescriptor = objGroup.Get("ntSecurityDescriptor")
WScript.Echo "Owner Tab"
WScript.Echo "Current owner of this item: " & objNtSecurityDescriptor.Owner
List the Primary Group for a User Account
On Error Resume Next
Const E_ADS_PROPERTY_NOT_FOUND= &h8000500D
Set objUser = GetObject _
("LDAP://cn=MyerKen,ou=Management,dc=NA,dc=fabrikam,dc=com")
intPrimaryGroupID = objUser.Get("primaryGroupID")
Set objConnection = CreateObject("ADODB.Connection")
objConnection.Open "Provider=ADsDSOObject;"
Set objCommand = CreateObject("ADODB.Command")
objCommand.ActiveConnection = objConnection
objCommand.CommandText = _
"<LDAP://dc=NA,dc=fabrikam,dc=com>;(objectCategory=Group);" & _
"distinguishedName,primaryGroupToken;subtree"
Set objRecordSet = objCommand.Execute
Do Until objRecordset.EOF
If objRecordset.Fields("primaryGroupToken") = intPrimaryGroupID Then
WScript.Echo "Primary group:"
WScript.Echo objRecordset.Fields("distinguishedName") & _
" (primaryGroupID: " & intPrimaryGroupID & ")"
End If
objRecordset.MoveNext
Loop
objConnection.Close
List the Security Descriptor for a Group
Const SE_DACL_PROTECTED = &H1000
Set objGroup = GetObject _
("LDAP://cn=Scientists,ou=R&D,dc=NA,dc=fabrikam,dc=com")
Set objNtSecurityDescriptor = objGroup.Get("ntSecurityDescriptor")
intNtSecurityDescriptorControl = objNtSecurityDescriptor.Control
WScript.Echo "Permissions Tab"
strMessage = "Allow inheritable permissions from the parent to " & _
"propogate to this object and all child objects "
If (intNtSecurityDescriptorControl And SE_DACL_PROTECTED) Then
Wscript.Echo strMessage & "is disabled."
Else
WScript.Echo strMessage & "is enabled."
End If
WScript.Echo
Set objDiscretionaryAcl = objNtSecurityDescriptor.DiscretionaryAcl
DisplayAceInformation objDiscretionaryAcl, "DACL"
Sub DisplayAceInformation(SecurityStructure, strType)
Const ADS_ACETYPE_ACCESS_ALLOWED = &H0
Const ADS_ACETYPE_ACCESS_DENIED = &H1
Const ADS_ACETYPE_ACCESS_ALLOWED_OBJECT = &H5
Const ADS_ACETYPE_ACCESS_DENIED_OBJECT = &H6
intAceCount = 0
For Each objAce In SecurityStructure
strTrustee = Mid(objAce.Trustee,1,12)
If StrComp(strTrustee, "NT AUTHORITY", 1) <> 0 Then
intAceCount = intAceCount + 1
WScript.Echo strType & " permission entry: " & intAceCount
WScript.Echo "Name: " & objAce.Trustee
intAceType = objAce.AceType
If (intAceType = ADS_ACETYPE_ACCESS_ALLOWED Or _
intAceType = ADS_ACETYPE_ACCESS_ALLOWED_OBJECT) Then
WScript.Echo "Type: Allow Access"
ElseIf (intAceType = ADS_ACETYPE_ACCESS_DENIED Or _
intAceType = ADS_ACETYPE_ACCESS_DENIED_OBJECT) Then
WScript.Echo "Type: Deny Acess"
Else
WScript.Echo "Acess Type Unknown."
End If
ReadBitsInAccessMask(objAce.AccessMask)
WScript.Echo VbCr
End If
Next
End Sub
Sub ReadBitsInAccessMask(AccessMask)
Const ADS_RIGHT_DELETE = &H10000
Const ADS_RIGHT_READ_CONTROL = &H20000
Const ADS_RIGHT_WRITE_DAC = &H40000
Const ADS_RIGHT_WRITE_OWNER = &H80000
Const ADS_RIGHT_DS_CREATE_CHILD = &H1
Const ADS_RIGHT_DS_DELETE_CHILD = &H2
Const ADS_RIGHT_ACTRL_DS_LIST = &H4
Const ADS_RIGHT_DS_SELF = &H8
Const ADS_RIGHT_DS_READ_PROP = &H10
Const ADS_RIGHT_DS_WRITE_PROP = &H20
Const ADS_RIGHT_DS_DELETE_TREE = &H40
Const ADS_RIGHT_DS_LIST_OBJECT = &H80
Const ADS_RIGHT_DS_CONTROL_ACCESS = &H100
WScript.Echo VbCrLf & "Standard Access Rights"
If (AccessMask And ADS_RIGHT_DELETE) Then _
WScript.Echo vbTab & "-Delete an object."
If (AccessMask And ADS_RIGHT_READ_CONTROL) Then _
WScript.Echo vbTab & "-Read permissions."
If (AccessMask And ADS_RIGHT_WRITE_DAC) Then _
WScript.Echo vbTab & "-Write permissions."
If (AccessMask And ADS_RIGHT_WRITE_OWNER) Then _
WScript.Echo vbTab & "-Modify owner."
WScript.Echo VbCrLf & "Directory Service Specific Access Rights"
If (AccessMask And ADS_RIGHT_DS_CREATE_CHILD) Then _
WScript.Echo vbTab & "-Create child objects."
If (AccessMask And ADS_RIGHT_DS_DELETE_CHILD) Then _
WScript.Echo vbTab & "-Delete child objects."
If (AccessMask And ADS_RIGHT_ACTRL_DS_LIST) Then _
WScript.Echo vbTab & "-Enumerate an object."
If (AccessMask And ADS_RIGHT_DS_READ_PROP) Then _
WScript.Echo vbTab & "-Read the properties of an object."
If (AccessMask And ADS_RIGHT_DS_WRITE_PROP) Then _
WScript.Echo vbTab & "-Write the properties of an object."
If (AccessMask And ADS_RIGHT_DS_DELETE_TREE) Then _
WScript.Echo vbTab & "-Delete a tree of objects"
If (AccessMask And ADS_RIGHT_DS_LIST_OBJECT) Then _
WScript.Echo vbTab & "-List a tree of objects."
WScript.Echo VbCrLf & "Control Access Rights"
If (AccessMask And ADS_RIGHT_DS_CONTROL_ACCESS) + _
(AccessMask And ADS_RIGHT_DS_SELF) = 0 Then
WScript.Echo "-None"
Else
If (AccessMask And ADS_RIGHT_DS_CONTROL_ACCESS) Then _
WScript.Echo vbTab & "-Extended access rights."
If (AccessMask And ADS_RIGHT_DS_SELF) Then
WScript.Echo vbTab & "-Active Directory must validate a property "
WScript.Echo vbTab & " write operation beyond the schema " & _
"definition "
WScript.Echo vbTab & " for the attribute."
End If
End If
End Sub
List the System Access Control List for a Group
Const SE_SACL_PROTECTED = &H2000
Const ADS_SECURITY_INFO_OWNER = &H1
Const ADS_SECURITY_INFO_GROUP = &H2
Const ADS_OPTION_SECURITY_MASK =&H3
Const ADS_SECURITY_INFO_DACL = &H4
Const ADS_SECURITY_INFO_SACL = &H8
Set objGroup = GetObject _
("LDAP://cn=Scientists,ou=R&D,dc=NA,dc=fabrikam,dc=com")
objGroup.SetOption ADS_OPTION_SECURITY_MASK, ADS_SECURITY_INFO_OWNER _
Or ADS_SECURITY_INFO_GROUP Or ADS_SECURITY_INFO_DACL _
Or ADS_SECURITY_INFO_SACL
Set objNtSecurityDescriptor = objGroup.Get("ntSecurityDescriptor")
intNtSecurityDescriptorControl = objNtSecurityDescriptor.Control
WScript.Echo "Auditing Tab"
strMessage = "Allow inheritable auditing entries from" & _
"the parent to "
strMessage = strMessage & "propogate to this object and all child objects "
If (intNtSecurityDescriptorControl And SE_SACL_PROTECTED) Then
Wscript.Echo strMessage & "is disabled."
Else
WScript.Echo strMessage & "is enabled."
End If
WScript.Echo
Set objSacl = objNtSecurityDescriptor.SystemAcl
DisplayAceInformation objSacl, "SACL"
Sub DisplayAceInformation(SecurityStructure, strType)
Const ADS_ACETYPE_SYSTEM_AUDIT = &H2
Const ADS_ACETYPE_SYSTEM_AUDIT_OBJECT = &H7
intAceCount = 0
For Each objAce In SecurityStructure
strTrustee = Mid(objAce.Trustee,1,12)
If StrComp(strTrustee, "NT AUTHORITY", 1) <> 0 Then
intAceCount = intAceCount + 1
WScript.Echo strType & " permission entry: " & intAceCount
WScript.Echo "Name: " & objAce.Trustee
intAceType = objAce.AceType
WScript.Echo "ACETYPE IS: " & intAceType
If (intAceType = ADS_ACETYPE_SYSTEM_AUDIT or _
intAceType = ADS_ACETYPE_SYSTEM_AUDIT_OBJECT) Then
WScript.Echo "Type: Success or Failure Audit"
Else
WScript.Echo "Audit Type Unknown."
End If
ReadBitsInAccessMask(objAce.AccessMask)
WScript.Echo
End If
Next
End Sub
Sub ReadBitsInAccessMask(AccessMask)
Const ADS_RIGHT_DELETE = &H10000
Const ADS_RIGHT_READ_CONTROL = &H20000
Const ADS_RIGHT_WRITE_DAC = &H40000
Const ADS_RIGHT_WRITE_OWNER = &H80000
Const ADS_RIGHT_DS_CREATE_CHILD = &H1
Const ADS_RIGHT_DS_DELETE_CHILD = &H2
Const ADS_RIGHT_ACTRL_DS_LIST = &H4
Const ADS_RIGHT_DS_SELF = &H8
Const ADS_RIGHT_DS_READ_PROP = &H10
Const ADS_RIGHT_DS_WRITE_PROP = &H20
Const ADS_RIGHT_DS_DELETE_TREE = &H40
Const ADS_RIGHT_DS_LIST_OBJECT = &H80
Const ADS_RIGHT_DS_CONTROL_ACCESS = &H100
WScript.Echo VbCrLf & "Standard Access Rights"
If (AccessMask And ADS_RIGHT_DELETE) Then _
WScript.Echo vbTab & "-Delete an object."
If (AccessMask And ADS_RIGHT_READ_CONTROL) Then _
WScript.Echo vbTab & "-Read permissions."
If (AccessMask And ADS_RIGHT_WRITE_DAC) Then _
WScript.Echo vbTab & "-Write permissions."
If (AccessMask And ADS_RIGHT_WRITE_OWNER) Then _
WScript.Echo vbTab & "-Modify owner."
WScript.Echo VbCrLf & "Directory Service Specific Access Rights"
If (AccessMask And ADS_RIGHT_DS_CREATE_CHILD) Then _
WScript.Echo vbTab & "-Create child objects."
If (AccessMask And ADS_RIGHT_DS_DELETE_CHILD) Then _
WScript.Echo vbTab & "-Delete child objects."
If (AccessMask And ADS_RIGHT_ACTRL_DS_LIST) Then _
WScript.Echo vbTab & "-Enumerate an object."
If (AccessMask And ADS_RIGHT_DS_READ_PROP) Then _
WScript.Echo vbTab & "-Read the properties of an object."
If (AccessMask And ADS_RIGHT_DS_WRITE_PROP) Then _
WScript.Echo vbTab & "-Write the properties of an object."
If (AccessMask And ADS_RIGHT_DS_DELETE_TREE) Then _
WScript.Echo vbTab & "-Delete a tree of objects"
If (AccessMask And ADS_RIGHT_DS_LIST_OBJECT) Then _
WScript.Echo vbTab & "-List a tree of objects."
WScript.Echo VbCrLf & "Control Access Rights"
If (AccessMask And ADS_RIGHT_DS_CONTROL_ACCESS) + _
(AccessMask And ADS_RIGHT_DS_SELF) = 0 Then
WScript.Echo "-None"
Else
If (AccessMask And ADS_RIGHT_DS_CONTROL_ACCESS) Then _
WScript.Echo vbTab & "-Extended access rights."
If (AccessMask And ADS_RIGHT_DS_SELF) Then
WScript.Echo vbTab & "-Active Directory must validate a property "
WScript.Echo vbTab & " write operation beyond the schema " & _
"definition "
WScript.Echo vbTab & " for the attribute."
End If
End If
End Sub
Modify Group Attributes
Const ADS_PROPERTY_UPDATE = 2
Set objGroup = GetObject _
("LDAP://cn=Scientists,ou=R&D,dc=NA,dc=fabrikam,dc=com")
objGroup.Put "sAMAccountName", "Scientist01"
objGroup.Put "mail", "YoungRob@fabrikam.com"
objGroup.Put "info", "Use this group for official communications " & _
"with scientists who are contracted to work with Contoso.com."
objGroup.PutEx ADS_PROPERTY_UPDATE, _
"description", Array("Scientist Mailing List")
objGroup.SetInfo
Modify Group Type
Const ADS_GROUP_TYPE_GLOBAL_GROUP = &h2
Const ADS_GROUP_TYPE_LOCAL_GROUP = &h4
Const ADS_GROUP_TYPE_UNIVERSAL_GROUP = &h8
Const ADS_GROUP_TYPE_SECURITY_ENABLED = &h80000000
Set objGroup = GetObject _
("LDAP://cn=Scientists,ou=R&D,dc=NA,dc=fabrikam,dc=com")
objGroup.Put "groupType", _
ADS_GROUP_TYPE_UNIVERSAL_GROUP + ADS_GROUP_TYPE_SECURITY_ENABLED
objGroup.SetInfo
Move a Group Within a Domain
Set objOU = GetObject("LDAP://cn=Users,dc=NA,dc=fabrikam,dc=com")
objOU.MoveHere "LDAP://cn=atl-users,ou=HR,dc=NA,dc=fabrikam,dc=com", _
vbNullString
Remove a User from a Group
Const ADS_PROPERTY_DELETE = 4
Set objGroup = GetObject _
("LDAP://cn=Sea-Users,cn=Users,dc=NA,dc=fabrikam,dc=com")
objGroup.PutEx ADS_PROPERTY_DELETE, _
"member",Array("cn=MyerKen,ou=Management,dc=NA,dc=fabrikam,dc=com")
objGroup.SetInfo
Remove All Group Memberships for a User Account
On Error Resume Next
Const ADS_PROPERTY_DELETE = 4
Const E_ADS_PROPERTY_NOT_FOUND= &h8000500D
Set objUser = GetObject _
("LDAP://cn=MyerKen,ou=Management,dc=NA,dc=fabrikam,dc=com")
arrMemberOf = objUser.GetEx("memberOf")
If Err.Number = E_ADS_PROPERTY_NOT_FOUND Then
WScript.Echo "This account is not a member of any security groups."
WScript.Quit
End If
For Each Group in arrMemberOf
Set objGroup = GetObject("LDAP://" & Group)
objGroup.PutEx ADS_PROPERTY_DELETE, _
"member", Array("cn=MyerKen,ou=Management,dc=NA,dc=fabrikam,dc=com")
objGroup.SetInfo
Next
Remove All the Members of a Group
Const ADS_PROPERTY_CLEAR = 1
Set objGroup = GetObject _
("LDAP://cn=Sea-Users,cn=Users,dc=NA,dc=fabrikam,dc=com")
objGroup.PutEx ADS_PROPERTY_CLEAR, "member", 0
objGroup.SetInfo
Remove the Manager of a Group
Const ADS_PROPERTY_CLEAR = 1
Set objGroup = GetObject _
("LDAP://cn=Scientists,ou=R&D,dc=NA,dc=fabrikam,dc=com")
objGroup.PutEx ADS_PROPERTY_CLEAR, "managedBy", 0
objGroup.SetInfo
Replace Group Membership with All-New Members
Const ADS_PROPERTY_UPDATE = 2
Set objGroup = GetObject _
("LDAP://cn=Scientists,ou=R&D,dc=NA,dc=fabrikam,dc=com")
objGroup.PutEx ADS_PROPERTY_UPDATE, "member", _
Array("cn=YoungRob,ou=R&D,dc=NA,dc=fabrikam,dc=com", _
"cn=ShenAlan,ou=R&D,dc=NA,dc=fabrikam,dc=com")
objGroup.SetInfo
Install Active Directory Database Performance Counters
Set WshShell = WScript.CreateObject("WScript.Shell")
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objShell = CreateObject("Shell.Application")
objFSO.CreateFolder ("C:\Performance")
Set objCopyFile = objFSO.GetFile("C:\windows\system32\esentprf.dll ")
objCopyFile.Copy ("C:\performance\esentprf.dll ")
WshShell.RegWrite _
"HKLM\System\CurrentControlSet\Services\Esent\Performance\Open", _
"OpenPerformanceData", "REG_SZ"
WshShell.RegWrite _
"HKLM\System\CurrentControlSet\Services\Esent\Performance\Collect", _
"CollectPerformanceData", "REG_SZ"
WshShell.RegWrite _
"HKLM\System\CurrentControlSet\Services\Esent\Performance\Close", _
"ClosePerformanceData", "REG_SZ"
WshShell.RegWrite _
"HKLM\System\CurrentControlSet\Services\Esent\Performance\Library", _
"C:\Performance\Esentprf.dll", "REG_SZ"
strCommandText = "%comspec% /c lodctr.exe c:\windows\system32\esentprf.ini"
WshShell.Run strCommandText
List Active Directory Database Replication Partners
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & _
strComputer & "\root\MicrosoftActiveDirectory")
Set colReplicationOperations = objWMIService.ExecQuery _
("Select * from MSAD_ReplNeighbor")
For each objReplicationJob in colReplicationOperations
Wscript.Echo "Domain: " & objReplicationJob.Domain
Wscript.Echo "Naming context DN: " & objReplicationJob.NamingContextDN
Wscript.Echo "Source DSA DN: " & objReplicationJob.SourceDsaDN
Wscript.Echo "Last synch result: " & objReplicationJob.LastSyncResult
Wscript.Echo "Number of consecutive synchronization failures: " & _
objReplicationJob.NumConsecutiveSyncFailures
Next
Configure Trust Relationship Properties
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & _
strComputer & "\root\MicrosoftActiveDirectory")
Set colTrustList = objWMIService.ExecQuery _
("Select * from Microsoft_TrustProvider")
For Each objTrust in colTrustList
objTrust.TrustListLifetime = 25
objTrust.TrustStatusLifetime = 10
objTrust.TrustCheckLevel = 1
objTrust.Put_
Next
List Domain Information for Trust Partners
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & _
strComputer & "\root\MicrosoftActiveDirectory")
Set colDomainInfo = objWMIService.ExecQuery _
("Select * from Microsoft_LocalDomainInfo")
For each objDomain in colDomainInfo
Wscript.Echo "DNS name: " & objDomain.DNSName
Wscript.Echo "Flat name: " & objDomain.FlatName
Wscript.Echo "SID: " & objDomain.SID
Wscript.Echo "Tree name: " & objDomain.TreeName
Wscript.Echo "Domain controller name: " & objDomain.DCName
Next
List Trust Relationships
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & _
strComputer & "\root\MicrosoftActiveDirectory")
Set colTrustList = objWMIService.ExecQuery _
("Select * from Microsoft_DomainTrustStatus")
For each objTrust in colTrustList
Wscript.Echo "Trusted domain: " & objTrust.TrustedDomain
Wscript.Echo "Trust direction: " & objTrust.TrustDirection
Wscript.Echo "Trust type: " & objTrust.TrustType
Wscript.Echo "Trust attributes: " & objTrust.TrustAttributes
Wscript.Echo "Trusted domain controller name: " & objTrust.TrustedDCName
Wscript.Echo "Trust status: " & objTrust.TrustStatus
Wscript.Echo "Trust is OK: " & objTrust.TrustIsOK
Next
Monitor Active Directory Database Performance
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colDatabases = objWMIService.ExecQuery _
("Select * from Win32_PerfFormattedData_Esent_Database " _
& "Where Name = 'NT Directory'")
For Each objADDatabase in colDatabases
Wscript.Echo "Database cache hit percent: " & _
objADDatabase.DatabaseCachePercentHit
Next
Monitor Active Directory Replication
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & _
strComputer & "\root\MicrosoftActiveDirectory")
Set colReplicationOperations = objWMIService.ExecQuery _
("Select * from MSAD_ReplPendingOp")
If colReplicationOperations.Count = 0 Then
Wscript.Echo "There are no replication jobs pending."
Wscript.Quit
Else
For each objReplicationJob in colReplicationOperations
Wscript.Echo "Serial number: " & objReplicationJob.SerialNumber
Wscript.Echo "Time in queue: " & objReplicationJob.TimeEnqueued
Wscript.Echo "DSA DN: " & objReplicationJob.DsaDN
Wscript.Echo "DSA address: " & objReplicationJob.DsaAddress
Wscript.Echo "Naming context DN: " & objReplicationJob.NamingContextDn
Next
End If
Monitor Domain Controller Performance
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colDatabases = objWMIService.ExecQuery _
("Select * from Win32_PerfFormattedData_NTDS_NTDS")
For Each objADDatabase in colDatabases
Wscript.Echo "DS threads in use: " & objADDatabase.DSThreadsInUse
Wscript.Echo "LDAP bind time: " & objADDatabase.LDAPBindTime
Wscript.Echo "LDAP client sessions: " & objADDatabase.LDAPClientSessions
Next
Monitor FRS Replication
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colFRSSet = objWMIService.ExecQuery _
("Select * from Win32_PerfFormattedData_FileReplicaConn_FileReplicaConn")
For Each objFRSInstance in colFRSSet
Wscript.Echo "Remote change orders received: " & _
objFRSInstance.RemoteChangeOrdersReceived
Wscript.Echo "Remote change orders sent: " & _
objFRSInstance.RemoteChangeOrdersSent
Wscript.Echo "Packets sent: " & objFRSInstance.PacketsSent
Next
Monitor NTDS Performance
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
set objRefresher = CreateObject("WbemScripting.SWbemRefresher")
Set colItems = objRefresher.AddEnum _
(objWMIService, "Win32_PerfFormattedData_NTDS_NTDS").objectSet
objRefresher.Refresh
For i = 1 to 5
For Each objItem in colItems
Wscript.Echo "Directory service threads in use: " & _
objItem.DSThreadsInUse
Wscript.Sleep 2000
objRefresher.Refresh
Next
Next
Assign a New Group Policy Link to an OU
On Error Resume Next
Set objContainer = GetObject _
("LDAP://ou=Sales,dc=NA,dc=fabrikam,dc=com")
strExistingGPLink = objContainer.Get("gPLink")
strGPODisplayName = "Sales Policy"
strGPOLinkOptions = 2
strNewGPLink = "[" & GetGPOADsPath & ";" & strGPOLinkOptions & "]"
objContainer.Put "gPLink", strExistingGPLink & strNewGPLink
objContainer.Put "gPOptions", "0"
objContainer.SetInfo
Function GetGPOADsPath
Set objConnection = CreateObject("ADODB.Connection")
objConnection.Open "Provider=ADsDSOObject;"
Set objCommand = CreateObject("ADODB.Command")
objCommand.ActiveConnection = objConnection
objCommand.CommandText = _
"<LDAP://cn=Policies,cn=System,dc=NA,dc=fabrikam,dc=com>;;" & _
"distinguishedName,displayName;onelevel"
Set objRecordSet = objCommand.Execute
Do Until objRecordSet.EOF
If objRecordSet.Fields("displayName") = strGPODisplayName Then
GetGPOADsPath = "LDAP://" & objRecordSet.Fields("distinguishedName")
objConnection.Close
Exit Function
End If
objRecordSet.MoveNext
Loop
objConnection.Close
End Function
Assign a New Manager to an OU
Set objContainer = GetObject _
("LDAP://ou=Sales,dc=NA,dc=fabrikam,dc=com")
objContainer.Put "managedBy", "cn=AkersKim,ou=Sales,dc=NA,dc=fabrikam,dc=com"
objContainer.SetInfo
Clear COM+ Attributes from a User Account
Const ADS_PROPERTY_CLEAR = 1
Set objUser = GetObject _
("LDAP://cn=MyerKen,ou=Management,dc=NA,dc=fabrikam,dc=com")
objUser.PutEx ADS_PROPERTY_CLEAR, "msCOM-UserPartitionSetLink", 0
objUser.SetInfo
Clear the COM+ Partition Link Set of an OU
Const ADS_PROPERTY_CLEAR = 1
Set objContainer = GetObject _
("LDAP://ou=Sales,dc=NA,dc=fabrikam,dc=com")
objContainer.PutEx ADS_PROPERTY_CLEAR, "msCOM-UserPartitionSetLink", 0
objContainer.SetInfo
Clear the General Properties of an OU
Const ADS_PROPERTY_CLEAR = 1
Set objContainer = GetObject _
("LDAP://ou=Sales,dc=NA,dc=fabrikam,dc=com")
objContainer.PutEx ADS_PROPERTY_CLEAR, "description", 0
objContainer.PutEx ADS_PROPERTY_CLEAR, "street", 0
objContainer.PutEx ADS_PROPERTY_CLEAR, "l", 0
objContainer.PutEx ADS_PROPERTY_CLEAR, "st", 0
objContainer.PutEx ADS_PROPERTY_CLEAR, "postalCode", 0
objContainer.PutEx ADS_PROPERTY_CLEAR, "c", 0
objContainer.SetInfo
Clear the Group Policy Links Assigned to an OU
Const ADS_PROPERTY_CLEAR = 1
Set objContainer = GetObject _
("LDAP://ou=Sales,dc=NA,dc=fabrikam,dc=com")
objContainer.PutEx ADS_PROPERTY_CLEAR, "gPLink", 0
objContainer.PutEx ADS_PROPERTY_CLEAR, "gPOptions", 0
objContainer.SetInfo
Create an OU
Set objDomain = GetObject("LDAP://dc=fabrikam,dc=com")
Set objOU = objDomain.Create("organizationalUnit", "ou=Management")
objOU.SetInfo
Create an OU in an Existing OU
Set objOU1 = GetObject("LDAP://ou=OU1,dc=na,dc=fabrikam,dc=com")
Set objOU2 = objOU1.Create("organizationalUnit", "ou=OU2")
objOU2.SetInfo
Delete an OU
Set objDomain = GetObject("LDAP://dc=fabrikam,dc=com")
objDomain.Delete "organizationalUnit", "ou=hr"
List COM+ Partition Information for a Domain
Set objCOMPartitionSets = GetObject _
("LDAP://cn=ComPartitionSets,cn=System,dc=NA,dc=fabrikam,dc=com")
For Each objPartitionSet in objCOMPartitionSets
WScript.Echo "Name: " & objPartitionSet.Name
Next
List COM+ Partition Sets
Set objCOMPartitionSets = GetObject _
("LDAP://cn=ComPartitionSets,cn=System,dc=NA,dc=fabrikam,dc=com")
For Each objPartitionSet in objCOMPartitionSets
WScript.Echo "Name: " & objPartitionSet.Name
Next
List Group Policy Information for an OU
On Error Resume Next
Set objContainer = GetObject _
("LDAP://ou=Sales,dc=NA,dc=fabrikam,dc=com")
strGpLink = objContainer.Get("gPLink")
intGpOptions = objContainer.Get("gPOptions")
If strGpLink <> " " Then
arrGpLinkItems = Split(strGpLink,"]")
For i = UBound(arrGPLinkItems) to LBound(arrGpLinkItems) + 1 Step -1
arrGPLink = Split(arrGpLinkItems(i-1),";")
strDNGPLink = Mid(arrGPLink(0),9)
WScript.Echo GetGPOName
Select Case arrGPLink(1)
Case 0
WScript.Echo "No Override is cleared and the GPO is enabled."
Case 1
WScript.Echo "No Override is cleared and the GPO is disabled."
Case 2
WScript.Echo "No Override is checked and the GPO is enabled."
Case 3
WScript.Echo "No Override is checked and the GPO is disabled."
End Select
Next
WScript.Echo VbCrLf
End If
If intGpOptions = 1 Then
WScript.Echo "Block Policy Inheritance is checked."
Else
WScript.Echo "Block Policy Inheritance is not checked."
End If
Function GetGPOName
Set objConnection = CreateObject("ADODB.Connection")
objConnection.Open "Provider=ADsDSOObject;"
Set objCommand = CreateObject("ADODB.Command")
objCommand.ActiveConnection = objConnection
objCommand.CommandText = _
"<LDAP://cn=Policies,cn=System,dc=NA,dc=fabrikam,dc=com>;;" & _
"distinguishedName,displayName;onelevel"
Set objRecordSet = objCommand.Execute
Do Until objRecordSet.EOF
If objRecordSet.Fields("distinguishedName") = strDNGPLink Then
GetGPOName = objRecordSet.Fields("displayName")
objConnection.Close
Exit Function
End If
objRecordSet.MoveNext
Loop
objConnection.Close
End Function
List the Attributes of the organizationalUnit Class
Set objOrganizationalUnitClass = _
GetObject("LDAP://schema/organizationalUnit")
Set objSchemaClass = GetObject(objOrganizationalUnitClass.Parent)
i = 0
WScript.Echo "Mandatory attributes:"
For Each strAttribute in objOrganizationalUnitClass.MandatoryProperties
i= i + 1
WScript.Echo i & vbTab & strAttribute
Set objAttribute = objSchemaClass.GetObject("Property",strAttribute)
WScript.Echo " (Syntax: " & objAttribute.Syntax & ")"
If objAttribute.MultiValued Then
WScript.Echo " Multivalued"
Else
WScript.Echo " Single-valued"
End If
Next
WScript.Echo VbCrLf & "Optional attributes:"
For Each strAttribute in objOrganizationalUnitClass.OptionalProperties
i= i + 1
WScript.StdOut.Write i & vbTab & strAttribute
Set objAttribute = objSchemaClass.GetObject("Property",strAttribute)
Wscript.Echo " [Syntax: " & objAttribute.Syntax & "]"
If objAttribute.MultiValued Then
WScript.Echo " Multivalued"
Else
WScript.Echo " Single-valued"
End If
Next
List the COM+ Properties of an OU
On Error Resume Next
Set objContainer = GetObject _
("LDAP://ou=Sales,dc=NA,dc=fabrikam,dc=com")
strMsCOMUserPartitionSetLink = objContainer.Get("msCOM-UserPartitionSetLink")
WScript.Echo "ms-COMUserPartitionSetLink: " & strMsCOMUserPartitionSetLink
List the General Properties of an OU
On Error Resume Next
Set objContainer = GetObject _
("LDAP://ou=Sales,dc=NA,dc=fabrikam,dc=com")
For Each strValue in objContainer.description
WScript.Echo "Description: " & strValue
Next
Wscript.Echo "Street Address: " & strStreetAddress
Wscript.Echo "Locality: " &
Wscript.Echo "State/porvince: " & objContainer.st
Wscript.Echo "Postal Code: " & objContainer.postalCode
Wscript.Echo "Country: " & objContainer.c
List the Managed By Information for an OU
On Error Resume Next
Set objContainer = GetObject _
("LDAP://ou=Sales,dc=NA,dc=fabrikam,dc=com")
strManagedBy = objContainer.Get("managedBy")
If IsEmpty(strManagedBy) = TRUE Then
WScript.Echo "No user account is assigned to manage " & _
"this OU."
Else
Set objUser = GetObject("LDAP://" & strManagedBy)
WScript.Echo "Manager: " & objUser.streetAddress
WScript.Echo "Office: " & _
objUser.physicalDeliveryOfficeName
WScript.Echo "Street Address: " & strStreetAddress
WScript.Echo "Locality: " & objUser.l
WScript.Echo "State/province: " & objUser.st
WScript.Echo "Country: " & objUser.c
WScript.Echo "Telephone Number: " & objUser.telephoneNumber
WScript.Echo "Fax Number: " & _
objUser.facsimileTelephoneNumber
End If
List the Owner of an OU
Set objContainer = GetObject _
("LDAP://ou=Sales,dc=NA,dc=fabrikam,dc=com")
Set objNtSecurityDescriptor = objContainer.Get("ntSecurityDescriptor")
WScript.Echo "Owner Tab"
WScript.Echo "Current owner of this item: " & objNtSecurityDescriptor.Owner
List the Properties of an OU Object
Set objContainer = GetObject _
("GC://ou=Sales,dc=NA,dc=fabrikam,dc=com")
strWhenCreated = objContainer.Get("whenCreated")
strWhenChanged = objContainer.Get("whenChanged")
Set objUSNChanged = objContainer.Get("uSNChanged")
dblUSNChanged = _
Abs(objUSNChanged.HighPart * 2^32 + objUSNChanged.LowPart)
Set objUSNCreated = objContainer.Get("uSNCreated")
dblUSNCreated = _
Abs(objUSNCreated.HighPart * 2^32 + objUSNCreated.LowPart)
objContainer.GetInfoEx Array("canonicalName"), 0
arrCanonicalName = objContainer.GetEx("canonicalName")
WScript.Echo "CanonicalName of object:"
For Each strValue in arrCanonicalName
WScript.Echo vbTab & strValue
Next
WScript.Echo
WScript.Echo "Object class: " & objContainer.Class & vbCrLf
WScript.Echo "whenCreated: " & strWhenCreated & " (Created - GMT)"
WScript.Echo "whenChanged: " & strWhenChanged & " (Modified - GMT)"
WScript.Echo VbCrLf
WScript.Echo "uSNChanged: " & dblUSNChanged & " (USN Current)"
WScript.Echo "uSNCreated: " & dblUSNCreated & " (USN Original)"
List the Security Descriptor for an OU
Const SE_DACL_PROTECTED = &H1000
Set objContainer = GetObject _
("LDAP://ou=Sales,dc=NA,dc=fabrikam,dc=com")
Set objNtSecurityDescriptor = objContainer.Get("ntSecurityDescriptor")
intNtSecurityDescriptorControl = objNtSecurityDescriptor.Control
WScript.Echo "Permissions Tab"
strMessage = "Allow inheritable permissions from the parent to " & _
"propogate to this object and all child objects "
If (intNtSecurityDescriptorControl And SE_DACL_PROTECTED) Then
Wscript.Echo strMessage & "is disabled."
Else
WScript.Echo strMessage & "is enabled."
End If
WScript.Echo
Set objDiscretionaryAcl = objNtSecurityDescriptor.DiscretionaryAcl
DisplayAceInformation objDiscretionaryAcl, "DACL"
Sub DisplayAceInformation(SecurityStructure, strType)
Const ADS_ACETYPE_ACCESS_ALLOWED = &H0
Const ADS_ACETYPE_ACCESS_DENIED = &H1
Const ADS_ACETYPE_ACCESS_ALLOWED_OBJECT = &H5
Const ADS_ACETYPE_ACCESS_DENIED_OBJECT = &H6
intAceCount = 0
For Each objAce In SecurityStructure
strTrustee = Mid(objAce.Trustee,1,12)
If StrComp(strTrustee, "NT AUTHORITY", 1) <> 0 Then
intAceCount = intAceCount + 1
WScript.Echo strType & " permission entry: " & intAceCount
WScript.Echo "Name: " & objAce.Trustee
intAceType = objAce.AceType
If (intAceType = ADS_ACETYPE_ACCESS_ALLOWED Or _
intAceType = ADS_ACETYPE_ACCESS_ALLOWED_OBJECT) Then
WScript.Echo "Type: Allow Access"
ElseIf (intAceType = ADS_ACETYPE_ACCESS_DENIED Or _
intAceType = ADS_ACETYPE_ACCESS_DENIED_OBJECT) Then
WScript.Echo "Type: Deny Acess"
Else
WScript.Echo "Acess Type Unknown."
End If
ReadBitsInAccessMask(objAce.AccessMask)
WScript.Echo VbCr
End If
Next
End Sub
Sub ReadBitsInAccessMask(AccessMask)
Const ADS_RIGHT_DELETE = &H10000
Const ADS_RIGHT_READ_CONTROL = &H20000
Const ADS_RIGHT_WRITE_DAC = &H40000
Const ADS_RIGHT_WRITE_OWNER = &H80000
Const ADS_RIGHT_DS_CREATE_CHILD = &H1
Const ADS_RIGHT_DS_DELETE_CHILD = &H2
Const ADS_RIGHT_ACTRL_DS_LIST = &H4
Const ADS_RIGHT_DS_SELF = &H8
Const ADS_RIGHT_DS_READ_PROP = &H10
Const ADS_RIGHT_DS_WRITE_PROP = &H20
Const ADS_RIGHT_DS_DELETE_TREE = &H40
Const ADS_RIGHT_DS_LIST_OBJECT = &H80
Const ADS_RIGHT_DS_CONTROL_ACCESS = &H100
WScript.Echo VbCrLf & "Standard Access Rights"
If (AccessMask And ADS_RIGHT_DELETE) Then _
WScript.Echo vbTab & "-Delete an object."
If (AccessMask And ADS_RIGHT_READ_CONTROL) Then _
WScript.Echo vbTab & "-Read permissions."
If (AccessMask And ADS_RIGHT_WRITE_DAC) Then _
WScript.Echo vbTab & "-Write permissions."
If (AccessMask And ADS_RIGHT_WRITE_OWNER) Then _
WScript.Echo vbTab & "-Modify owner."
WScript.Echo VbCrLf & "Directory Service Specific Access Rights"
If (AccessMask And ADS_RIGHT_DS_CREATE_CHILD) Then _
WScript.Echo vbTab & "-Create child objects."
If (AccessMask And ADS_RIGHT_DS_DELETE_CHILD) Then _
WScript.Echo vbTab & "-Delete child objects."
If (AccessMask And ADS_RIGHT_ACTRL_DS_LIST) Then _
WScript.Echo vbTab & "-Enumerate an object."
If (AccessMask And ADS_RIGHT_DS_READ_PROP) Then _
WScript.Echo vbTab & "-Read the properties of an object."
If (AccessMask And ADS_RIGHT_DS_WRITE_PROP) Then _
WScript.Echo vbTab & "-Write the properties of an object."
If (AccessMask And ADS_RIGHT_DS_DELETE_TREE) Then _
WScript.Echo vbTab & "-Delete a tree of objects"
If (AccessMask And ADS_RIGHT_DS_LIST_OBJECT) Then _
WScript.Echo vbTab & "-List a tree of objects."
WScript.Echo VbCrLf & "Control Access Rights"
If (AccessMask And ADS_RIGHT_DS_CONTROL_ACCESS) + _
(AccessMask And ADS_RIGHT_DS_SELF) = 0 Then
WScript.Echo "-None"
Else
If (AccessMask And ADS_RIGHT_DS_CONTROL_ACCESS) Then _
WScript.Echo vbTab & "-Extended access rights."
If (AccessMask And ADS_RIGHT_DS_SELF) Then
WScript.Echo vbTab & "-Active Directory must validate a property "
WScript.Echo vbTab & " write operation beyond the schema definition "
WScript.Echo vbTab & " for the attribute."
End If
End If
End Sub
List the System Access Control List of an OU
Const SE_SACL_PROTECTED = &H2000
Const ADS_SECURITY_INFO_OWNER = &H1
Const ADS_SECURITY_INFO_GROUP = &H2
Const ADS_OPTION_SECURITY_MASK =&H3
Const ADS_SECURITY_INFO_DACL = &H4
Const ADS_SECURITY_INFO_SACL = &H8
Set objContainer = GetObject _
("LDAP://ou=Sales,dc=NA,dc=fabrikam,dc=com")
objContainer.SetOption ADS_OPTION_SECURITY_MASK, ADS_SECURITY_INFO_OWNER _
Or ADS_SECURITY_INFO_GROUP Or ADS_SECURITY_INFO_DACL _
Or ADS_SECURITY_INFO_SACL
Set objNtSecurityDescriptor = objContainer.Get("ntSecurityDescriptor")
intNtSecurityDescriptorControl = objNtSecurityDescriptor.Control
WScript.Echo "Auditing Tab"
strMessage = "Allow inheritable auditing entries from" & _
"the parent to propogate to this object and all child objects "
If (intNtSecurityDescriptorControl And SE_SACL_PROTECTED) Then
Wscript.Echo strMessage & "is disabled."
Else
WScript.Echo strMessage & "is enabled."
End If
WScript.Echo
Set objSacl = objNtSecurityDescriptor.SystemAcl
DisplayAceInformation objSacl, "SACL"
Sub DisplayAceInformation(SecurityStructure, strType)
Const ADS_ACETYPE_SYSTEM_AUDIT = &H2
Const ADS_ACETYPE_SYSTEM_AUDIT_OBJECT = &H7
intAceCount = 0
For Each objAce In SecurityStructure
strTrustee = Mid(objAce.Trustee,1,12)
If StrComp(strTrustee, "NT AUTHORITY", 1) <> 0 Then
intAceCount = intAceCount + 1
WScript.Echo strType & " permission entry: " & intAceCount
WScript.Echo "Name: " & objAce.Trustee
intAceType = objAce.AceType
WScript.Echo "ACETYPE IS: " & intAceType
If (intAceType = ADS_ACETYPE_SYSTEM_AUDIT or _
intAceType = ADS_ACETYPE_SYSTEM_AUDIT_OBJECT) Then
WScript.StdOut.Write "Type: Success or Failure Audit"
Else
WScript.StdOut.Write "Audit Type Unknown."
End If
ReadBitsInAccessMask(objAce.AccessMask)
WScript.Echo
End If
Next
End Sub
Sub ReadBitsInAccessMask(AccessMask)
Const ADS_RIGHT_DELETE = &H10000
Const ADS_RIGHT_READ_CONTROL = &H20000
Const ADS_RIGHT_WRITE_DAC = &H40000
Const ADS_RIGHT_WRITE_OWNER = &H80000
Const ADS_RIGHT_DS_CREATE_CHILD = &H1
Const ADS_RIGHT_DS_DELETE_CHILD = &H2
Const ADS_RIGHT_ACTRL_DS_LIST = &H4
Const ADS_RIGHT_DS_SELF = &H8
Const ADS_RIGHT_DS_READ_PROP = &H10
Const ADS_RIGHT_DS_WRITE_PROP = &H20
Const ADS_RIGHT_DS_DELETE_TREE = &H40
Const ADS_RIGHT_DS_LIST_OBJECT = &H80
Const ADS_RIGHT_DS_CONTROL_ACCESS = &H100
WScript.Echo VbCrLf & "Standard Access Rights"
If (AccessMask And ADS_RIGHT_DELETE) Then _
WScript.Echo vbTab & "-Delete an object."
If (AccessMask And ADS_RIGHT_READ_CONTROL) Then _
WScript.Echo vbTab & "-Read permissions."
If (AccessMask And ADS_RIGHT_WRITE_DAC) Then _
WScript.Echo vbTab & "-Write permissions."
If (AccessMask And ADS_RIGHT_WRITE_OWNER) Then _
WScript.Echo vbTab & "-Modify owner."
WScript.Echo VbCrLf & "Directory Service Specific Access Rights"
If (AccessMask And ADS_RIGHT_DS_CREATE_CHILD) Then _
WScript.Echo vbTab & "-Create child objects."
If (AccessMask And ADS_RIGHT_DS_DELETE_CHILD) Then _
WScript.Echo vbTab & "-Delete child objects."
If (AccessMask And ADS_RIGHT_ACTRL_DS_LIST) Then _
WScript.Echo vbTab & "-Enumerate an object."
If (AccessMask And ADS_RIGHT_DS_READ_PROP) Then _
WScript.Echo vbTab & "-Read the properties of an object."
If (AccessMask And ADS_RIGHT_DS_WRITE_PROP) Then _
WScript.Echo vbTab & "-Write the properties of an object."
If (AccessMask And ADS_RIGHT_DS_DELETE_TREE) Then _
WScript.Echo vbTab & "-Delete a tree of objects"
If (AccessMask And ADS_RIGHT_DS_LIST_OBJECT) Then _
WScript.Echo vbTab & "-List a tree of objects."
WScript.Echo VbCrLf & "Control Access Rights"
If (AccessMask And ADS_RIGHT_DS_CONTROL_ACCESS) + _
(AccessMask And ADS_RIGHT_DS_SELF) = 0 Then
WScript.Echo "-None"
Else
If (AccessMask And ADS_RIGHT_DS_CONTROL_ACCESS) Then _
WScript.Echo vbTab & "-Extended access rights."
If (AccessMask And ADS_RIGHT_DS_SELF) Then
WScript.Echo vbTab & "-Active Directory must validate a property "
WScript.Echo vbTab & " write operation beyond the schema " & _
"definition "
WScript.Echo vbTab & " for the attribute."
End If
End If
End Sub
Modify the COM+ Partition Set Link of an OU
Set objContainer = GetObject _
("LDAP://ou=Sales,dc=NA,dc=fabrikam,dc=com")
objContainer.Put "msCOM-UserPartitionSetLink", _
"cn=PartitionSet1,cn=ComPartitionSets,cn=System,dc=NA,dc=fabrikam,dc=com"
objContainer.SetInfo
Modify the General Properties of an OU
Const ADS_PROPERTY_UPDATE = 2
Set objContainer = GetObject _
("LDAP://ou=Sales,dc=NA,dc=fabrikam,dc=com")
objContainer.Put "street", "Building 43" & vbCrLf & "One Microsoft Way"
objContainer.Put "l", "Redmond"
objContainer.Put "st", "Washington"
objContainer.Put "postalCode", "98053"
objContainer.Put "c", "US"
objContainer.PutEx ADS_PROPERTY_UPDATE, _
"description", Array("Sales staff")
objContainer.SetInfo
Remove an OU Manager
Const ADS_PROPERTY_CLEAR = 1
Set objContainer = GetObject _
("LDAP://ou=Sales,dc=NA,dc=fabrikam,dc=com")
objContainer.PutEx ADS_PROPERTY_CLEAR, "managedBy", 0
objContainer.SetInfo
Create an Active Directory Site
strSiteRDN= "cn=Ga-Atl-Sales"
strSiteLinkRDN= "cn=DEFAULTIPSITELINK"
strSiteLinkType = "IP"
Const ADS_PROPERTY_APPEND = 3
Set objRootDSE = GetObject("LDAP://RootDSE")
strConfigurationNC = objRootDSE.Get("configurationNamingContext")
strSitesContainer = "LDAP://cn=Sites," & strConfigurationNC
Set objSitesContainer = GetObject(strSitesContainer)
Set objSite = objSitesContainer.Create("site", strSiteRDN)
objSite.SetInfo
Set objLicensingSiteSettings = objSite.Create("licensingSiteSettings", _
"cn=Licensing Site Settings")
objLicensingSiteSettings.SetInfo
Set objNtdsSiteSettings = objSite.Create("nTDSSiteSettings", _
"cn=NTDS Site Settings")
objNtdsSiteSettings.SetInfo
Set objServersContainer = objSite.Create("serversContainer", "cn=Servers")
objServersContainer.SetInfo
strSiteLinkPath = "LDAP://" & strSiteLinkRDN & ",cn=" & strSiteLinkType & _
",cn=Inter-Site Transports,cn=Sites," & strConfigurationNC
Set objSiteLink = GetObject(strSiteLinkPath)
objSiteLink.PutEx ADS_PROPERTY_APPEND, "siteList", _
Array(objSite.Get("distinguishedName"))
objSiteLink.SetInfo
Create an Active Directory Site Link
strSite1Name= "Ga-Atl-Sales"
strSite2Name= "Wa-Red-Sales"
strSiteLinkRDN= "cn=[" & strSite1Name & "][" & strSite2Name & "]"
intCost = 100
intReplInterval = 60
strDescription= "[" & strSite1Name & "][" & strSite2Name & "]"
Const ADS_PROPERTY_UPDATE = 2
Set objRootDSE = GetObject("LDAP://RootDSE")
strConfigurationNC = objRootDSE.Get("configurationNamingContext")
strSite1DN = "cn=" & strSite1Name & ",cn=Sites," & strConfigurationNC
strSite2DN = "cn=" & strSite2Name & ",cn=Sites," & strConfigurationNC
Set objInterSiteTransports = GetObject("LDAP://" & _
"cn=IP,cn=Inter-Site Transports,cn=Sites," & strConfigurationNC)
Set objSiteLink = objInterSiteTransports.Create("siteLink", strSiteLinkRDN)
objSiteLink.Put "cost", intCost
objSiteLink.Put "replInterval", intReplInterval
objSiteLink.Put "description",strDescription
objSiteLink.PutEx ADS_PROPERTY_UPDATE, "siteList", _
Array(strSite1DN, strSite2DN)
objSiteLink.SetInfo
Create an Active Directory Subnet
strSubnetRDN = "cn=192.168.1.0/26"
strSiteObjectRDN = "cn=Ga-Atl-Sales"
strDescription = "192.168.1.0/255.255.255.192"
strLocation= "USA/GA/Atlanta"
Set objRootDSE = GetObject("LDAP://RootDSE")
strConfigurationNC = objRootDSE.Get("configurationNamingContext")
strSiteObjectDN = strSiteObjectRDN & ",cn=Sites," & strConfigurationNC
strSubnetsContainer = "LDAP://cn=Subnets,cn=Sites," & strConfigurationNC
Set objSubnetsContainer = GetObject(strSubnetsContainer)
Set objSubnet = objSubnetsContainer.Create("subnet", strSubnetRDN)
objSubnet.Put "siteObject", strSiteObjectDN
objSubnet.Put "description", strDescription
objSubnet.Put "location", strLocation
objSubnet.SetInfo
Delete an Active Directory Subnet
strSubnetCN = "cn=192.168.1.0/26"
Set objRootDSE = GetObject("LDAP://RootDSE")
strConfigurationNC = objRootDSE.Get("configurationNamingContext")
strSubnetsContainer = "LDAP://cn=Subnets,cn=Sites," & strConfigurationNC
Set objSubnetsContainer = GetObject(strSubnetsContainer)
objSubnetsContainer.Delete "subnet", strSubnetCN
List Active Directory Connections
strDcRDN = "cn=atl-dc-01"
strSiteRDN = "cn=Ga-Atl-Sales"
Set objRootDSE = GetObject("LDAP://RootDSE")
strConfigurationNC = objRootDSE.Get("configurationNamingContext")
strNtdsSettingsPath = "LDAP://cn=NTDS Settings," & strDcRDN & _
",cn=Servers," & strSiteRDN & ",cn=Sites," & strConfigurationNC
Set objNtdsSettings = GetObject(strNtdsSettingsPath)
objNtdsSettings.Filter = Array("nTDSConnection")
WScript.Echo strDcRDN & " NTDS Connection Objects" & vbCrLf & _
String(Len(strDcRDN) + 24, "=")
For Each objConnection In objNtdsSettings
WScript.Echo "Name:" & objConnection.Name
WScript.Echo "Enabled: " & objConnection.enabledConnection
WScript.Echo "From:" & Split(objConnection.fromServer, ",")(1)
WScript.Echo "Options: " & objConnection.Options
WScript.Echo "Transport: " & Split(objConnection.transportType, ",")(0)
WScript.Echo "Naming Contexts"
WScript.Echo "---------------"
For Each objDNWithBin In objConnection.GetEx("ms-DS-ReplicatesNCReason")
Wscript.Echo objDNWithBin.DNString
Next
WScript.Echo
Next
List Active Directory Sites
Set objRootDSE = GetObject("LDAP://RootDSE")
strConfigurationNC = objRootDSE.Get("configurationNamingContext")
strSitesContainer = "LDAP://cn=Sites," & strConfigurationNC
Set objSitesContainer = GetObject(strSitesContainer)
objSitesContainer.Filter = Array("site")
For Each objSite In objSitesContainer
WScript.Echo "Name: " & objSite.Name
Next
List All Domain Controllers
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.CommandText = _
"Select distinguishedName from " & _
"'LDAP://cn=Configuration,DC=fabrikam,DC=com' " _
& "where objectClass='nTDSDSA'"
objCommand.Properties("Page Size") = 1000
objCommand.Properties("Searchscope") = ADS_SCOPE_SUBTREE
Set objRecordSet = objCommand.Execute
objRecordSet.MoveFirst
Do Until objRecordSet.EOF
Wscript.Echo "Computer Name: " & _
objRecordSet.Fields("distinguishedName").Value
objRecordSet.MoveNext
Loop
List Servers in an Active Directory Site
strSiteRDN = "cn=Ga-Atl-Sales"
Set objRootDSE = GetObject("LDAP://RootDSE")
strConfigurationNC = objRootDSE.Get("configurationNamingContext")
strServersPath = "LDAP://cn=Servers," & strSiteRDN & ",cn=Sites," & _
strConfigurationNC
Set objServersContainer = GetObject(strServersPath)
For Each objServer In objServersContainer
WScript.Echo "Name: " & objServer.Name
Next
List the Protocols Over Which a Bridgehead Server Replicates
On Error Resume Next
Set objServer = GetObject _
("LDAP://CN=SEA-DC-01,CN=Servers,CN=Default-First-Site-Name,"& _
" CN=Sites,CN=Configuration,DC=fabrikam,DC=com")
dnBHTList = objServer.GetEx("bridgeheadTransportList")
WScript.Echo "Bridge Head Transport List:"
WScript.Echo "This multi-valued attribute lists the protocol" & _
"transports over which this BridgeHead Server replicates"
For Each dnValue in dnBHTList
WScript.Echo "Value: " & dnValue
Next
List the Site Name for aDomain Controller
strDcName = "atl-dc-01"
Set objADSysInfo = CreateObject("ADSystemInfo")
strDcSiteName = objADSysInfo.GetDCSiteName(strDcName)
WScript.Echo "DC Site Name: " & strDcSiteName
List the Site Name for the Local Computer
Set objADSysInfo = CreateObject("ADSystemInfo")
WScript.Echo "Current site name: " & objADSysInfo.SiteName
List the Subnets in all Active Directory Sites
Set objRootDSE = GetObject("LDAP://RootDSE")
strConfigurationNC = objRootDSE.Get("configurationNamingContext")
strSubnetsContainer = "LDAP://cn=Subnets,cn=Sites," & strConfigurationNC
Set objSubnetsContainer = GetObject(strSubnetsContainer)
objSubnetsContainer.Filter = Array("subnet")
Set objHash = CreateObject("Scripting.Dictionary")
For Each objSubnet In objSubnetsContainer
objSubnet.GetInfoEx Array("siteObject"), 0
strSiteObjectDN = objSubnet.Get("siteObject")
strSiteObjectName = Split(Split(strSiteObjectDN, ",")(0), "=")(1)
If objHash.Exists(strSiteObjectName) Then
objHash(strSiteObjectName) = objHash(strSiteObjectName) & "," & _
Split(objSubnet.Name, "=")(1)
Else
objHash.Add strSiteObjectName, Split(objSubnet.Name, "=")(1)
End If
Next
For Each strKey In objHash.Keys
WScript.Echo strKey & "," & objHash(strKey)
Next
List the Subnets in an Active Directory Site
strSiteRDN = "cn=Ga-Atl-Sales"
Set objRootDSE = GetObject("LDAP://RootDSE")
strConfigurationNC = objRootDSE.Get("configurationNamingContext")
strSitePath = "LDAP://" & strSiteRDN & ",cn=Sites," & strConfigurationNC
Set objSite = GetObject(strSitePath)
objSite.GetInfoEx Array("siteObjectBL"), 0
arrSiteObjectBL = objSite.GetEx("siteObjectBL")
WScript.Echo strSiteRDN & " Subnets" & vbCrLf & _
String(Len(strSiteRDN) + 8, "-")
For Each strSiteObjectBL In arrSiteObjectBL
WScript.Echo Split(Split(strSiteObjectBL, ",")(0), "=")(1)
Next
List Your Domain Controller
Set objDomain = GetObject("LDAP://rootDse")
objDC = objDomain.Get("dnsHostName")
Wscript.Echo "Authenticating domain controller:" & objDC
Move a Domain Controller to a New Active Directory Site
strSourceSiteRDN = "cn=Default-First-Site-Name"
strTargetSiteRDN = "cn=Ga-Atl-Sales"
strDcRDN = "cn=atl-dc-01"
Set objRootDSE = GetObject("LDAP://RootDSE")
strConfigurationNC = objRootDSE.Get("configurationNamingContext")
strDcPath = "LDAP://" & strDcRDN & ",cn=Servers," & strSourceSiteRDN & _
",cn=Sites," & strConfigurationNC
strTargetSitePath = "LDAP://cn=Servers," & strTargetSiteRDN & _
",cn=Sites," & strConfigurationNC
Set objTargetSite = GetObject(strTargetSitePath)
objTargetSite.MoveHere strDcPath, strDcRDN
Rename an Active Directory Site
strOldSiteRDN = "cn=Default-First-Site-Name"
strNewSiteRDN = "cn=Ga-Atl-Sales"
Set objRootDSE = GetObject("LDAP://RootDSE")
strConfigurationNC = objRootDSE.Get("configurationNamingContext")
strSitesContainer = "LDAP://cn=Sites," & strConfigurationNC
strOldSitePath = "LDAP://" & strOldSiteRDN & ",cn=Sites," & strConfigurationNC
Set objSitesContainer = GetObject(strSitesContainer)
objSitesContainer.MoveHere strOldSitePath, strNewSiteRDN
Verify that a Domain Controller is in a Site
strDcName = "atl-dc-01"
strSiteName = "ga-atl-sales"
Set objADSysInfo = CreateObject("ADSystemInfo")
strDcSiteName = objADSysInfo.GetDCSiteName(strDcName)
If UCase(strSiteName) = UCase(strDcSiteName) Then
WScript.Echo "TRUE: " & strDcName & " is in site " & strSiteName
Else
WScript.Echo "FALSE: " & strDcName & " is NOT in site " & strSiteName
End If
Add a Route to the Dial-In Properties of a User Account
Add Additional postOfficeBox Information for a User Account
Add an Additional Home Phone Number to a User Account
Add an Additional URL to a User Account
Assign the Primary Group for a User
Clearing User Account Address Attributes
Copy a Published Certificate to a User Account
Delete a Calling Station ID from a User Account
Delete a Post Office Box from a User Account
Delete Address Page Information for a User Account
Delete All Department and Direct Report Information from a User Account
Delete All Dial-In Properties for a User Account
Delete All Published Certificates from a User Account
Delete an otherMobile Phone Number
Delete Published Certificates from a User Account
Delete Selected Attributes from a User Account
Delete Selected User Account Attributes
Delete User Account Telephone Attributes
Disable the Smartcard Required Attribute for a User Account
Enable a User to Log on at Any Time
Modify Account Page Information for a User Account
Modify Address Page Information for a User Account
Modify COM+ Information for a User Account
Modify Dial-In Properties for a User Account
Modify General User Account Attributes
Modify Organization Properties for a User Account
Modify User Account Address Attributes
Modify User Account General Properties
Modify User Account Telephone Numbers
Modify User Profile Paths
Modify User Profile Properties
Modify User Telephone Properties
Require a User to Logon on Using a Smartcard
Assign a Password to a User
Change the Password for a User
Create a Non-Expiring Password
Enable Users to Change Their Passwords
List Domain Password Policy Settings
List Domain Password Property Attributes
List Password Attributes for a User Account
List When a Password Expires
List When a Password was Last Changed
Prevent Passwords from Being Stored Using Reversible Encrypted Text
Prevent Users From Changing Their Passwords
Require Users to Change Their Password
Verify Whether Users Can Change Their Passwords
List Account Page Information for a User Account
List Address Page Information for a User Account
List All Telephone Settings for a User Account
List All the Attributes of the User Class
List Allowed User Logon Hours
List Audit Permissions for a User Account
List COM+ Information for a User Account
List Object Page Information for a User Account
List Organization Information for a User Account
List Published Certificates for a User Account
List Security Permissions for a User Account
List the Dial-In Property Configuration Settings for a User Account
List User Account Account Page Properties
List User Account Address Page Attributes
List User Account General Page Properties
List User Profile Properties
List userAccountControl Values for an Active Directory User Account
Search for a User Account in Active Directory
Copy a Published Certificate to a User Account
Copy Allowed Logon Hours from One Account to Another
Create 1000 Sample User Accounts
Create a Contact in Active Directory
Create a User Account
Create a User Account and Add it to a Group and an OU
Delete a User Account from Active Directory
List the Owner of a User Account
Modify the UPN Suffixes Defined in the Forest
Move a User Account
Move a User Account to a New Domain
Set a User Account So It Never Expires
Disable a User Account
Enable a User Account
List All the Disabled User Accounts in Active Directory
List the Date That a User Account Expires
List the Status of a User
Modify the Expiration Date for a User Account
Unlock a User Account
List Fax Server Activity Logging Options
List Fax Server Device Information
List Fax Server Device Providers
List Fax Server Event Logging Options
List Fax Server Incoming Archive Information
List Fax Server Incoming Queue Information
List Fax Server Information
List Fax Server Outgoing Archive Information
List Fax Server Outgoing Queue Information
List Fax Server Receipt Options
List Fax Server Security Information
Monitor Fax Server Activity
Configuring the Indexing Service to Autostart
Create an Indexing Service Catalog
Create an Indexing Service Scope
Delete an Indexing Service Catalog
Delete an Indexing Service Scope
List Indexing Service Catalogs
List Indexing Service Scopes
List Specific Files Included in the Indexing Service
List the State of the Indexing Service
Monitor Indexing Service Filter Performance
Monitor Indexing Service Performance
Pause the Indexing Service
Resume the Indexing Service
Search for Files Using the Indexing Service
Search Indexing Server Using a Predefined Query
Search the Indexing Service Using a Free Text Search
Start the Indexing Service
Stop the Indexing Service
Delete Software
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colSoftware = objWMIService.ExecQuery _
("Select * from Win32_Product Where Name = 'Personnel database'")
For Each objSoftware in colSoftware
objSoftware.Uninstall()
Next
Install Software on a Remote Computer
Const wbemImpersonationLevelDelegate = 4
Set objWbemLocator = CreateObject("WbemScripting.SWbemLocator")
Set objConnection = objwbemLocator.ConnectServer _
("WebServer", "root\cimv2", "fabrikam\administrator", _
"password", , "kerberos:WebServer")
objConnection.Security_.ImpersonationLevel = wbemImpersonationLevelDelegate
Set objSoftware = objConnection.Get("Win32_Product")
errReturn = objSoftware.Install("\\atl-dc-02\scripts\1561_lab.msi",,True)
Install Software on the Local Computer
Const ALL_USERS = True
Set objService = GetObject("winmgmts:")
Set objSoftware = objService.Get("Win32_Product")
errReturn = objSoftware.Install("c:\scripts\database.msi", , ALL_USERS)
List Information About the Binary Files Used by an Application
On Error Resume Next
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colItems = objWMIService.ExecQuery("Select * from Win32_Binary")
For Each objItem in colItems
Wscript.Echo "Name: " & objItem.Name
Wscript.Echo "Product Code: " & objItem.ProductCode
Wscript.Echo
Next
List Installed or Advertised Components and Applications
On Error Resume Next
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colItems = objWMIService.ExecQuery _
("Select * from Win32_ApplicationService")
For Each objItem in colItems
Wscript.Echo "Name: " & objItem.Name
Wscript.Echo "Start Mode: " & objItem.StartMode
Wscript.Echo
Next
List Installed Software
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objTextFile = objFSO.CreateTextFile("c:\scripts\software.tsv", True)
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colSoftware = objWMIService.ExecQuery _
("Select * from Win32_Product")
objTextFile.WriteLine "Caption" & vbtab & _
"Description" & vbtab & "Identifying Number" & vbtab & _
"Install Date" & vbtab & "Install Location" & vbtab & _
"Install State" & vbtab & "Name" & vbtab & _
"Package Cache" & vbtab & "SKU Number" & vbtab & "Vendor" & vbtab _
& "Version"
For Each objSoftware in colSoftware
objTextFile.WriteLine objSoftware.Caption & vbtab & _
objSoftware.Description & vbtab & _
objSoftware.IdentifyingNumber & vbtab & _
objSoftware.InstallDate2 & vbtab & _
objSoftware.InstallLocation & vbtab & _
objSoftware.InstallState & vbtab & _
objSoftware.Name & vbtab & _
objSoftware.PackageCache & vbtab & _
objSoftware.SKUNumber & vbtab & _
objSoftware.Vendor & vbtab & _
objSoftware.Version
Next
objTextFile.Close
List Installed Software Features
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colFeatures = objWMIService.ExecQuery _
("Select * from Win32_SoftwareFeature")
For Each objFeature in colfeatures
Wscript.Echo "Accesses: " & objFeature.Accesses
Wscript.Echo "Attributes: " & objFeature.Attributes
Wscript.Echo "Caption: " & objFeature.Caption
Wscript.Echo "Description: " & objFeature.Description
Wscript.Echo "Identifying Number: " & objFeature.IdentifyingNumber
Wscript.Echo "Install Date: " & objFeature.InstallDate
Wscript.Echo "Install State: " & objFeature.InstallState
Wscript.Echo "Last Use: " & objFeature.LastUse
Wscript.Echo "Name: " & objFeature.Name
Wscript.Echo "Product Name: " & objFeature.ProductName
Wscript.Echo "Vendor: " & objFeature.Vendor
Wscript.Echo "Version: " & objFeature.Version
Next
List Microsoft Product IDs
Set objMSInfo = CreateObject("MsPIDinfo.MsPID")
colMSApps = objMSInfo.GetPIDInfo()
For Each strApp in colMSApps
Wscript.Echo strApp
Next
List the Codec Files on a Computer
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colItems = objWMIService.ExecQuery("Select * from Win32_CodecFile")
For Each objItem in colItems
Wscript.Echo "Access Mask: " & objItem.AccessMask
Wscript.Echo "Archive: " & objItem.Archive
Wscript.Echo "Caption: " & objItem.Caption
strCreationDate = WMIDateStringToDate(objItem.CreationDate)
Wscript.Echo "Creation Date: " & strCreationdate
Wscript.Echo "Drive: " & objItem.Drive
Wscript.Echo "Eight Dot Three File Name: " & _
objItem.EightDotThreeFileName
Wscript.Echo "Extension: " & objItem.Extension
Wscript.Echo "File Name: " & objItem.FileName
Wscript.Echo "File Size: " & objItem.FileSize
Wscript.Echo "File Type: " & objItem.FileType
Wscript.Echo "File System Name: " & objItem.FSName
Wscript.Echo "Group: " & objItem.Group
Wscript.Echo "Hidden: " & objItem.Hidden
strInstallDate = WMIDateStringToDate(objItem.InstallDate)
Wscript.Echo "Last Accessed: " & strLastAccessed
strLastModified = WMIDateStringToDate(objItem.LastModified)
Wscript.Echo "Last Modified: " & strLastModified
Wscript.Echo "Manufacturer: " & objItem.Manufacturer
Wscript.Echo "Name: " & objItem.Name
Wscript.Echo "Path: " & objItem.Path
Wscript.Echo "Version: " & objItem.Version
Next
Function WMIDateStringToDate(dtmDate)
WMIDateStringToDate = CDate(Mid(dtmDate, 5, 2) & "/" & _
Mid(dtmDate, 7, 2) & "/" & Left(dtmDate, 4) _
& " " & Mid (dtmDate, 9, 2) & ":" & _
Mid(dtmDate, 11, 2) & ":" & Mid(dtmDate, _
13, 2))
End Function
Upgrade Software
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colSoftware = objWMIService.ExecQuery _
("Select * from Win32__Product Where Name = 'Personnel Database'")
For Each objSoftware in colSoftware
errReturn = objSoftware.Upgrade("c:\scripts\database2.msi")
Next
List All Installed Software
Const HKLM = &H80000002
'HKEY_LOCAL_MACHINE
strComputer = "."
strKey = "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\"
strEntry1a = "DisplayName"
strEntry1b = "QuietDisplayName"
strEntry2 = "InstallDate"
strEntry3 = "VersionMajor"
strEntry4 = "VersionMinor"
strEntry5 = "EstimatedSize"
Set objReg = GetObject("winmgmts://" & strComputer & _
"/root/default:StdRegProv")
objReg.EnumKey HKLM, strKey, arrSubkeys
WScript.Echo "Installed Applications" & VbCrLf
For Each strSubkey In arrSubkeys
intRet1 = objReg.GetStringValue(HKLM, strKey & strSubkey, _
strEntry1a, strValue1)
If intRet1 <> 0 Then
objReg.GetStringValue HKLM, strKey & strSubkey, _
strEntry1b, strValue1
End If
If strValue1 <> "" Then
WScript.Echo VbCrLf & "Display Name: " & strValue1
End If
objReg.GetStringValue HKLM, strKey & strSubkey, _
strEntry2, strValue2
If strValue2 <> "" Then
WScript.Echo "Install Date: " & strValue2
End If
objReg.GetDWORDValue HKLM, strKey & strSubkey, _
strEntry3, intValue3
objReg.GetDWORDValue HKLM, strKey & strSubkey, _
strEntry4, intValue4
If intValue3 <> "" Then
WScript.Echo "Version: " & intValue3 & "." & intValue4
End If
objReg.GetDWORDValue HKLM, strKey & strSubkey, _
strEntry5, intValue5
If intValue5 <> "" Then
WScript.Echo "Estimated Size: " & Round(intValue5/1024, 3) & " megabytes"
End If
Next
'EnumerateinstalledOLEDBprovidersonlocalcomputer
ConstHKEY_CLASSES_ROOT=&H80000000
SetobjRegistry=GetObject("winmgmts:\\.\root\default:StdRegProv")
objRegistry.enumKeyHKEY_CLASSES_ROOT,"CLSID",arrKeys
ForeachkeyinarrKeys
IfobjRegistry.GetDWordValue(HKEY_CLASSES_ROOT,"CLSID\"&key,"OLEDB_SERVICES",uValue)=0Then
objRegistry.GetStringValueHKEY_CLASSES_ROOT,"CLSID\"&key,"",providerName
objRegistry.GetStringValueHKEY_CLASSES_ROOT,"CLSID\"&key&"\OLEDBProvider","",description
WScript.Echo"["&providerName&"]"&description
Endif
Next
'EnumerateinstalledODBCDriversonlocalcomputer
ConstHKEY_LOCAL_MACHINE=&H80000002
SetobjRegistry=GetObject("winmgmts:\\.\root\default:StdRegProv")
strKeyPath="SOFTWARE\ODBC\ODBCINST.INI\ODBCDrivers"
objRegistry.EnumValuesHKEY_LOCAL_MACHINE,strKeyPath,arrValueNames,arrValueTypes
Fori=0toUBound(arrValueNames)
strValueName=arrValueNames(i)
objRegistry.GetStringValueHKEY_LOCAL_MACHINE,strKeyPath,strValueName,strValue
Wscript.EchoarrValueNames(i)&""&strValue
Next
'CreateanewMicrosoftAccessDatabase
connectionString="Provider=Microsoft.ACE.OLEDB.16.0;DataSource=c:\mynewdatabase.accdb"
Setcatalog=CreateObject("ADOX.Catalog")
SetobjConn=catalog.Create(connectionString)
objConn.Close()
Download Vbsedit to get sample database
'CreateanewTableinaMicrosoftAccessDatabase
SetobjConn=CreateObject("ADODB.Connection")
Setshell=CreateObject("WScript.Shell")
folder=shell.ExpandEnvironmentStrings("%LOCALAPPDATA%")&"\Adersoft\Vbsedit\Resources\"
objConn.open"Provider=Microsoft.ACE.OLEDB.16.0;DataSource="&folder&"mydatabase.accdb"
Setcatalog=CreateObject("ADOX.Catalog")
Settable=CreateObject("ADOX.Table")
Setcatalog.ActiveConnection=objConn
table.Name="Test_Table"
ConstadInteger=3
table.Columns.Append"Field1",adInteger
ConstadKeyPrimary=1
table.Keys.Append"PrimaryKey",adKeyPrimary,"Field1"
catalog.Tables.Appendtable
objConn.Close
Download Vbsedit to get sample database
'ConnecttoandQueryaMicrosoftAccessDatabase
SetobjConn=CreateObject("ADODB.Connection")
Setshell=CreateObject("WScript.Shell")
folder=shell.ExpandEnvironmentStrings("%LOCALAPPDATA%")&"\Adersoft\Vbsedit\Resources\"
objConn.open"Provider=Microsoft.ACE.OLEDB.16.0;DataSource="&folder&"mydatabase.accdb"
Setors=objConn.Execute("select*fromtable1")
DoWhileNot(ors.EOF)
WScript.Echoors("field1").Value
ors.MoveNext
Loop
ors.Close
Download Vbsedit to get sample database
'AddnewRowstoatableinaMicrosoftAccessDatabase
SetobjConn=CreateObject("ADODB.Connection")
Setshell=CreateObject("WScript.Shell")
folder=shell.ExpandEnvironmentStrings("%LOCALAPPDATA%")&"\Adersoft\Vbsedit\Resources\"
objConn.open"Provider=Microsoft.ACE.OLEDB.16.0;DataSource="&folder&"mydatabase.accdb"
SetoRS=CreateObject("ADODB.Recordset")
ConstadOpenKeyset=1
ConstadLockOptimistic=3
oRS.Open"table1",objConn,adOpenKeyset,adLockOptimistic
Fori=0to10
oRS.AddNew
oRS("Field1")="value_"&Int((100*Rnd)+1)
oRS.Update
Next
oRS.Close
objConn.Close
Download Vbsedit to get sample database
'ListalltablesinaMicrosoftAccessDatabase
SetobjConn=CreateObject("ADODB.Connection")
Setshell=CreateObject("WScript.Shell")
folder=shell.ExpandEnvironmentStrings("%LOCALAPPDATA%")&"\Adersoft\Vbsedit\Resources\"
objConn.open"Provider=Microsoft.ACE.OLEDB.16.0;DataSource="&folder&"mydatabase.accdb"
strTableName="Table1"
SetobjRecordSet=CreateObject("ADODB.Recordset")
ConstadSchemaColumns=4
SetobjRecordSet=objConn.OpenSchema(adSchemaColumns,Array(Null,Null,strTableName))
ConstadArray=8192
ConstadBigInt=20
ConstadBinary=128
ConstadBoolean=11
ConstadBSTR=8
ConstadChapter=136
ConstadChar=129
ConstadCurrency=6
ConstadDate=7
ConstadDBDate=133
ConstadDBTime=134
ConstadDBTimeStamp=135
ConstadDecimal=14
ConstadDouble=5
ConstadEmpty=0
ConstadError=10
ConstadFileTime=64
ConstadGUID=72
ConstadIDispatch=9
ConstadInteger=3
ConstadIUnknown=13
ConstadLongVarBinary=205
ConstadLongVarChar=201
ConstadLongVarWChar=203
ConstadNumeric=131
ConstadPropVariant=138
ConstadSingle=4
ConstadSmallInt=2
ConstadTinyInt=16
ConstadUnsignedBigInt=21
ConstadUnsignedInt=19
ConstadUnsignedSmallInt=18
ConstadUnsignedTinyInt=17
ConstadUserDefined=132
ConstadVarBinary=204
ConstadVarChar=200
ConstadVariant=12
ConstadVarNumeric=139
ConstadVarWChar=202
ConstadWChar=130
DoUntilobjRecordset.EOF
Wscript.Echo"Columnname:"&objRecordset.Fields.Item("COLUMN_NAME")
Wscript.Echo"Datatype:"&objRecordset.Fields.Item("DATA_TYPE")
Wscript.Echo
objRecordset.MoveNext
Loop
Download Vbsedit to get sample database
'ListalltablesinaMicrosoftAccessDatabase
SetobjConn=CreateObject("ADODB.Connection")
Setshell=CreateObject("WScript.Shell")
folder=shell.ExpandEnvironmentStrings("%LOCALAPPDATA%")&"\Adersoft\Vbsedit\Resources\"
objConn.open"Provider=Microsoft.ACE.OLEDB.16.0;DataSource="&folder&"mydatabase.accdb"
strTableName="Table1"
SetobjRecordSet=CreateObject("ADODB.Recordset")
ConstadSchemaIndexes=12
SetobjRecordSet=objConn.OpenSchema(adSchemaIndexes,Array(Empty,Empty,Empty,Empty,strTableName))
DoUntilobjRecordset.EOF
ForEachfieldInobjRecordset.Fields
WScript.Echofield.Name&":"&field.Value
Next
Wscript.Echo
objRecordset.MoveNext
Loop
Download Vbsedit to get sample database
'ListalltablesinaMicrosoftAccessDatabase
SetobjConn=CreateObject("ADODB.Connection")
Setshell=CreateObject("WScript.Shell")
folder=shell.ExpandEnvironmentStrings("%LOCALAPPDATA%")&"\Adersoft\Vbsedit\Resources\"
objConn.open"Provider=Microsoft.ACE.OLEDB.16.0;DataSource="&folder&"mydatabase.accdb"
SetobjRecordSet=CreateObject("ADODB.Recordset")
ConstadSchemaTables=20
SetobjRecordSet=objConn.OpenSchema(adSchemaTables)
DoUntilobjRecordset.EOF
Wscript.Echo"Tablename:"&objRecordset.Fields.Item("TABLE_NAME")
Wscript.Echo"Tabletype:"&objRecordset.Fields.Item("TABLE_TYPE")
Wscript.Echo
objRecordset.MoveNext
Loop
Download Vbsedit to get sample database
'ListTablesandColumnsinaMicrosoftAccessDatabase
SetobjConn=CreateObject("ADODB.Connection")
Setshell=CreateObject("WScript.Shell")
folder=shell.ExpandEnvironmentStrings("%LOCALAPPDATA%")&"\Adersoft\Vbsedit\Resources\"
objConn.open"Provider=Microsoft.ACE.OLEDB.16.0;DataSource="&folder&"mydatabase.accdb"
SetobjRecordSet=CreateObject("ADODB.Recordset")
ConstadSchemaTables=20
SetobjRecordSet=objConn.OpenSchema(adSchemaTables)
DoUntilobjRecordset.EOF
IfobjRecordset("TABLE_TYPE")="TABLE"Then
WScript.EchoobjRecordset("TABLE_NAME")
displayColumnsobjRecordset("TABLE_NAME").Value
WScript.Echo
EndIf
objRecordset.MoveNext
Loop
objRecordset.Close
objConn.Close
SubdisplayColumns(strTableName)
SetobjRecordSet2=CreateObject("ADODB.Recordset")
ConstadSchemaColumns=4
SetobjRecordSet2=objConn.OpenSchema(adSchemaColumns,Array(Null,Null,strTableName))
DoUntilobjRecordset2.EOF
Wscript.Echo""&objRecordset2("COLUMN_NAME")&""&objRecordset2("DATA_TYPE")
objRecordset2.MoveNext
Loop
objRecordset2.Close
EndSub
ConstadArray=8192
ConstadBigInt=20
ConstadBinary=128
ConstadBoolean=11
ConstadBSTR=8
ConstadChapter=136
ConstadChar=129
ConstadCurrency=6
ConstadDate=7
ConstadDBDate=133
ConstadDBTime=134
ConstadDBTimeStamp=135
ConstadDecimal=14
ConstadDouble=5
ConstadEmpty=0
ConstadError=10
ConstadFileTime=64
ConstadGUID=72
ConstadIDispatch=9
ConstadInteger=3
ConstadIUnknown=13
ConstadLongVarBinary=205
ConstadLongVarChar=201
ConstadLongVarWChar=203
ConstadNumeric=131
ConstadPropVariant=138
ConstadSingle=4
ConstadSmallInt=2
ConstadTinyInt=16
ConstadUnsignedBigInt=21
ConstadUnsignedInt=19
ConstadUnsignedSmallInt=18
ConstadUnsignedTinyInt=17
ConstadUserDefined=132
ConstadVarBinary=204
ConstadVarChar=200
ConstadVariant=12
ConstadVarNumeric=139
ConstadVarWChar=202
ConstadWChar=130
Download Vbsedit to get sample database
'SelectdatafromanSQLitedatabase
'using3rdPartyODBCDriver:http://www.ch-werner.de/sqliteodbc
Setcn=CreateObject("ADODB.Connection")
Setshell=CreateObject("WScript.Shell")
folder=shell.ExpandEnvironmentStrings("%LOCALAPPDATA%")&"\Adersoft\Vbsedit\Resources\"
cn.Open"Driver={SQLite3ODBCDriver};Database="&folder&"test.db;"
Setrs=cn.Execute("select*fromuser")
DoWhileNot(rs.EOF)
WScript.Echors("email").Value
rs.MoveNext
Loop
rs.Close
cn.Close
Download Vbsedit to get sample files
'ExtractDatafromMicrosoftExcel
SetobjConn=CreateObject("ADODB.Connection")
Setshell=CreateObject("WScript.Shell")
folder=shell.ExpandEnvironmentStrings("%LOCALAPPDATA%")&"\Adersoft\Vbsedit\Resources\"
objConn.open"Provider=Microsoft.ACE.OLEDB.16.0;DataSource="&folder&"data.xlsx;ExtendedProperties=""Excel12.0;"";"
Setors=objConn.Execute("select*from[data$]")
DoWhileNot(ors.EOF)
WScript.Echoors("col1").Value&""&ors("col2").Value
ors.MoveNext
Loop
ors.Close
Download Vbsedit to get sample files
'ExtractDatafromMultipleExcelWorkbooks
Dimfso
Setfso=CreateObject("Scripting.Filesystemobject")
Setshell=CreateObject("WScript.Shell")
folder=shell.ExpandEnvironmentStrings("%LOCALAPPDATA%")&"\Adersoft\Vbsedit\Resources\"
ForEachfileInfso.GetFolder(folder).Files
extension=Mid(file.Name,InStrRev(file.Name,"."))
Ifextension=".xlsx"Then
SetobjConn=CreateObject("ADODB.Connection")
objConn.open"Provider=Microsoft.ACE.OLEDB.16.0;DataSource="&file.Path&";ExtendedProperties=""Excel12.0;"";"
Setors=objConn.Execute("select*from[data$]")
DoWhileNot(ors.EOF)
WScript.Echoors(0).Value&""&ors(1).Value
ors.MoveNext
Loop
ors.Close
objConn.Close
EndIf
Next
Download Vbsedit to get sample files
'ListAllWorksheetsinanExcelWoorkbook
SetobjConnection=CreateObject("ADODB.Connection")
Setshell=CreateObject("WScript.Shell")
folder=shell.ExpandEnvironmentStrings("%LOCALAPPDATA%")&"\Adersoft\Vbsedit\Resources\"
objConnection.Open"Provider=Microsoft.ACE.OLEDB.16.0;DataSource="&folder&"data.xlsx;ExtendedProperties=""Excel12.0;"""
SetobjRecordSet=CreateObject("ADODB.Recordset")
ConstadSchemaTables=20
SetobjRecordSet=objConnection.OpenSchema(adSchemaTables)
DoUntilobjRecordset.EOF
WScript.EchoobjRecordset.Fields.Item("TABLE_NAME")&"-"&objRecordset.Fields.Item("TABLE_TYPE")
objRecordset.MoveNext
Loop
Download Vbsedit to get sample files
'CreateaPivotTableinExcel
SetobjExcel=CreateObject("Excel.Application")
objExcel.Visible=True
Setshell=CreateObject("WScript.Shell")
folder=shell.ExpandEnvironmentStrings("%LOCALAPPDATA%")&"\Adersoft\Vbsedit\Resources\"
SetxlBook1=objExcel.WorkBooks.Open(folder&"\pivot.xlsx")
SetobjData=xlBook1.Worksheets("data")
ConstxlR1C1=-4150
SrcData="Data!"&objData.UsedRange.Address(xlR1C1)
'SrcData="Data!"&objData.Range("A1:D100").Address(xlR1C1)
SetobjSheet=xlBook1.Sheets.Add(,objData)
objSheet.Name="Pivot"
ConstxlDatabase=1
SetpvtTable=xlBook1.PivotCaches.Create(xlDatabase,SrcData).CreatePivotTable("Pivot!R1C1","PivotTable1")
ConstxlRowField=1
pvtTable.pivotFields("Name").orientation=xlRowField
ConstxlColumnField=2
pvtTable.pivotFields("Category").orientation=xlColumnField
ConstxlFilterField=3
pvtTable.pivotFields("Date").orientation=xlFilterField
ConstxlSum=-4157
pvtTable.AddDataFieldpvtTable.PivotFields("Value"),"SumofValue",xlSum
Download Vbsedit to get sample database
Learn more about schema.ini
'ReadaSemicolonSeparatedtextfile
'Youshouldcreateaschemainformationfile(schema.ini)inthesamedirectory
SetobjConn=CreateObject("ADODB.Connection")
Setshell=CreateObject("WScript.Shell")
folder=shell.ExpandEnvironmentStrings("%LOCALAPPDATA%")&"\Adersoft\Vbsedit\Resources\"
objConn.open"Provider=Microsoft.ACE.OLEDB.16.0;DataSource="&folder&";ExtendedProperties=""Text;"";"
Setors=objConn.Execute("select*from[cities_semicolon.txt]")
DoWhileNot(ors.EOF)
WScript.Echoors("city").Value&""&ors("Latitude").Value&""&ors("Longitude").Value
ors.MoveNext
Loop
ors.Close
Download Vbsedit to get sample files
Learn more about schema.ini
'ReadaCommaSeparatedtextfile
'Youshouldcreateaschemainformationfile(schema.ini)inthesamedirectory
SetobjConn=CreateObject("ADODB.Connection")
Setshell=CreateObject("WScript.Shell")
folder=shell.ExpandEnvironmentStrings("%LOCALAPPDATA%")&"\Adersoft\Vbsedit\Resources\"
objConn.open"Provider=Microsoft.ACE.OLEDB.16.0;DataSource="&folder&";ExtendedProperties=""Text;"";"
Setors=objConn.Execute("select*from[cities_comma.txt]")
DoWhileNot(ors.EOF)
WScript.Echoors("city").Value&""&ors("Latitude").Value&""&ors("Longitude").Value
ors.MoveNext
Loop
ors.Close
Download Vbsedit to get sample files
Learn more about schema.ini
'ReadaTabSeparatedtextfile
'Youshouldcreateaschemainformationfile(schema.ini)inthesamedirectory
SetobjConn=CreateObject("ADODB.Connection")
Setshell=CreateObject("WScript.Shell")
folder=shell.ExpandEnvironmentStrings("%LOCALAPPDATA%")&"\Adersoft\Vbsedit\Resources\"
objConn.open"Provider=Microsoft.ACE.OLEDB.16.0;DataSource="&folder&";ExtendedProperties=""Text;"";"
Setors=objConn.Execute("select*from[cities_tab.txt]")
DoWhileNot(ors.EOF)
WScript.Echoors("city").Value&""&ors("Latitude").Value&""&ors("Longitude").Value
ors.MoveNext
Loop
ors.Close
Download Vbsedit to get sample files
Learn more about schema.ini
'ReadaUTF-8CommaSeparatedtextfile
'Youshouldcreateaschemainformationfile(schema.ini)inthesamedirectory
SetobjConn=CreateObject("ADODB.Connection")
Setshell=CreateObject("WScript.Shell")
folder=shell.ExpandEnvironmentStrings("%LOCALAPPDATA%")&"\Adersoft\Vbsedit\Resources\"
objConn.open"Provider=Microsoft.ACE.OLEDB.16.0;DataSource="&folder&";ExtendedProperties=""Text;"";"
Setors=objConn.Execute("select*from[cities_utf8.txt]")
DoWhileNot(ors.EOF)
WScript.Echoors("city").Value&""&ors("Latitude").Value&""&ors("Longitude").Value
ors.MoveNext
Loop
ors.Close
'GPSCoordinates(Latitude,Longitude)fromAddress
address="11ruedeTurbigoParis"
Seto=CreateObject("MSXML2.XMLHTTP")
o.open"GET","https://maps.googleapis.com/maps/api/geocode/xml?address="&address,False
o.send
SetobjDoc=CreateObject("MSXML2.DOMDocument")
objDoc.loadXMLo.responseText
WScript.EchoobjDoc.selectSingleNode("GeocodeResponse/status").text
Setlatlong=objDoc.selectSingleNode("GeocodeResponse/result/geometry/location")
WScript.Echolatlong.selectSingleNode("lat").text
WScript.Echolatlong.selectSingleNode("lng").text
Download IP to Country Free Database from Software77.net
'GeolocationofIPAddress-IPtoCountry
'UsingVbsedit'sfreeToolkit and Software77 database
Setip=CreateObject("Vbsedit.iptocountry")
Setfso=CreateObject("Scripting.Filesystemobject")
IfNot(fso.FileExists("iptocountry.bin"))Then
Iffso.FileExists("iptocountry.csv")Then
ip.CreateDatabaseFromCsv"iptocountry.csv","iptocountry.bin"
Else
WScript.Quit
EndIf
Else
Iffso.FileExists("iptocountry.csv")Then
Iffso.GetFile("iptocountry.csv").DateLastModified>_
fso.GetFile("iptocountry.bin").DateLastModifiedThen
ip.CreateDatabaseFromCsv"iptocountry.csv","iptocountry.bin"
EndIf
EndIf
EndIf
'ifyouneedtoconvertonlyafewIPaddresses
ip.DatabasePath="iptocountry.bin"
'ifyouneedtoconvertalotofIPaddresses
'ip.LoadDatabaseIntoMemory"iptocountry.bin"
code=ip.IpToCountry("185.238.208.18")
WScript.Echocode
WScript.Echoip.CountryCodeToLongCode(code)
WScript.Echoip.CountryCodeToCountryName(code)
Download IP to Country Free Database from Software77.net
'GeolocationofIPAddress(IPtoCountry) in IIS Logs
d=Now
limit=d-5
Dimfso
Setfso=CreateObject("Scripting.Filesystemobject")
Dimdic
Setdic=CreateObject("Scripting.Dictionary")
Setip=CreateObject("Vbsedit.iptocountry")
IfNot(fso.FileExists("iptocountry.bin"))Then
Iffso.FileExists("iptocountry.csv")Then
ip.CreateDatabaseFromCsv"iptocountry.csv","iptocountry.bin"
Else
WScript.Quit
EndIf
Else
Iffso.FileExists("iptocountry.csv")Then
Iffso.GetFile("iptocountry.csv").DateLastModified>_
fso.GetFile("iptocountry.bin").DateLastModifiedThen
ip.CreateDatabaseFromCsv"iptocountry.csv","iptocountry.bin"
EndIf
EndIf
EndIf
'ifyouneedtoconvertalotofIPaddresses
ip.LoadDatabaseIntoMemory"iptocountry.bin"
DimtheDate,theTime,serviceName,serverName,serverIP
Dimmethod,uriStem,uriQuery,serverPort,username,clientIp,protocolVersion
DimuserAgent,cookie,referrer,host,protocolStatus
DimsubStatus,win32Status,bytesSentByServer,bytesReceived,timeTaken
DoWhiled>limit
file="C:\LogFiles\W3SVC4\u_ex"&mydatepart("yyyy",d)&mydatepart("m",d)&myDatepart("d",d)&".log"
IfNot(fso.FileExists(file))then
ExitDo
Endif
Dimff
Setff=fso.OpenTextFile(file,1)
Dowhilenot(ff.AtEndofstream)
Dimstr
str=ff.ReadLine
filterok=False
Ifleft(str,9)="#Fields:"Then
ParseFieldNamessplit(Mid(str,10),"")
ElseIfLeft(str,1)<>"#"Then
filterok=True
ParseFieldssplit(str,"")
EndIf
IffilterokThen
code=ip.IpToCountry(clientIp)
country=ip.CountryCodeToCountryName(code)
WScript.Echocountry
WScript.EchotheDate,theTime,serviceName,serverName,serverIP
WScript.Echomethod,uriStem,uriQuery,serverPort,username,clientIp,protocolVersion
WScript.EchouserAgent,cookie,referrer,host,protocolStatus
WScript.EchosubStatus,win32Status,bytesSentByServer,bytesReceived,timeTaken
EndIf
Loop
d=d-1
Loop
SubParseFields(arr)
theDate=""
Ifdic.Exists("date")Then
theDate=arr(dic.Item("date"))
EndIf
theTime=""
Ifdic.Exists("time")Then
theTime=arr(dic.Item("time"))
EndIf
serviceName=""
Ifdic.Exists("s-sitename")Then
serviceName=arr(dic.Item("s-sitename"))
EndIf
serverName=""
Ifdic.Exists("s-computername")Then
serverName=arr(dic.Item("s-computername"))
EndIf
serverIP=""
Ifdic.Exists("s-ip")Then
serverIP=arr(dic.Item("s-ip"))
EndIf
method=""
Ifdic.Exists("cs-method")Then
method=arr(dic.Item("cs-method"))
EndIf
uriStem=""
Ifdic.Exists("cs-uri-stem")Then
uriStem=arr(dic.Item("cs-uri-stem"))
EndIf
uriQuery=""
Ifdic.Exists("cs-uri-query")Then
uriQuery=arr(dic.Item("cs-uri-query"))
EndIf
serverPort=""
Ifdic.Exists("s-port")Then
serverPort=arr(dic.Item("s-port"))
EndIf
username=""
Ifdic.Exists("cs-username")Then
username=arr(dic.Item("cs-username"))
EndIf
clientIp=""
Ifdic.Exists("c-ip")Then
clientIp=arr(dic.Item("c-ip"))
EndIf
protocolVersion=""
Ifdic.Exists("cs-version")Then
protocolVersion=arr(dic.Item("cs-version"))
EndIf
userAgent=""
Ifdic.Exists("cs(User-Agent)")Then
userAgent=arr(dic.Item("cs(User-Agent)"))
EndIf
cookie=""
Ifdic.Exists("cs(Cookie)")Then
cookie=arr(dic.Item("cs(Cookie)"))
EndIf
referrer=""
Ifdic.Exists("cs(Referrer)")Then
referrer=arr(dic.Item("cs(Referrer)"))
EndIf
host=""
Ifdic.Exists("cs-host")Then
host=arr(dic.Item("cs-host"))
EndIf
protocolStatus=""
Ifdic.Exists("sc-status")Then
protocolStatus=arr(dic.Item("sc-status"))
EndIf
subStatus=""
Ifdic.Exists("sc-substatus")Then
subStatus=arr(dic.Item("sc-substatus"))
EndIf
win32Status=""
Ifdic.Exists("sc-win32-status")Then
win32Status=arr(dic.Item("sc-win32-status"))
EndIf
bytesSentByServer=0
Ifdic.Exists("sc-bytes")Then
bytesSentByServer=arr(dic.Item("sc-bytes"))
EndIf
bytesReceived=0
Ifdic.Exists("cs-bytes")Then
bytesReceived=arr(dic.Item("cs-bytes"))
EndIf
timeTaken=0
Ifdic.Exists("time-taken")Then
timeTaken=arr(dic.Item("time-taken"))
EndIf
EndSub
SubParseFieldNames(arr)
dic.RemoveAll
Fori=0toUBound(arr)
dic.Addarr(i),i
Next
EndSub
FunctionMydatepart(attr,d)
Dimv
v=CStr(DatePart(attr,d))
ifLen(v)=1then
v="0"&v
elseiflen(v)>2then
v=Right(v,2)
endif
Mydatepart=v
EndFunction
Download Vbsedit to get sample files
Learn more about schema.ini
'CreateaPivotTableWithoutExcel
'usingVbsedit'sfreeToolkit
SetobjConn=CreateObject("ADODB.Connection")
Setshell=CreateObject("WScript.Shell")
folder=shell.ExpandEnvironmentStrings("%LOCALAPPDATA%")&"\Adersoft\Vbsedit\Resources\"
objConn.open"Provider=Microsoft.ACE.OLEDB.16.0;DataSource="&folder&";ExtendedProperties=""Text;"";"
Setpivot=CreateObject("Vbsedit.PivotTable")
pivot.Initialize3,1
Setors=objConn.Execute("select*from[pivot.csv]")
DoWhileNot(ors.EOF)
pivot.Addors("Date").Value,ors("Name").Value,ors("Category").Value,ors("Value1").Value
ors.MoveNext
Loop
ors.Close
objConn.Close
pivot.Finalize
pivot.SaveToFilecurrentdir&"pivot.piv"
Foreachitem1Inpivot.Axe(1)
SetrowTotal1=pivot.Aggregate(item1.ID)
WScript.Echoitem1.Label&"[Total:"&rowTotal1.Measure(1)&"]"
Foreachitem2Inpivot.Axe(2)
SetrowTotal2=pivot.Aggregate(item1.ID,item2.ID)
WScript.Echo""&item2.Label&"[Total:"&rowTotal2.Measure(1)&"]"
Foreachitem3Inpivot.Axe(3)
Setrow=pivot.Aggregate(item1.ID,item2.ID,item3.ID)
WScript.Echo""&row.Label(3)&":"&row.Measure(1)
Next
Next
Next
SetrowTotal=pivot.Aggregate()
WScript.Echo"[GrandTotal:"&rowTotal.Measure(1)&"]"
Download Vbsedit to get sample files
'CreateaPivotChartWithoutExcel
'usingVbsedit'sfreeToolkit
Dimfso
Setfso=WScript.CreateObject("Scripting.Filesystemobject")
Setshell=CreateObject("WScript.Shell")
folder=shell.ExpandEnvironmentStrings("%LOCALAPPDATA%")&"\Adersoft\Vbsedit\Resources\"
Setf=fso.OpenTextFile(folder&"pivot.csv",1)
header=f.ReadLine
Setpivot=CreateObject("Vbsedit.PivotTable")
pivot.Initialize3,2
DoWhileNot(f.AtEndOfStream)
line=f.ReadLine
arr=Split(line,";")
pivot.Addarr(0),arr(1),arr(2),Replace(arr(3),".",","),Replace(arr(4),".",",")
Loop
pivot.SetColumnNames"Name","Category","Date","Value1","Value2"
pivot.Finalize
pivot.LoadChartTemplate"column"
pivot.ReplaceTag"title","MyColumnChart"
pivot.ReplaceTag"bars","vertical"
pivot.ReplaceTag"stacked","false"
pivot.SaveChartfolder&"column.htm"
shell.Runfolder&"column.htm",1,False
List Local Computer Information
Set objComputer = CreateObject("Shell.LocalMachine")
Wscript.Echo "Computer name: " & objComputer.MachineName
Wscript.Echo "Shutdown allowed: " & objComputer.IsShutdownAllowed
Wscript.Echo "Friendly UI enabled: " & objComputer.IsFriendlyUIEnabled
Wscript.Echo "Guest access mode: " & objComputer.IsGuestAccessMode
Wscript.Echo "Guest account enabled: " & _
objComputer.IsGuestEnabled(0)
Wscript.Echo "Multiple users enabled: " & _
objComputer.IsMultipleUsersEnabled
Wscript.Echo "Offline files enabled: " & _
objComputer.IsOfflineFilesEnabled
Wscript.Echo "Remote connections enabled: " & _
objComputer.IsRemoteConnectionsEnabled
Wscript.Echo "Undock enabled: " & objComputer.IsUndockEnabled
Verify That SQL Server is Installed on a Computer
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colServices = objWMIService.ExecQuery _
("Select * from Win32_Service Where Name = 'MSSQLServer'")
If colServices.Count > 0 Then
For Each objService in colServices
Wscript.Echo "SQL Server is " & objService.State & "."
Next
Else
Wscript.Echo "SQL Server is not installed on this computer."
End If
List Processor Information
strComputer = "."
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\CIMV2")
Set colCSes = objWMIService.ExecQuery("SELECT * FROM Win32_ComputerSystem")
For Each objCS In colCSes
WScript.Echo "Computer Name: " & objCS.Name
WScript.Echo "System Type: " & objCS.SystemType
WScript.Echo "Number Of Processors: " & objCS.NumberOfProcessors
Next
Set colProcessors = objWMIService.ExecQuery("Select * from Win32_Processor")
For Each objProcessor in colProcessors
WScript.Echo "Manufacturer: " & objProcessor.Manufacturer
WScript.Echo "Name: " & objProcessor.Name
WScript.Echo "Description: " & objProcessor.Description
WScript.Echo "Processor ID: " & objProcessor.ProcessorID
WScript.Echo "Address Width: " & objProcessor.AddressWidth
WScript.Echo "Data Width: " & objProcessor.DataWidth
WScript.Echo "Family: " & objProcessor.Family
WScript.Echo "Maximum Clock Speed: " & objProcessor.MaxClockSpeed
Next
List Physical and Virtual Memory Information
strComputer = "."
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\CIMV2")
Set colCSItems = objWMIService.ExecQuery("SELECT * FROM Win32_ComputerSystem")
For Each objCSItem In colCSItems
WScript.Echo "Total Physical Memory: " & objCSItem.TotalPhysicalMemory
Next
Set colOSItems = objWMIService.ExecQuery("SELECT * FROM Win32_OperatingSystem")
For Each objOSItem In colOSItems
WScript.Echo "Free Physical Memory: " & objOSItem.FreePhysicalMemory
WScript.Echo "Total Virtual Memory: " & objOSItem.TotalVirtualMemorySize
WScript.Echo "Free Virtual Memory: " & objOSItem.FreeVirtualMemory
WScript.Echo "Total Visible Memory Size: " & objOSItem.TotalVisibleMemorySize
Next
List Domain or Workgroup Information
Windows 2000 : Yes (except for 2 properties noted below)
Windows NT 4.0 : Yes (except for 2 properties noted below)
strComputer = "."
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\CIMV2")
Set colItems = objWMIService.ExecQuery("SELECT * FROM Win32_ComputerSystem")
For Each objItem In colItems
WScript.Echo "Computer Name: " & objItem.Name
WScript.Echo "Name Format: " & objItem.NameFormat
WScript.Echo "Domain: " & objItem.Domain
WScript.Echo "Part Of Domain: " & objItem.PartOfDomain
'post-Windows 2000 only
WScript.Echo "Workgroup: " & objItem.Workgroup
'post-Windows 2000 only
Select Case objItem.DomainRole
Case 0 strDomainRole = "Standalone Workstation"
Case 1 strDomainRole = "Member Workstation"
Case 2 strDomainRole = "Standalone Server"
Case 3 strDomainRole = "Member Server"
Case 4 strDomainRole = "Backup Domain Controller"
Case 5 strDomainRole = "Primary Domain Controller"
End Select
WScript.Echo "Domain Role: " & strDomainRole
strRoles = Join(objItem.Roles, ",")
WScript.Echo "Roles: " & strRoles
WScript.Echo "Network Server Mode Enabled: " & _
objItem.NetworkServerModeEnabled
Next
List System Locations
strComputer = "."
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\CIMV2")
Set colOSItems = objWMIService.ExecQuery("SELECT * FROM Win32_OperatingSystem")
For Each objOSItem In colOSItems
WScript.Echo "Boot Device: " & objOSItem.BootDevice
WScript.Echo "System Device: " & objOSItem.SystemDevice
WScript.Echo "System Drive: " & objOSItem.SystemDrive
WScript.Echo "Windows Directory: " & objOSItem.WindowsDirectory
WScript.Echo "System Directory: " & objOSItem.SystemDirectory
Next
List Power Management Information
strComputer = "."
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\CIMV2")
Set colItems = objWMIService.ExecQuery("SELECT * FROM Win32_ComputerSystem")
For Each objItem In colItems
If Not IsNull(objItem.PowerManagementCapabilities) Then
strPowerManagementCapabilities = _
Join(objItem.PowerManagementCapabilities, ",")
End If
WScript.Echo "PowerManagementCapabilities: " & _
strPowerManagementCapabilities
WScript.Echo "PowerManagementSupported: " & objItem.PowerManagementSupported
Select Case objItem.PowerState
Case 0 strPowerState = "Unknown"
Case 1 strPowerState = "Full Power"
Case 2 strPowerState = "Power Save - Low Power Mode"
Case 3 strPowerState = "Power Save - Standby"
Case 4 strPowerState = "Power Save - Unknown"
Case 5 strPowerState = "Power Cycle"
Case 6 strPowerState = "Power Off"
Case 7 strPowerState = "Power Save - Warning"
End Select
WScript.Echo "PowerState: " & strPowerState
Select Case objItem.PowerSupplyState
Case 1 strPowerSupplyState = "Other"
Case 2 strPowerSupplyState = "Unknown"
Case 3 strPowerSupplyState = "Safe"
Case 4 strPowerSupplyState = "Warning"
Case 5 strPowerSupplyState = "Critical"
Case 6 strPowerSupplyState = "Non-recoverable"
End Select
WScript.Echo "PowerSupplyState: " & strPowerSupplyState
Next
List Local Users and Owner
strComputer = "."
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\CIMV2")
Set colCSItems = objWMIService.ExecQuery("SELECT * FROM Win32_ComputerSystem")
For Each objCSItem In colCSItems
WScript.Echo "User Name: " & objCSItem.UserName
WScript.Echo "Primary Owner Name: " & objCSItem.PrimaryOwnerName
WScript.Echo "Primary Owner Contact: " & objCSItem.PrimaryOwnerContact
Next
Set colOSItems = objWMIService.ExecQuery("SELECT * FROM Win32_OperatingSystem")
For Each objOSItem In colOSItems
WScript.Echo "Registered User: " & objOSItem.RegisteredUser
WScript.Echo "Number Of Users: " & objOSItem.NumberOfUsers
WScript.Echo "Number Of Licensed Users: " & objOSItem.NumberOfLicensedUsers
Next
List Computer Manufacturer and Model
strComputer = "."
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\CIMV2")
Set colItems = objWMIService.ExecQuery("SELECT * FROM Win32_ComputerSystem")
For Each objItem In colItems
WScript.Echo "Name: " & objItem.Name
WScript.Echo "Manufacturer: " & objItem.Manufacturer
WScript.Echo "Model: " & objItem.Model
Next
List Locale and Language Information
strComputer = "."
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\CIMV2")
Set colItems = objWMIService.ExecQuery("SELECT * FROM Win32_OperatingSystem")
For Each objItem In colItems
WScript.Echo "Country Code: " & objItem.CountryCode
WScript.Echo "Locale: " & objItem.Locale
WScript.Echo "OS Language: " & objItem.OSLanguage
WScript.Echo "Code Set: " & objItem.CodeSet
Next
List Operating System and Service Pack Information
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colOSes = objWMIService.ExecQuery("Select * from Win32_OperatingSystem")
For Each objOS in colOSes
Wscript.Echo "Computer Name: " & objOS.CSName
Wscript.Echo "Caption: " & objOS.Caption
'Name
Wscript.Echo "Version: " & objOS.Version
'Version & build
Wscript.Echo "Build Number: " & objOS.BuildNumber
'Build
Wscript.Echo "Build Type: " & objOS.BuildType
Wscript.Echo "OS Type: " & objOS.OSType
Wscript.Echo "Other Type Description: " & objOS.OtherTypeDescription
WScript.Echo "Service Pack: " & objOS.ServicePackMajorVersion & "." & _
objOS.ServicePackMinorVersion
Next
'Verify Whether Internet Explorer Enhanced Security is Enabled for the Logged-on User
On Error Resume Next
Const HKEY_CURRENT_USER = &H80000001
strComputer = "."
Set objReg = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}\\" & strComputer & _
"\root\default:StdRegProv")
strKeyPath = "SOFTWARE\Microsoft\Windows\CurrentVersion\Internet " _
& "Settings\ZoneMap"
strValueName = "IEHarden"
objReg.GetDWORDValue HKEY_CURRENT_USER,strKeyPath,strValueName,intHarden
If intHarden = 1 Then
Wscript.Echo "IE hardening is turned on for the current user."
Else
Wscript.Echo "IE hardening is not turned on for the current user."
End If
Add a Web Site to the Favorites Menu
Const ADMINISTRATIVE_TOOLS = 6
Set objShell = CreateObject("Shell.Application")
Set objFolder = objShell.Namespace(ADMINISTRATIVE_TOOLS)
Set objFolderItem = objFolder.Self
Set objShell = WScript.CreateObject("WScript.Shell")
strDesktopFld = objFolderItem.Path
Set objURLShortcut = objShell.CreateShortcut(strDesktopFld & "\MSDN.url")
objURLShortcut.TargetPath = "http://msdn.microsoft.com"
objURLShortcut.Save
Add Sites to an Internet Explorer Security Zone
On Error Resume Next
Const HKEY_CURRENT_USER = &H80000001
strComputer = "."
Set objReg = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}\\" & strComputer & _
"\root\default:StdRegProv")
strKeyPath = "Software\Microsoft\Windows\CurrentVersion\Internet Settings\" _
& "ZoneMap\ESCDomains\Contoso.com"
objReg.CreateKey HKEY_CURRENT_USER,strKeyPath
strValueName = "http"
dwValue = 2
objReg.SetDWORDValue HKEY_CURRENT_USER,strKeyPath,strValueName,dwValue
strKeyPath = "Software\Microsoft\Windows\CurrentVersion\Internet Settings\" _
& "ZoneMap\ESCDomains\BenefitsWeb"
objReg.CreateKey HKEY_CURRENT_USER,strKeyPath
strValueName = "*"
dwValue = 1
objReg.SetDWORDValue HKEY_CURRENT_USER,strKeyPath,strValueName,dwValue
Delete a Site from an Internet Explorer Security Zone
On Error Resume Next
Const HKEY_CURRENT_USER = &H80000001
strComputer = "."
Set objReg = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}\\" & strComputer & _
"\root\default:StdRegProv")
strKeyPath = "Software\Microsoft\Windows\CurrentVersion\Internet Settings\" _
& "ZoneMap\ESCDomains\Contoso.com"
objReg.DeleteKey HKEY_CURRENT_USER, strKeyPath
Delete an Allowed Protocol from an Internet Explorer Security Zone Site
On Error Resume Next
Const HKEY_CURRENT_USER = &H80000001
strComputer = "."
Set objReg = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}\\" & strComputer & _
"\root\default:StdRegProv")
strKeyPath = "Software\Microsoft\Windows\CurrentVersion\Internet Settings\" _
& "ZoneMap\ESCDomains\Finance"
strDWORDValueName = "http"
objReg.DeleteValue HKEY_CURRENT_USER,strKeyPath,strDWORDValueName
ListInternet Explorer Connection Summary Information
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & _
"\root\cimv2\Applications\MicrosoftIE")
Set colIESettings = objWMIService.ExecQuery _
("Select * from MicrosoftIE_ConnectionSummary")
For Each strIESetting in colIESettings
Wscript.Echo "Connection preference: " & _
strIESetting.ConnectionPreference
Wscript.Echo "HTTP 1.1. enabled: " & strIESetting.EnableHTTP11
Wscript.Echo "Proxy HTTP 1.1. enabled: " & strIESetting.ProxyHTTP11
Next
List Audited Internet Explorer Events from the Security Log
On Error Resume Next
strComputer = "."
Set dtmDate = CreateObject("WbemScripting.SWbemDateTime")
Set objWMIService = GetObject("winmgmts:" _
& "{(Security)}!\\" & strComputer & "\root\cimv2")
Set colLoggedEvents = objWMIService.ExecQuery _
("SELECT * FROM Win32_NTLogEvent WHERE Logfile = 'Security' AND " _
& "EventCode = '560'")
For Each objEvent in colLoggedEvents
errResult = _
InStr(objEvent.Message,"\REGISTRY\MACHINE\SOFTWARE\Microsoft\")
If errResult <> 0 Then
Select Case objEvent.EventType
Case 4 strEventType = "Success"
Case 5 strEventType = "Failure"
End Select
Wscript.Echo objEvent.User
dtmDate.Value = objEvent.TimeWritten
dtmTimeWritten = dtmDate.GetVarDate
Wscript.Echo "Time written: " & dtmTimeWritten
Wscript.Echo strEventType
Wscript.Echo "Record number: " & objEvent.RecordNumber & VbCrLf
Wscript.Echo objEvent.Message
Wscript.Echo
End If
Next
List Internet Explorer Cache Settings
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & _
"\root\cimv2\Applications\MicrosoftIE")
Set colIESettings = objWMIService.ExecQuery _
("Select * from MicrosoftIE_Cache")
For Each strIESetting in colIESettings
Wscript.Echo "Page refresh type: " & strIESetting.PageRefreshType
Wscript.Echo "Temporary Internet files folder: " & _
strIESetting.TempInternetFilesFolder
Next
List Internet Explorer COM Object Settings
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & _
"\root\cimv2\Applications\MicrosoftIE")
Set colIESettings = objWMIService.ExecQuery _
("Select * from MicrosoftIE_Object")
For Each strIESetting in colIESettings
Wscript.Echo "Code base: " & strIESetting.CodeBase
Wscript.Echo "Program file: " & strIESetting.ProgramFile
Wscript.Echo "Status: " & strIESetting.Status
Next
List Internet Explorer Connection Settings
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & _
"\root\cimv2\Applications\MicrosoftIE")
Set colIESettings = objWMIService.ExecQuery _
("Select * from MicrosoftIE_ConnectionSettings")
For Each strIESetting in colIESettings
Wscript.Echo "Allow Internet programs: " & _
strIESetting.AllowInternetPrograms
Wscript.Echo "Autoconfiguration URL: " & strIESetting.AutoConfigURL
Wscript.Echo "Auto disconnect: " & strIESetting.AutoDisconnect
Wscript.Echo "Autoconfiguration proxy detection mode: " & _
strIESetting.AutoProxyDetectMode
Wscript.Echo "Data encryption: " & strIESetting.DataEncryption
Wscript.Echo "Default: " & strIESetting.Default
Wscript.Echo "Default gateway: " & strIESetting.DefaultGateway
Wscript.Echo "Dialup server: " & strIESetting.DialUpServer
Wscript.Echo "Disconnect idle time: " & strIESetting.DisconnectIdleTime
Wscript.Echo "Encrypted password: " & strIESetting.EncryptedPassword
Wscript.Echo "IP address: " & strIESetting.IPAddress
Wscript.Echo "IP header compression: " & _
strIESetting.IPHeaderCompression
Wscript.Echo "Modem: " & strIESetting.Modem
Wscript.Echo "Name: " & strIESetting.Name
Wscript.Echo "Network logon: " & strIESetting.NetworkLogon
Wscript.Echo "Network protocols: " & strIESetting.NetworkProtocols
Wscript.Echo "Primary DNS server: " & strIESetting.PrimaryDNS
Wscript.Echo "Primary WINS server: " & strIESetting.PrimaryWINS
Wscript.Echo "Proxy: " & strIESetting.Proxy
Wscript.Echo "Proxy override: " & strIESetting.ProxyOverride
Wscript.Echo "Proxy server: " & strIESetting.ProxyServer
Wscript.Echo "Redial attempts: " & strIESetting.RedialAttempts
Wscript.Echo "Redial wait: " & strIESetting.RedialWait
Wscript.Echo "Script fileame: " & strIESetting.ScriptFileName
Wscript.Echo "Secondary DNS server: " & strIESetting.SecondaryDNS
Wscript.Echo "Secondary WINS server: " & strIESetting.SecondaryWINS
Wscript.Echo "Server assigned IP address: " & _
strIESetting.ServerAssignedIPAddress
Wscript.Echo "Server assigned name server: " & _
strIESetting.ServerAssignedNameServer
Wscript.Echo "Software compression: " & strIESetting.SoftwareCompression
Next
List Internet Explorer File Version Information
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & _
"\root\cimv2\Applications\MicrosoftIE")
Set colIESettings = objWMIService.ExecQuery _
("Select * from MicrosoftIE_FileVersion")
For Each strIESetting in colIESettings
Wscript.Echo "Company: " & strIESetting.Company
Wscript.Echo "Date: " & strIESetting.Date
Wscript.Echo "File name: " & strIESetting.File
Wscript.Echo "Path: " & strIESetting.Path
Wscript.Echo "File size: " & strIESetting.Size
Wscript.Echo "Version: " & strIESetting.Version
Next
List Internet Explorer LAN Settings
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & _
"\root\cimv2\Applications\MicrosoftIE")
Set colIESettings = objWMIService.ExecQuery _
("Select * from MicrosoftIE_LANSettings")
For Each strIESetting in colIESettings
Wscript.Echo "Autoconfiguration proxy: " & strIESetting.AutoConfigProxy
Wscript.Echo "Autoconfiguration URL: " & strIESetting.AutoConfigURL
Wscript.Echo "Autoconfiguration Proxy detection mode: " & _
strIESetting.AutoProxyDetectMode
Wscript.Echo "Proxy: " & strIESetting.Proxy
Wscript.Echo "Proxy override: " & strIESetting.ProxyOverride
Wscript.Echo "Proxy server: " & strIESetting.ProxyServer
Next
List Internet Explorer Security Setting Values
On Error Resume Next
Const HKEY_CURRENT_USER = &H80000001
strComputer = "."
strEntry = "1400"
Set objReg = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}\\" & strComputer & _
"\root\default:StdRegProv")
strKeyPath = "Software\Microsoft\Windows\CurrentVersion\Internet Settings\" _
& "Zones\1"
objReg.GetDWORDValue HKEY_CURRENT_USER, strKeyPath, strEntry, dwValue
Select Case dwValue
Case 0 strSetting = "Enabled"
Case 1 strSetting = "Prompt"
case 3 strSetting = "Disabled"
End Select
Wscript.Echo "Allow scripting: " & strSetting
List Internet Explorer Security Zone Settings
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & _
"\root\cimv2\Applications\MicrosoftIE")
Set colIESettings = objWMIService.ExecQuery _
("Select * from MicrosoftIE_Security")
For Each strIESetting in colIESettings
Wscript.Echo "Zone name: " & strIESetting.Zone
Wscript.Echo "Security level: " & strIESetting.Level
Next
List Internet Explorer Summary Settings
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & _
"\root\cimv2\Applications\MicrosoftIE")
Set colIESettings = objWMIService.ExecQuery _
("Select * from MicrosoftIE_Summary")
For Each strIESetting in colIESettings
Wscript.Echo "Active printer: " & strIESetting.ActivePrinter
Wscript.Echo "Build: " & strIESetting.Build
Wscript.Echo "Cipher strength: " & strIESetting.CipherStrength
Wscript.Echo "Content advisor: " & strIESetting.ContentAdvisor
Wscript.Echo "IE Administration Kit installed: " & _
strIESetting.IEAKInstall
Wscript.Echo "Language: " & strIESetting.Language
Wscript.Echo "Name: " & strIESetting.Name
Wscript.Echo "Path: " & strIESetting.Path
Wscript.Echo "Product ID: " & strIESetting.ProductID
Wscript.Echo "Version: " & strIESetting.Version
Next
List Sites in Internet Explorer Security Zones
On Error Resume Next
Const HKEY_CURRENT_USER = &H80000001
strComputer = "."
Set objReg = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}\\" & strComputer & _
"\root\default:StdRegProv")
strKeyPath = "Software\Microsoft\Windows\CurrentVersion\Internet Settings\" _
& "ZoneMap\ESCDomains"
objReg.EnumKey HKEY_CURRENT_USER, strKeyPath, arrSubKeys
For Each subkey In arrSubKeys
strNewPath = strKeyPath & "\" & subkey
ShowSubkeys
Next
Sub ShowSubkeys
arrPath = Split(strNewPath, "\")
intSiteName = Ubound(arrPath)
strSiteName = arrPath(intSiteName)
objReg.EnumValues HKEY_CURRENT_USER, strNewPath, arrEntries, arrValueTypes
If Not IsArray(arrEntries) Then
arrPath = Split(strNewPath, "\")
intSiteName = Ubound(arrPath)
strSiteName = arrPath(intSiteName)
Wscript.Echo strsitename
objReg.EnumKey HKEY_CURRENT_USER, strNewPath, arrSubKeys2
For Each subkey In arrSubKeys2
strNewPath2 = strNewPath & "\" & subkey
arrPath = Split(strNewPath2, "\")
intSiteName = Ubound(arrPath)
strSiteName = arrPath(intSiteName)
objReg.EnumValues HKEY_CURRENT_USER, strNewPath2, arrEntries2,_
arrValueTypes
For i = 0 to Ubound(arrEntries2)
objReg.GetDWORDValue HKEY_CURRENT_USER, strNewPath2, _
arrEntries2(i),dwValue
Next
Select Case dwValue
Case 0 strZone = "My Computer"
Case 1 strZone = "Local Intranet zone"
Case 2 strZone = "Trusted Sites Zone"
Case 3 strZone = "Internet Zone"
Case 4 strZone = "Restricted Sites Zone"
End Select
Wscript.Echo vbtab & strSiteName & " -- " & strZone
Next
End If
For i = 0 to Ubound(arrEntries)
objReg.GetDWORDValue HKEY_CURRENT_USER, strNewPath, _
arrEntries(i),dwValue
Next
Select Case dwValue
Case 0 strZone = "My Computer"
Case 1 strZone = "Local Intranet zone"
Case 2 strZone = "Trusted Sites Zone"
Case 3 strZone = "Internet Zone"
Case 4 strZone = "Restricted Sites Zone"
End Select
Wscript.Echo strSiteName & " -- " & strZone
End Sub
Modify Advanced Internet Explorer Settings
On Error Resume Next
Const HKEY_CURRENT_USER = &H80000001
strComputer = "."
strValue = "no"
Set objReg = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}\\" & strComputer & _
"\root\default:StdRegProv")
strKeyPath = "Software\Microsoft\Internet Explorer\Main"
objReg.SetStringValue HKEY_CURRENT_USER, strKeyPath, _
"NotifyDownloadComplete",strValue
Modify Internet Explorer Advanced Settings
On Error Resume Next
Const HKEY_CURRENT_USER = &H80000001
strComputer = "."
strEntry = "DisplayTrustAlertDlg"
Set objReg = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}\\" & strComputer & _
"\root\default:StdRegProv")
strKeyPath = "Software\Microsoft\Internet Explorer\Main"
objReg.GetDWORDValue HKEY_CURRENT_USER, strKeyPath, strEntry ,dwValue
If dwValue = 1 Then
Wscript.Echo "Enhanced security dialog box is displayed."
Else
Wscript.Echo "Enhanced security dialog box is not displayed."
End If
Modify Internet Explorer Security Settings
On Error Resume Next
Const HKEY_CURRENT_USER = &H80000001
strComputer = "."
Set objReg = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}\\" & strComputer & _
"\root\default:StdRegProv")
strKeyPath = "Software\Microsoft\Windows\CurrentVersion\Internet Settings\" _
& "Zones\1"
strEntryName = "1400"
dwvalue = 0
objReg.SetDWORDValue HKEY_CURRENT_USER, strKeyPath, strEntryName,dwValue
Monitor Internet Explorer Security Changes
On Error Resume Next
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{"{impersonationLevel=impersonate,(Security)}!\\" & strComputer & _
"\root\cimv2")
Set colMonitoredEvents = objWMIService.ExecNotificationQuery _
("SELECT * FROM __InstanceCreationEvent WHERE TargetInstance ISA " _
& "'Win32_NTLogEvent' AND TargetInstance.EventCode = '560' AND " _
& "TargetInstance.Logfile = 'Security' GROUP WITHIN 2")
Do
Set objLatestEvent = colMonitoredEvents.NextEvent
strAlertToSend = "Internet Explorer security settings have been " & _
"changed."
Wscript.Echo strAlertToSend
Loop
Verify Internet Explorer Enhanced Security Configuration Status
On Error Resume Next
Const HKEY_LOCAL_MACHINE = &H80000002
strComputer = "."
Set objReg = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}\\" & strComputer & _
"\root\default:StdRegProv")
strKeyPath = "SOFTWARE\Microsoft\Active Setup\Installed Components\" _
& "{A509B1A7-37EF-4b3f-8CFC-4F3A74704073}"
strValueName = "IsInstalled"
objReg.GetDWORDValue HKEY_LOCAL_MACHINE,strKeyPath,strValueName,intAdmin
strKeyPath = "SOFTWARE\Microsoft\Active Setup\Installed Components\" _
& "{A509B1A8-37EF-4b3f-8CFC-4F3A74704073}"
strValueName = "IsInstalled"
objReg.GetDWORDValue HKEY_LOCAL_MACHINE,strKeyPath,strValueName,intUsers
strConfiguration = intAdmin & intUsers
Select Case strConfiguration
Case "00"
Wscript.Echo "The use of Internet Explorer is not restricted on " _
& "this server."
Case "01"
Wscript.Echo "The use of Internet Explorer is restricted for the " _
& "administrators group on this server. The use of Internet " _
& "Explorer is not restricted for any other user group."
Case "10"
Wscript.Echo "The use of Internet Explorer is not restricted for the" _
& " administrators group on this server. The use of Internet " _
& "Explorer is restricted for any other user group."
Case "11"
Wscript.Echo "The use of Internet Explorer is restricted for all " _
& "user groups on this server."
End Select
List Items in the Temporary Internet Files Folder
Const TEMPORARY_INTERNET_FILES = &H20&
Set objShell = CreateObject("Shell.Application")
Set objFolder = objShell.Namespace(TEMPORARY_INTERNET_FILES)
Set objFolderItem = objFolder.Self
Wscript.Echo objFolderItem.Path
Set colItems = objFolder.Items
For Each objItem in colItems
Wscript.Echo objItem.Name
Next
List the Items in the Internet Explorer History Folder
Const LOCAL_SETTINGS_HISTORY = &H22&
Set objShell = CreateObject("Shell.Application")
Set objFolder = objShell.Namespace(LOCAL_SETTINGS_HISTORY)
Set objFolderItem = objFolder.Self
Wscript.Echo objFolderItem.Path
Set colItems = objFolder.Items
For Each objItem in colItems
Wscript.Echo objItem.Name
Next
List the Path to the Internet Explorer Folder
Const INTERNET_EXPLORER = &H1&
Set objShell = CreateObject("Shell.Application")
Set objFolder = objShell.Namespace(INTERNET_EXPLORER)
Set objFolderItem = objFolder.Self
Wscript.Echo objFolderItem.Path
List Items in the Internet Favorites Folder
Const FAVORITES = &H6&
Set objShell = CreateObject("Shell.Application")
Set objFolder = objShell.Namespace(FAVORITES)
Set objFolderItem = objFolder.Self
Wscript.Echo objFolderItem.Path
Set colItems = objFolder.Items
For Each objItem in colItems
Wscript.Echo objItem.Name
Next
List Items in the Internet Cookies Folder
Const COOKIES = &H21&
Set objShell = CreateObject("Shell.Application")
Set objFolder = objShell.Namespace(COOKIES)
Set objFolderItem = objFolder.Self
Wscript.Echo objFolderItem.Path
Set colItems = objFolder.Items
For Each objItem in colItems
Wscript.Echo objItem.Name
Next
List Logon Session Information
On Error Resume Next
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colItems = objWMIService.ExecQuery("Select * from Win32_LogonSession")
For Each objItem in colItems
Wscript.Echo "Authentication Package: " & objItem.AuthenticationPackage
Wscript.Echo "Logon ID: " & objItem.LogonId
Wscript.Echo "Logon Type: " & objItem.LogonType
Wscript.Echo "Start Time: " & objItem.StartTime
Wscript.Echo
Next
List the User Logged on to a Remote Computer
strComputer = "atl-ws-o1"
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colComputer = objWMIService.ExecQuery _
("Select * from Win32_ComputerSystem")
For Each objComputer in colComputer
Wscript.Echo "Logged-on user: " & objComputer.UserName
Next
List User Passport Information
Set objUser = CreateObject("UserAccounts.PassportManager")
Wscript.Echo "Current Passport: " & objUser.CurrentPassport
Wscript.Echo "Member services URL: " & objUser.MemberServicesURL
'ListAllSpecialFoldersinWindows
SetobjShell=CreateObject("Shell.Application")
Fori=0to255
SetobjFolder=objShell.Namespace(i)
OnErrorResumenext
SetobjFolderItem=objFolder.Self
OnErrorResumeNext
WScript.Echoi&""&objFolder.Title&""&objFolderItem.Path
SetobjFolder=Nothing
Next
'ListItemsinthe"Start Menu Programs"folder
ConstCSIDL_PROGRAMS=&H02
SetobjShell=CreateObject("Shell.Application")
SetobjFolder=objShell.Namespace(CSIDL_PROGRAMS)
SetobjFolderItem=objFolder.Self
Wscript.EchoobjFolderItem.Path
Setfso=CreateObject("Scripting.Filesystemobject")
Setfolder=fso.GetFolder(objFolderItem.Path)
ForEachsubfolderinfolder.SubFolders
WScript.Echo"["&subfolder.Name&"]"
Next
ForEachfileinfolder.Files
WScript.Echofile.Name
Next
'ListItemsinthe"Internet Explorer"folder
ConstINTERNET_EXPLORER=&H1
SetobjShell=CreateObject("Shell.Application")
SetobjFolder=objShell.Namespace(INTERNET_EXPLORER)
SetobjFolderItem=objFolder.Self
Wscript.EchoobjFolderItem.Path
SetcolItems=objFolder.Items
ForEachobjItemincolItems
Wscript.EchoobjItem.Name
Next
'ListItemsinthe"Desktop"folder
ConstCSIDL_DESKTOPDIRECTORY=&H10
SetobjShell=CreateObject("Shell.Application")
SetobjFolder=objShell.Namespace(CSIDL_DESKTOPDIRECTORY)
SetobjFolderItem=objFolder.Self
Wscript.EchoobjFolderItem.Path
Setfso=CreateObject("Scripting.Filesystemobject")
Setfolder=fso.GetFolder(objFolderItem.Path)
ForEachsubfolderinfolder.SubFolders
WScript.Echo"["&subfolder.Name&"]"
Next
ForEachfileinfolder.Files
WScript.Echofile.Name
Next
'ListItemsinthe"My Computer"folder
ConstMY_COMPUTER=&H11
SetobjShell=CreateObject("Shell.Application")
SetobjFolder=objShell.Namespace(MY_COMPUTER)
SetobjFolderItem=objFolder.Self
Wscript.EchoobjFolderItem.Path
SetcolItems=objFolder.Items
ForEachobjItemincolItems
Wscript.EchoobjItem.Name
Next
'ListItemsinthe"My Network Places"folder
ConstMY_NETWORK_PLACES=&H12
SetobjShell=CreateObject("Shell.Application")
SetobjFolder=objShell.Namespace(MY_NETWORK_PLACES)
SetobjFolderItem=objFolder.Self
Wscript.EchoobjFolderItem.Path
SetcolItems=objFolder.Items
ForEachobjItemincolItems
Wscript.EchoobjItem.Name
Next
'ListItemsinthe"NetHood"folder
ConstCSIDL_NETHOOD=&H13
SetobjShell=CreateObject("Shell.Application")
SetobjFolder=objShell.Namespace(CSIDL_NETHOOD)
SetobjFolderItem=objFolder.Self
Wscript.EchoobjFolderItem.Path
Setfso=CreateObject("Scripting.Filesystemobject")
Setfolder=fso.GetFolder(objFolderItem.Path)
ForEachsubfolderinfolder.SubFolders
WScript.Echo"["&subfolder.Name&"]"
Next
ForEachfileinfolder.Files
WScript.Echofile.Name
Next
'ListItemsinthe"Fonts"folder
ConstCSIDL_FONTS=&H14
SetobjShell=CreateObject("Shell.Application")
SetobjFolder=objShell.Namespace(CSIDL_FONTS)
SetobjFolderItem=objFolder.Self
Wscript.EchoobjFolderItem.Path
Setfso=CreateObject("Scripting.Filesystemobject")
Setfolder=fso.GetFolder(objFolderItem.Path)
ForEachsubfolderinfolder.SubFolders
WScript.Echo"["&subfolder.Name&"]"
Next
ForEachfileinfolder.Files
WScript.Echofile.Name
Next
'ListItemsinthe"Templates"folder
ConstCSIDL_TEMPLATES=&H15
SetobjShell=CreateObject("Shell.Application")
SetobjFolder=objShell.Namespace(CSIDL_TEMPLATES)
SetobjFolderItem=objFolder.Self
Wscript.EchoobjFolderItem.Path
Setfso=CreateObject("Scripting.Filesystemobject")
Setfolder=fso.GetFolder(objFolderItem.Path)
ForEachsubfolderinfolder.SubFolders
WScript.Echo"["&subfolder.Name&"]"
Next
ForEachfileinfolder.Files
WScript.Echofile.Name
Next
'ListItemsinthe"Common Start Menu"folder
ConstCSIDL_COMMON_STARTMENU=&H16
SetobjShell=CreateObject("Shell.Application")
SetobjFolder=objShell.Namespace(CSIDL_COMMON_STARTMENU)
SetobjFolderItem=objFolder.Self
Wscript.EchoobjFolderItem.Path
Setfso=CreateObject("Scripting.Filesystemobject")
Setfolder=fso.GetFolder(objFolderItem.Path)
ForEachsubfolderinfolder.SubFolders
WScript.Echo"["&subfolder.Name&"]"
Next
ForEachfileinfolder.Files
WScript.Echofile.Name
Next
'ListItemsinthe"Common Start Menu Programs"folder
ConstCSIDL_COMMON_PROGRAMS=&H17
SetobjShell=CreateObject("Shell.Application")
SetobjFolder=objShell.Namespace(CSIDL_COMMON_PROGRAMS)
SetobjFolderItem=objFolder.Self
Wscript.EchoobjFolderItem.Path
Setfso=CreateObject("Scripting.Filesystemobject")
Setfolder=fso.GetFolder(objFolderItem.Path)
ForEachsubfolderinfolder.SubFolders
WScript.Echo"["&subfolder.Name&"]"
Next
ForEachfileinfolder.Files
WScript.Echofile.Name
Next
'ListItemsinthe"Common Startup"folder
ConstCSIDL_COMMON_STARTUP=&H18
SetobjShell=CreateObject("Shell.Application")
SetobjFolder=objShell.Namespace(CSIDL_COMMON_STARTUP)
SetobjFolderItem=objFolder.Self
Wscript.EchoobjFolderItem.Path
Setfso=CreateObject("Scripting.Filesystemobject")
Setfolder=fso.GetFolder(objFolderItem.Path)
ForEachsubfolderinfolder.SubFolders
WScript.Echo"["&subfolder.Name&"]"
Next
ForEachfileinfolder.Files
WScript.Echofile.Name
Next
'ListItemsinthe"Common Desktop"folder
ConstCSIDL_COMMON_DESKTOPDIRECTORY=&H19
SetobjShell=CreateObject("Shell.Application")
SetobjFolder=objShell.Namespace(CSIDL_COMMON_DESKTOPDIRECTORY)
SetobjFolderItem=objFolder.Self
Wscript.EchoobjFolderItem.Path
Setfso=CreateObject("Scripting.Filesystemobject")
Setfolder=fso.GetFolder(objFolderItem.Path)
ForEachsubfolderinfolder.SubFolders
WScript.Echo"["&subfolder.Name&"]"
Next
ForEachfileinfolder.Files
WScript.Echofile.Name
Next
'ListItemsinthe"Application Data"folder
ConstCSIDL_APPDATA=&H1a
SetobjShell=CreateObject("Shell.Application")
SetobjFolder=objShell.Namespace(CSIDL_APPDATA)
SetobjFolderItem=objFolder.Self
Wscript.EchoobjFolderItem.Path
Setfso=CreateObject("Scripting.Filesystemobject")
Setfolder=fso.GetFolder(objFolderItem.Path)
ForEachsubfolderinfolder.SubFolders
WScript.Echo"["&subfolder.Name&"]"
Next
ForEachfileinfolder.Files
WScript.Echofile.Name
Next
'ListItemsinthe"PrintHood"folder
ConstCSIDL_PRINTHOOD=&H1b
SetobjShell=CreateObject("Shell.Application")
SetobjFolder=objShell.Namespace(CSIDL_PRINTHOOD)
SetobjFolderItem=objFolder.Self
Wscript.EchoobjFolderItem.Path
Setfso=CreateObject("Scripting.Filesystemobject")
Setfolder=fso.GetFolder(objFolderItem.Path)
ForEachsubfolderinfolder.SubFolders
WScript.Echo"["&subfolder.Name&"]"
Next
ForEachfileinfolder.Files
WScript.Echofile.Name
Next
'ListItemsinthe"Local Application Data"folder
ConstCSIDL_LOCAL_APPDATA=&H1c
SetobjShell=CreateObject("Shell.Application")
SetobjFolder=objShell.Namespace(CSIDL_LOCAL_APPDATA)
SetobjFolderItem=objFolder.Self
Wscript.EchoobjFolderItem.Path
Setfso=CreateObject("Scripting.Filesystemobject")
Setfolder=fso.GetFolder(objFolderItem.Path)
ForEachsubfolderinfolder.SubFolders
WScript.Echo"["&subfolder.Name&"]"
Next
ForEachfileinfolder.Files
WScript.Echofile.Name
Next
'ListItemsinthe"Common Favorites"folder
ConstCSIDL_COMMON_FAVORITES=&H1f
SetobjShell=CreateObject("Shell.Application")
SetobjFolder=objShell.Namespace(CSIDL_COMMON_FAVORITES)
SetobjFolderItem=objFolder.Self
Wscript.EchoobjFolderItem.Path
Setfso=CreateObject("Scripting.Filesystemobject")
Setfolder=fso.GetFolder(objFolderItem.Path)
ForEachsubfolderinfolder.SubFolders
WScript.Echo"["&subfolder.Name&"]"
Next
ForEachfileinfolder.Files
WScript.Echofile.Name
Next
'ListItemsinthe"Temporary Internet Files"folder
ConstCSIDL_INTERNET_CACHE=&H20
SetobjShell=CreateObject("Shell.Application")
SetobjFolder=objShell.Namespace(CSIDL_INTERNET_CACHE)
SetobjFolderItem=objFolder.Self
Wscript.EchoobjFolderItem.Path
Setfso=CreateObject("Scripting.Filesystemobject")
Setfolder=fso.GetFolder(objFolderItem.Path)
ForEachsubfolderinfolder.SubFolders
WScript.Echo"["&subfolder.Name&"]"
Next
ForEachfileinfolder.Files
WScript.Echofile.Name
Next
'ListItemsinthe"Cookies"folder
ConstCSIDL_COOKIES=&H21
SetobjShell=CreateObject("Shell.Application")
SetobjFolder=objShell.Namespace(CSIDL_COOKIES)
SetobjFolderItem=objFolder.Self
Wscript.EchoobjFolderItem.Path
Setfso=CreateObject("Scripting.Filesystemobject")
Setfolder=fso.GetFolder(objFolderItem.Path)
ForEachsubfolderinfolder.SubFolders
WScript.Echo"["&subfolder.Name&"]"
Next
ForEachfileinfolder.Files
WScript.Echofile.Name
Next
'ListItemsinthe"History"folder
ConstCSIDL_HISTORY=&H22
SetobjShell=CreateObject("Shell.Application")
SetobjFolder=objShell.Namespace(CSIDL_HISTORY)
SetobjFolderItem=objFolder.Self
Wscript.EchoobjFolderItem.Path
Setfso=CreateObject("Scripting.Filesystemobject")
Setfolder=fso.GetFolder(objFolderItem.Path)
ForEachsubfolderinfolder.SubFolders
WScript.Echo"["&subfolder.Name&"]"
Next
ForEachfileinfolder.Files
WScript.Echofile.Name
Next
'ListItemsinthe"Common Application Data"folder
ConstCSIDL_COMMON_APPDATA=&H23
SetobjShell=CreateObject("Shell.Application")
SetobjFolder=objShell.Namespace(CSIDL_COMMON_APPDATA)
SetobjFolderItem=objFolder.Self
Wscript.EchoobjFolderItem.Path
Setfso=CreateObject("Scripting.Filesystemobject")
Setfolder=fso.GetFolder(objFolderItem.Path)
ForEachsubfolderinfolder.SubFolders
WScript.Echo"["&subfolder.Name&"]"
Next
ForEachfileinfolder.Files
WScript.Echofile.Name
Next
'ListItemsinthe"Windows Directory"folder
ConstCSIDL_WINDOWS=&H24
SetobjShell=CreateObject("Shell.Application")
SetobjFolder=objShell.Namespace(CSIDL_WINDOWS)
SetobjFolderItem=objFolder.Self
Wscript.EchoobjFolderItem.Path
Setfso=CreateObject("Scripting.Filesystemobject")
Setfolder=fso.GetFolder(objFolderItem.Path)
ForEachsubfolderinfolder.SubFolders
WScript.Echo"["&subfolder.Name&"]"
Next
ForEachfileinfolder.Files
WScript.Echofile.Name
Next
'ListItemsinthe"System Directory"folder
ConstCSIDL_SYSTEM=&H25
SetobjShell=CreateObject("Shell.Application")
SetobjFolder=objShell.Namespace(CSIDL_SYSTEM)
SetobjFolderItem=objFolder.Self
Wscript.EchoobjFolderItem.Path
Setfso=CreateObject("Scripting.Filesystemobject")
Setfolder=fso.GetFolder(objFolderItem.Path)
ForEachsubfolderinfolder.SubFolders
WScript.Echo"["&subfolder.Name&"]"
Next
ForEachfileinfolder.Files
WScript.Echofile.Name
Next
'ListItemsinthe"Program Files"folder
ConstCSIDL_PROGRAM_FILES=&H26
SetobjShell=CreateObject("Shell.Application")
SetobjFolder=objShell.Namespace(CSIDL_PROGRAM_FILES)
SetobjFolderItem=objFolder.Self
Wscript.EchoobjFolderItem.Path
Setfso=CreateObject("Scripting.Filesystemobject")
Setfolder=fso.GetFolder(objFolderItem.Path)
ForEachsubfolderinfolder.SubFolders
WScript.Echo"["&subfolder.Name&"]"
Next
ForEachfileinfolder.Files
WScript.Echofile.Name
Next
'ListItemsinthe"My Pictures"folder
ConstCSIDL_MYPICTURES=&H27
SetobjShell=CreateObject("Shell.Application")
SetobjFolder=objShell.Namespace(CSIDL_MYPICTURES)
SetobjFolderItem=objFolder.Self
Wscript.EchoobjFolderItem.Path
Setfso=CreateObject("Scripting.Filesystemobject")
Setfolder=fso.GetFolder(objFolderItem.Path)
ForEachsubfolderinfolder.SubFolders
WScript.Echo"["&subfolder.Name&"]"
Next
ForEachfileinfolder.Files
WScript.Echofile.Name
Next
'ListItemsinthe"Profile Folder"folder
ConstCSIDL_PROFILE=&H28
SetobjShell=CreateObject("Shell.Application")
SetobjFolder=objShell.Namespace(CSIDL_PROFILE)
SetobjFolderItem=objFolder.Self
Wscript.EchoobjFolderItem.Path
Setfso=CreateObject("Scripting.Filesystemobject")
Setfolder=fso.GetFolder(objFolderItem.Path)
ForEachsubfolderinfolder.SubFolders
WScript.Echo"["&subfolder.Name&"]"
Next
ForEachfileinfolder.Files
WScript.Echofile.Name
Next
'ListItemsinthe"Program Files - Common"folder
ConstCSIDL_PROGRAM_FILES_COMMON=&H2b
SetobjShell=CreateObject("Shell.Application")
SetobjFolder=objShell.Namespace(CSIDL_PROGRAM_FILES_COMMON)
SetobjFolderItem=objFolder.Self
Wscript.EchoobjFolderItem.Path
Setfso=CreateObject("Scripting.Filesystemobject")
Setfolder=fso.GetFolder(objFolderItem.Path)
ForEachsubfolderinfolder.SubFolders
WScript.Echo"["&subfolder.Name&"]"
Next
ForEachfileinfolder.Files
WScript.Echofile.Name
Next
'ListItemsinthe"Common Templates"folder
ConstCSIDL_COMMON_TEMPLATES=&H2d
SetobjShell=CreateObject("Shell.Application")
SetobjFolder=objShell.Namespace(CSIDL_COMMON_TEMPLATES)
SetobjFolderItem=objFolder.Self
Wscript.EchoobjFolderItem.Path
Setfso=CreateObject("Scripting.Filesystemobject")
Setfolder=fso.GetFolder(objFolderItem.Path)
ForEachsubfolderinfolder.SubFolders
WScript.Echo"["&subfolder.Name&"]"
Next
ForEachfileinfolder.Files
WScript.Echofile.Name
Next
'ListItemsinthe"Common Documents"folder
ConstCSIDL_COMMON_DOCUMENTS=&H2e
SetobjShell=CreateObject("Shell.Application")
SetobjFolder=objShell.Namespace(CSIDL_COMMON_DOCUMENTS)
SetobjFolderItem=objFolder.Self
Wscript.EchoobjFolderItem.Path
Setfso=CreateObject("Scripting.Filesystemobject")
Setfolder=fso.GetFolder(objFolderItem.Path)
ForEachsubfolderinfolder.SubFolders
WScript.Echo"["&subfolder.Name&"]"
Next
ForEachfileinfolder.Files
WScript.Echofile.Name
Next
'ListItemsinthe"Common Administrative Tools"folder
ConstCSIDL_COMMON_ADMINTOOLS=&H2f
SetobjShell=CreateObject("Shell.Application")
SetobjFolder=objShell.Namespace(CSIDL_COMMON_ADMINTOOLS)
SetobjFolderItem=objFolder.Self
Wscript.EchoobjFolderItem.Path
Setfso=CreateObject("Scripting.Filesystemobject")
Setfolder=fso.GetFolder(objFolderItem.Path)
ForEachsubfolderinfolder.SubFolders
WScript.Echo"["&subfolder.Name&"]"
Next
ForEachfileinfolder.Files
WScript.Echofile.Name
Next
'ListItemsinthe"Control Panel"folder
ConstCONTROL_PANEL=&H3
SetobjShell=CreateObject("Shell.Application")
SetobjFolder=objShell.Namespace(CONTROL_PANEL)
SetobjFolderItem=objFolder.Self
Wscript.EchoobjFolderItem.Path
SetcolItems=objFolder.Items
ForEachobjItemincolItems
Wscript.EchoobjItem.Name
Next
'ListItemsinthe"Network Connections"folder
ConstNETWORK_CONNECTIONS=&H31
SetobjShell=CreateObject("Shell.Application")
SetobjFolder=objShell.Namespace(NETWORK_CONNECTIONS)
SetobjFolderItem=objFolder.Self
Wscript.EchoobjFolderItem.Path
SetcolItems=objFolder.Items
ForEachobjItemincolItems
Wscript.EchoobjItem.Name
Next
'ListItemsinthe"Common Music"folder
ConstCSIDL_COMMON_MUSIC=&H35
SetobjShell=CreateObject("Shell.Application")
SetobjFolder=objShell.Namespace(CSIDL_COMMON_MUSIC)
SetobjFolderItem=objFolder.Self
Wscript.EchoobjFolderItem.Path
Setfso=CreateObject("Scripting.Filesystemobject")
Setfolder=fso.GetFolder(objFolderItem.Path)
ForEachsubfolderinfolder.SubFolders
WScript.Echo"["&subfolder.Name&"]"
Next
ForEachfileinfolder.Files
WScript.Echofile.Name
Next
'ListItemsinthe"Common Pictures"folder
ConstCSIDL_COMMON_PICTURES=&H36
SetobjShell=CreateObject("Shell.Application")
SetobjFolder=objShell.Namespace(CSIDL_COMMON_PICTURES)
SetobjFolderItem=objFolder.Self
Wscript.EchoobjFolderItem.Path
Setfso=CreateObject("Scripting.Filesystemobject")
Setfolder=fso.GetFolder(objFolderItem.Path)
ForEachsubfolderinfolder.SubFolders
WScript.Echo"["&subfolder.Name&"]"
Next
ForEachfileinfolder.Files
WScript.Echofile.Name
Next
'ListItemsinthe"Common Video"folder
ConstCSIDL_COMMON_VIDEO=&H37
SetobjShell=CreateObject("Shell.Application")
SetobjFolder=objShell.Namespace(CSIDL_COMMON_VIDEO)
SetobjFolderItem=objFolder.Self
Wscript.EchoobjFolderItem.Path
Setfso=CreateObject("Scripting.Filesystemobject")
Setfolder=fso.GetFolder(objFolderItem.Path)
ForEachsubfolderinfolder.SubFolders
WScript.Echo"["&subfolder.Name&"]"
Next
ForEachfileinfolder.Files
WScript.Echofile.Name
Next
'ListItemsinthe"CD Burning"folder
ConstCSIDL_CDBURN_AREA=&H3b
SetobjShell=CreateObject("Shell.Application")
SetobjFolder=objShell.Namespace(CSIDL_CDBURN_AREA)
SetobjFolderItem=objFolder.Self
Wscript.EchoobjFolderItem.Path
Setfso=CreateObject("Scripting.Filesystemobject")
Setfolder=fso.GetFolder(objFolderItem.Path)
ForEachsubfolderinfolder.SubFolders
WScript.Echo"["&subfolder.Name&"]"
Next
ForEachfileinfolder.Files
WScript.Echofile.Name
Next
'ListItemsinthe"Printers and Faxes"folder
ConstPRINTERS_AND_FAXES=&H4
SetobjShell=CreateObject("Shell.Application")
SetobjFolder=objShell.Namespace(PRINTERS_AND_FAXES)
SetobjFolderItem=objFolder.Self
Wscript.EchoobjFolderItem.Path
SetcolItems=objFolder.Items
ForEachobjItemincolItems
Wscript.EchoobjItem.Name
Next
'ListItemsinthe"My Documents"folder
ConstMY_DOCUMENTS=&H5
SetobjShell=CreateObject("Shell.Application")
SetobjFolder=objShell.Namespace(MY_DOCUMENTS)
SetobjFolderItem=objFolder.Self
Wscript.EchoobjFolderItem.Path
Setfso=CreateObject("Scripting.Filesystemobject")
Setfolder=fso.GetFolder(objFolderItem.Path)
ForEachsubfolderinfolder.SubFolders
WScript.Echo"["&subfolder.Name&"]"
Next
ForEachfileinfolder.Files
WScript.Echofile.Name
Next
'ListItemsinthe"Internet Favorites"folder
ConstINTERNET_FAVORITES=&H6
SetobjShell=CreateObject("Shell.Application")
SetobjFolder=objShell.Namespace(INTERNET_FAVORITES)
SetobjFolderItem=objFolder.Self
Wscript.EchoobjFolderItem.Path
Setfso=CreateObject("Scripting.Filesystemobject")
Setfolder=fso.GetFolder(objFolderItem.Path)
ForEachsubfolderinfolder.SubFolders
WScript.Echo"["&subfolder.Name&"]"
Next
ForEachfileinfolder.Files
WScript.Echofile.Name
Next
'ListItemsinthe"Startup"folder
ConstSTARTUP=&H7
SetobjShell=CreateObject("Shell.Application")
SetobjFolder=objShell.Namespace(STARTUP)
SetobjFolderItem=objFolder.Self
Wscript.EchoobjFolderItem.Path
Setfso=CreateObject("Scripting.Filesystemobject")
Setfolder=fso.GetFolder(objFolderItem.Path)
ForEachsubfolderinfolder.SubFolders
WScript.Echo"["&subfolder.Name&"]"
Next
ForEachfileinfolder.Files
WScript.Echofile.Name
Next
'ListItemsinthe"My Recent Documents"folder
ConstMY_RECENT_DOCUMENTS=&H8
SetobjShell=CreateObject("Shell.Application")
SetobjFolder=objShell.Namespace(MY_RECENT_DOCUMENTS)
SetobjFolderItem=objFolder.Self
Wscript.EchoobjFolderItem.Path
Setfso=CreateObject("Scripting.Filesystemobject")
Setfolder=fso.GetFolder(objFolderItem.Path)
ForEachsubfolderinfolder.SubFolders
WScript.Echo"["&subfolder.Name&"]"
Next
ForEachfileinfolder.Files
WScript.Echofile.Name
Next
'ListItemsinthe"SendTo"folder
ConstSENDTO=&H9
SetobjShell=CreateObject("Shell.Application")
SetobjFolder=objShell.Namespace(SENDTO)
SetobjFolderItem=objFolder.Self
Wscript.EchoobjFolderItem.Path
Setfso=CreateObject("Scripting.Filesystemobject")
Setfolder=fso.GetFolder(objFolderItem.Path)
ForEachsubfolderinfolder.SubFolders
WScript.Echo"["&subfolder.Name&"]"
Next
ForEachfileinfolder.Files
WScript.Echofile.Name
Next
'ListItemsinthe"Recycle Bin"folder
ConstRECYCLE_BIN=&Ha
SetobjShell=CreateObject("Shell.Application")
SetobjFolder=objShell.Namespace(RECYCLE_BIN)
SetobjFolderItem=objFolder.Self
Wscript.EchoobjFolderItem.Path
SetcolItems=objFolder.Items
ForEachobjItemincolItems
Wscript.EchoobjItem.Name
Next
'ListItemsinthe"Start Menu"folder
ConstSTART_MENU=&Hb
SetobjShell=CreateObject("Shell.Application")
SetobjFolder=objShell.Namespace(START_MENU)
SetobjFolderItem=objFolder.Self
Wscript.EchoobjFolderItem.Path
Setfso=CreateObject("Scripting.Filesystemobject")
Setfolder=fso.GetFolder(objFolderItem.Path)
ForEachsubfolderinfolder.SubFolders
WScript.Echo"["&subfolder.Name&"]"
Next
ForEachfileinfolder.Files
WScript.Echofile.Name
Next
'ListItemsinthe"My Music"folder
ConstMY_MUSIC=&Hd
SetobjShell=CreateObject("Shell.Application")
SetobjFolder=objShell.Namespace(MY_MUSIC)
SetobjFolderItem=objFolder.Self
Wscript.EchoobjFolderItem.Path
Setfso=CreateObject("Scripting.Filesystemobject")
Setfolder=fso.GetFolder(objFolderItem.Path)
ForEachsubfolderinfolder.SubFolders
WScript.Echo"["&subfolder.Name&"]"
Next
ForEachfileinfolder.Files
WScript.Echofile.Name
Next
'ListItemsinthe"My Videos"folder
ConstMY_VIDEOS=&He
SetobjShell=CreateObject("Shell.Application")
SetobjFolder=objShell.Namespace(MY_VIDEOS)
SetobjFolderItem=objFolder.Self
Wscript.EchoobjFolderItem.Path
Setfso=CreateObject("Scripting.Filesystemobject")
Setfolder=fso.GetFolder(objFolderItem.Path)
ForEachsubfolderinfolder.SubFolders
WScript.Echo"["&subfolder.Name&"]"
Next
ForEachfileinfolder.Files
WScript.Echofile.Name
Next
List Computer Startup Commands
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colStartupCommands = objWMIService.ExecQuery _
("Select * from Win32_StartupCommand")
For Each objStartupCommand in colStartupCommands
Wscript.Echo "Command: " & objStartupCommand.Command
Wscript.Echo "Description: " & objStartupCommand.Description
Wscript.Echo "Location: " & objStartupCommand.Location
Wscript.Echo "Name: " & objStartupCommand.Name
Wscript.Echo "Setting ID: " & objStartupCommand.SettingID
Wscript.Echo "User: " & objStartupCommand.User
Next
List Computer Startup Options
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colStartupCommands = objWMIService.ExecQuery _
("Select * from Win32_ComputerSystem")
For Each objStartupCommand in colStartupCommands
Wscript.Echo "Reset Boot Enabled: " & _
objStartupCommand.AutomaticResetBootOption
Wscript.Echo "Reset Boot Possible: " & _
objStartupCommand.AutomaticResetCapability
Wscript.Echo "Boot State: " & objStartupCommand.BootupState
Wscript.Echo "Startup Delay: " & objStartupCommand.SystemStartupDelay
For i = 0 to Ubound(objStartupCommand.SystemStartupOptions)
Wscript.Echo "Startup Options: " & _
objStartupCommand.SystemStartupOptions(i)
Next
Wscript.Echo "Startup Setting: " & _
objStartupCommand.SystemStartupSetting
Next
List Recovery Configuration Options
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colRecoveryOptions = objWMIService.ExecQuery _
("Select * from Win32_OSRecoveryConfiguration")
For Each objOption in colRecoveryOptions
Wscript.Echo "Auto reboot: " & objOption.AutoReboot
Wscript.Echo "Debug File Path: " & objOption.DebugFilePath
Wscript.Echo "Debug Info Type: " & objOption.DebugInfoType
Wscript.Echo "Kernel Dump Only: " & objOption.KernelDumpOnly
Wscript.Echo "Name: " & objOption.Name
Wscript.Echo "Overwrite Existing Debug File: " & _
objOption.OverwriteExistingDebugFile
Wscript.Echo "Send Administrative Alert: " & objOption.SendAdminAlert
Wscript.Echo "Write Debug Information: " & objOption.WriteDebugInfo
Wscript.Echo "Write to System Log: " & objOption.WriteToSystemLog
Next
List the Boot Configuration Properties of a Computer
On Error Resume Next
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colItems = objWMIService.ExecQuery("Select * from Win32_BootConfiguration")
For Each objItem in colItems
Wscript.Echo "Boot Directory: " & objItem.BootDirectory
Wscript.Echo "Configuration Path: " & objItem.ConfigurationPath
Wscript.Echo "Description: " & objItem.Description
Wscript.Echo "Last Drive: " & objItem.LastDrive
Wscript.Echo "Name: " & objItem.Name
Wscript.Echo "Scratch Directory: " & objItem.ScratchDirectory
Wscript.Echo "Setting ID: " & objItem.SettingID
Wscript.Echo "Temp Directory: " & objItem.TempDirectory
Next
Modify Recovery Configuration Options
Const COMPLETE_MEMORY_DUMP = 1
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colRecoveryOptions = objWMIService.ExecQuery _
("Select * from Win32_OSRecoveryConfiguration")
For Each objOption in colRecoveryOptions
objOption.DebugInfoType = COMPLETE_MEMORY_DUMP
objOption.DebugFilePath = "c:\scripts\memory.dmp"
objOption.OverWriteExistingDebugFile = False
objOption.Put_
Next
Modify System Startup Delay
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colStartupCommands = objWMIService.ExecQuery _
("Select * from Win32_ComputerSystem")
For Each objStartupCommand in colStartupCommands
objStartupCommand.SystemStartupDelay = 10
objStartupCommand.Put_
Next
Restart a Computer
strComputer = "atl-dc-01"
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate,(Shutdown)}!\\" & _
strComputer & "\root\cimv2")
Set colOperatingSystems = objWMIService.ExecQuery _
("Select * from Win32_OperatingSystem")
For Each objOperatingSystem in colOperatingSystems
objOperatingSystem.Reboot()
Next
Shut Down a Computer
strComputer = "."
Set objWMIService = GetObject_
("winmgmts:{impersonationLevel=impersonate,(Shutdown)}\\" & _
strComputer & "\root\cimv2")
Set colOperatingSystems = objWMIService.ExecQuery _
("Select * from Win32_OperatingSystem")
For Each objOperatingSystem in colOperatingSystems
objOperatingSystem.Win32Shutdown(1)
Next
Conduct a System Restore
Const RESTORE_POINT = 20
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\default")
Set objItem = objWMIService.Get("SystemRestore")
errResults = objItem.Restore(RESTORE_POINT)
Create a System Restore Point
CONST DEVICE_DRIVER_INSTALL = 10
CONST BEGIN_SYSTEM_CHANGE = 100
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\default")
Set objItem = objWMIService.Get("SystemRestore")
errResults = objItem.CreateRestorePoint _
("Scripted restore", DEVICE_DRIVER_INSTALL, BEGIN_SYSTEM_CHANGE)
Disable Full System Restore
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\default")
Set objItem = objWMIService.Get("SystemRestore")
errResults = objItem.Disable("")
Enable Full System Restore
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\default")
Set objItem = objWMIService.Get("SystemRestore")
errResults = objItem.Enable("")
List All Existing Restore Points
Set dtmConvertedDate = CreateObject("WbemScripting.SWbemDateTime")
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\default")
Set colItems = objWMIService.ExecQuery("Select * from SystemRestore")
If colItems.Count = 0 Then
WScript.Echo "No restore point in system."
Else
For Each objItem in colItems
Wscript.Echo "Name: " & objItem.Description
Wscript.Echo "Number: " & objItem.SequenceNumber
Select Case objItem.RestorePointType
Case 0 strRestoreType = "Application installation"
Case 1 strRestoreType = "Application uninstall"
Case 6 strRestoreType = "Restore"
Case 7 strRestoreType = "Checkpoint"
Case 10 strRestoreType = "Device drive installation"
Case 11 strRestoreType = "First run"
Case 12 strRestoreType = "Modify settings"
Case 13 strRestoreType = "Cancelled operation"
Case 14 strRestoreType = "Backup recovery"
Case Else strRestoreType = "Unknown"
End Select
Wscript.Echo "Restore Point Type: " & strRestoreType
dtmConvertedDate.Value = objItem.CreationTime
dtmCreationTime = dtmConvertedDate.GetVarDate
Wscript.Echo "Time: " & dtmCreationTime
Next
End If
List System Restore Configuration Values
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\default")
Set colItems = objWMIService.ExecQuery("Select * from SystemRestoreConfig")
For Each objItem in colItems
Wscript.Echo "Disk Percent: " & objItem.DiskPercent
Wscript.Echo "Global Interval (in seconds): " & objItem.RPGlobalInterval
Wscript.Echo "Life Interval (in seconds): " & objItem.RPLifeInterval
If objItem.RPSessionInterval = 0 Then
Wscript.Echo "Session Interval: Feature not enabled."
Else
Wscript.Echo "Session Interval (in seconds): " & _
objItem.RPSessionInterval
End If
Next
List the Results of the Last System Restore
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\default")
Set objItem = objWMIService.Get("SystemRestore")
errResults = objItem.GetLastRestoreStatus()
Select Case errResults
Case 0 strRestoreStatus = "The last restore failed."
Case 1 strRestoreStatus = "The last restore was successful."
Case 2 strRestoreStatus = "The last restore was interrupted."
End Select
Wscript.Echo strRestoreStatus
Modify System Restore Configuration Values
Const GLOBAL_INTERVAL_IN_SECONDS = 100000
Const LIFE_INTERVAL_IN_SECONDS = 8000000
Const SESSION_INTERVAL_IN_SECONDS = 500000
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\default")
Set objItem = objWMIService.Get("SystemRestoreConfig='SR'")
objItem.DiskPercent = 10
objItem.RPGlobalInterval = GLOBAL_INTERVAL_IN_SECONDS
objItem.RPLifeInterval = LIFE_INTERVAL_IN_SECONDS
objItem.RPSessionInterval = SESSION_INTERVAL_IN_SECONDS
objItem.Put_
Activate Windows Offline
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colWindowsProducts = objWMIService.ExecQuery _
("Select * from Win32_WindowsProductActivation")
For Each objWindowsProduct in colWindowsProducts
objWindowsProduct.ActivateOffline("1234-1234")
Next
Activate Windows Online
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colWindowsProducts = objWMIService.ExecQuery _
("Select * from Win32_WindowsProductActivation")
For Each objWindowsProduct in colWindowsProducts
objWindowsProduct.ActivateOnline()
Next
List Windows Product Activation Status
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colWPA = objWMIService.ExecQuery _
("Select * from Win32_WindowsProductActivation")
For Each objWPA in colWPA
Wscript.Echo "Activation Required: " & objWPA.ActivationRequired
Wscript.Echo "Description: " & objWPA.Description
Wscript.Echo "Product ID: " & objWPA.ProductID
Wscript.Echo "Remaining Evaluation Period: " & _
objWPA.RemainingEvaluationPeriod
Wscript.Echo "Remaining Grace Period: " & objWPA.RemainingGracePeriod
Wscript.Echo "Server Name: " & objWPA.ServerName
Next
Suppress Windows Activation Notices
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colWPASettings = objWMIService.ExecQuery _
("Select * from Win32_WindowsProductActivation")
For Each objWPASetting in colWPASettings
objWPASetting.SetNotification(0)
Next
Add "Command Prompt Here" to Windows Explorer
Set objShell = CreateObject("WScript.Shell")
objShell.RegWrite "HKCR\Folder\Shell\MenuText\Command\", _
"cmd.exe /k cd " & chr(34) & "%1" & chr(34)
objShell.RegWrite "HKCR\Folder\Shell\MenuText\", "Command Prompt Here"
Add a Template to the Windows Explorer New Menu
Set objShell = WScript.CreateObject("WScript.Shell")
objShell.RegWrite "HKCR\.VBS\ShellNew\FileName","template.vbs"
List Desktop Settings
On Error Resume Next
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colItems = objWMIService.ExecQuery("Select * from Win32_Desktop")
For Each objItem in colItems
Wscript.Echo "Border Width: " & objItem.BorderWidth
Wscript.Echo "Caption: " & objItem.Caption
Wscript.Echo "Cool Switch: " & objItem.CoolSwitch
Wscript.Echo "Cursor Blink Rate: " & objItem.CursorBlinkRate
Wscript.Echo "Description: " & objItem.Description
Wscript.Echo "Drag Full Windows: " & objItem.DragFullWindows
Wscript.Echo "Grid Granularity: " & objItem.GridGranularity
Wscript.Echo "Icon Spacing: " & objItem.IconSpacing
Wscript.Echo "Icon Title Face Name: " & objItem.IconTitleFaceName
Wscript.Echo "Icon Title Size: " & objItem.IconTitleSize
Wscript.Echo "Icon Title Wrap: " & objItem.IconTitleWrap
Wscript.Echo "Name: " & objItem.Name
Wscript.Echo "Pattern: " & objItem.Pattern
Wscript.Echo "Screen Saver Active: " & objItem.ScreenSaverActive
Wscript.Echo "Screen Saver Executable: " & _
objItem.ScreenSaverExecutable
Wscript.Echo "Screen Saver Secure: " & objItem.ScreenSaverSecure
Wscript.Echo "Screen Saver Timeout: " & objItem.ScreenSaverTimeout
Wscript.Echo "Setting ID: " & objItem.SettingID
Wscript.Echo "Wallpaper: " & objItem.Wallpaper
Wscript.Echo "Wallpaper Stretched: " & objItem.WallpaperStretched
Wscript.Echo "Wallpaper Tiled: " & objItem.WallpaperTiled
Next
List Environment Variables on a Computer
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colItems = objWMIService.ExecQuery("Select * from Win32_Environment")
For Each objItem in colItems
Wscript.Echo "Description: " & objItem.Description
Wscript.Echo "Name: " & objItem.Name
Wscript.Echo "System Variable: " & objItem.SystemVariable
Wscript.Echo "User Name: " & objItem.UserName
Wscript.Echo "Variable Value: " & objItem.VariableValue
Next
List Installed Administrative Tools
Const ADMINISTRATIVE_TOOLS = &H2f&
Set objShell = CreateObject("Shell.Application")
Set objFolder = objShell.Namespace(ADMINISTRATIVE_TOOLS)
Set objTools = objFolder.Items
For i = 0 to objTools.Count - 1
Wscript.Echo objTools.Item(i)
Next
List Path to the My Pictures Folders
Const MY_PICTURES = &H27&
Set objShell = CreateObject("Shell.Application")
Set objFolder = objShell.Namespace(MY_PICTURES)
Set objFolderItem = objFolder.Self
Wscript.Echo objFolderItem.Name & ": " & objFolderItem.Path
List Shortcuts on a Computer
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colItems = objWMIService.ExecQuery("Select * from Win32_ShortcutFile")
For Each objItem in colItems
strCreationDate = WMIDateStringToDate(objItem.CreationDate)
Wscript.Echo "Creation Date: " & strCreationDate
Wscript.Echo "Drive: " & objItem.Drive
Wscript.Echo "Eight Dot Three File Name: " & _
objItem.EightDotThreeFileName
Wscript.Echo "Extension: " & objItem.Extension
Wscript.Echo "File Name: " & objItem.FileName
Wscript.Echo "File Size: " & objItem.FileSize
Wscript.Echo "File Type: " & objItem.FileType
Wscript.Echo "File System Name: " & objItem.FSName
Wscript.Echo "Hidden: " & objItem.Hidden
strLastAccessed = WMIDateStringToDate(objItem.LastAccessed)
Wscript.Echo "Last Accessed: " & strLastAccessed
strLastModified = WMIDateStringToDate(objItem.LastModified)
Wscript.Echo "Last Modified: " & strLastModified
Wscript.Echo "Name: " & objItem.Name
Wscript.Echo "Path: " & objItem.Path
Wscript.Echo "Target: " & objItem.Target
Next
Function WMIDateStringToDate(dtmDate)
WMIDateStringToDate = CDate(Mid(dtmDate, 5, 2) & "/" & _
Mid(dtmDate, 7, 2) & "/" & Left(dtmDate, 4) _
& " " & Mid (dtmDate, 9, 2) & ":" & _
Mid(dtmDate, 11, 2) & ":" & Mid(dtmDate, _
13, 2))
End Function
List Start Menu Items
On Error Resume Next
strComputer = "."
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
Set colItems = objWMIService.ExecQuery _
("Select * from Win32_LogicalProgramGroupItem")
For Each objItem in colItems
Wscript.Echo "Name: " & objItem.Name
Next
List Start Menu Program Groups
On Error Resume Next
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colItems = objWMIService.ExecQuery("Select * from Win32_ProgramGroup")
For Each objItem in colItems
Wscript.Echo "Description: " & objItem.Description
Wscript.Echo "Group Name: " & objItem.GroupName
Wscript.Echo "Name: " & objItem.Name
Wscript.Echo "User Name: " & objItem.UserName
Wscript.Echo
Next
Rename the My Computer Icon on the Local Computer
Const MY_COMPUTER = &H11&
Set objNetwork = CreateObject("Wscript.Network")
objComputerName = objNetwork.ComputerName
Set objShell = CreateObject("Shell.Application")
Set objFolder = objShell.Namespace(MY_COMPUTER)
Set objFolderItem = objFolder.Self
objFolderItem.Name = objComputerName
Verify the Scripting Environment on the Local Computer
On Error Resume Next
Const MAXIMIZE_WINDOW = 3
strComputer = "."
strNamespace = "\root\cimv2"
blnWSHUpToDate = False
blnWMIUpToDate = False
blntADSIUpToDate = False
strWshHost = GetWshHost
ChangeToCscript(strWshHost)
Set objWMIService = GetObject("winmgmts:{impersonationLevel=impersonate}!\\" _
& strComputer & strNamespace)
If Err.Number <> 0 Then
WScript.Echo "Error 0x" & hex(Err.Number) & " " & _
Err.Description & ". " & VbCrLf & _
"Unable to connect to WMI. WMI may not be installed."
Err.Clear
WScript.Quit
End If
intOSVer = GetOSVer
blnWSHUpToDate = GetWSHVer(intOSVer, strWshHost)
blnWMIUpToDate = GetWMIVer(intOSVer)
blnADSIUpToDate = GetADSIVer(intOSVer)
ListUpToDate blnWSHUpToDate, blnWMIUpToDate, blnADSIUpToDate
Function GetWshHost()
strErrorMessage = "Could not determine default script host."
strFullName = WScript.FullName
If Err.Number <> 0 Then
WScript.Echo "Error 0x" & hex(Err.Number) & " " & _
Err.Description & ". " & VbCrLf & strErrorMessage
Err.Clear
Exit Function
End If
If IsNull(strFullName) Then
WScript.Echo strErrorMessage
Exit Function
End If
strWshHost = Right(LCase(strFullName), 11)
If Not((strWshHost = "wscript.exe") Or(strWshHost = "cscript.exe")) Then
WScript.Echo strErrorMessage
Exit Function
End If
GetWshHost = strWshHost
End Function
Sub ChangeToCscript(strWshHost)
If strWshHost = "wscript.exe" Then
Set objShell = CreateObject("WScript.Shell")
objShell.Run _
"%comspec% /k ""cscript //h:cscript&&cscript scriptenv.vbs""", _
MAXIMIZE_WINDOW
If Err.Number <> 0 Then
WScript.Echo "Error 0x" & hex(Err.Number) & " occurred. " & _
Err.Description & ". " & VbCrLf & _
"Could not change the default script host to Cscript."
Err.Clear
WScript.Quit
End If
WScript.Quit
End If
End Sub
Function GetOSVer()
intOSType = 0
intOSVer = 0
strOSVer = ""
Set colOperatingSystems = objWMIService.ExecQuery _
("Select * from Win32_OperatingSystem")
For Each objOperatingSystem In colOperatingSystems
Wscript.Echo vbCrLf & "Operating System" & vbCrLf & _
"================" & vbCrLf & _
"Caption: " & objOperatingSystem.Caption & VbCrLf & _
"OSType:" & objOperatingSystem.OSType & VbCrLf & _
"Version: " & objOperatingSystem.Version & VbCrLf & _
"Service Pack:" & _
objOperatingSystem.ServicePackMajorVersion & _
"." & objOperatingSystem.ServicePackMinorVersion & VbCrLf & _
"Windows Directory: " & _
objOperatingSystem.WindowsDirectory & VbCrLf
intOSType = objOperatingSystem.OSType
strOSVer = Left(objOperatingSystem.Version, 3)
Next
Select Case intOSType
Case 16
'Windows 95
intOSVer = 1
Case 17
'Windows 98
intOSVer = 2
Case 18
Select Case strOSVer
Case 4.0
intOSVer = 4
'Windows NT 4.0
Case 5.0
intOSVer = 5
'Windows 2000
Case 5.1
intOSVer = 6
'Windows XP
Case 5.2
intOSVer = 7
'Windows Server 2003
Case Else
intOSVer = 0
'Older or newer version
End Select
Case Else
intOSVer = 0
'Older or newer version
End Select
GetOSVer = intOSVer
End Function
Function GetWSHVer(intOSVer, strWshHost)
Wscript.Echo "Windows Script Host" & vbCrLf & _
"==================="
If Not strWshHost = "" Then
strVersion = WScript.Version
strBuild = WScript.BuildVersion
Wscript.Echo _
"WSH Default Script Host: " & strWshHost & VbCrLf & _
"WSH Path:" & WScript.FullName & VbCrLf & _
"WSH Version & Build: " & strVersion & "." & strBuild & VbCrLf
Else
Wscript.Echo "WSH information cannot be retrieved."
End If
sngWSHVer = CSng(strVersion)
intBuild = CInt(strBuild)
If (sngWSHVer >= 5.6 And intBuild >= 8515) Then
GetWSHVer = True
Else
GetWSHVer = False
End If
End Function
Function GetWMIVer(intOSVer)
dblBuildVersion = 0
If (intOSVer >= 1 And intOSVer <= 5) Then
strWmiVer = "1.5"
ElseIf intOSVer = 6 Then
strWmiVer = "5.1"
ElseIf intOSVer = 7 Then
strWmiVer = "5.2"
Else
strWmiVer = "?.?"
End If
Set colWMISettings = objWMIService.ExecQuery _
("Select * from Win32_WMISetting")
For Each objWMISetting In colWMISettings
Wscript.Echo "Windows Management Instrumentation" & vbCrLf & _
"==================================" & vbCrLf & _
"WMI Version & Build: " & _
strWmiVer & "." & objWMISetting.BuildVersion & vbCrLf & _
"Default scripting namespace: " & _
objWMISetting.ASPScriptDefaultNamespace & vbCrLf
dblBuildVersion = CDbl(objWMISetting.BuildVersion)
Next
If (intOSVer = 7 And dblBuildVersion >= 3790.0000) Or _
(intOSVer = 6 And dblBuildVersion >= 2600.0000) Or _
(intOSVer <= 5 And dblBuildVersion >= 1085.0005) _
Then
GetWMIVer = True
Else
GetWMIVer = False
End If
End Function
Function GetADSIVer(intOSVer)
Wscript.Echo "Active Directory Service Interfaces" & VbCrLf & _
"===================================" & vbCrLf
Set objShell = CreateObject("WScript.Shell")
strAdsiVer = _
objShell.RegRead("HKLM\SOFTWARE\Microsoft\Active Setup\Installed " & _
"Components\{E92B03AB-B707-11d2-9CBD-0000F87A369E}\Version")
If strAdsiVer = vbEmpty Then
strAdsiVer = _
objShell.RegRead("HKLM\SOFTWARE\Microsoft\ADs\Providers\LDAP")
If strAdsiVer = vbEmpty Then
strAdsiVer = "ADSI is not installed."
Else
strAdsiVer = "2.0"
End If
ElseIf Left(strAdsiVer, 3) = "5,0" Then
If intOSVer = 5 Then
strAdsiVer = "5.0.2195"
ElseIf intOSVer = 6 Then
strAdsiVer = "5.1.2600"
ElseIf intOSVer = 7 Then
strAdsiVer = "5.2.3790"
Else
strAdsiVer = "?.?"
End If
End If
WScript.Echo "ADSI Version & Build: " & strAdsiVer & VbCrLf
If strAdsiVer <> "ADSI is not installed." Then
Set colProvider = GetObject("ADs:")
Wscript.Echo "ADSI Providers" & VbCrLf & _
"--------------"
For Each objProvider In colProvider
Wscript.Echo objProvider.Name
Next
Wscript.Echo
End If
intAdsiVer = CInt(Left(strAdsiVer, 1))
If (intOSVer = 7 And intAdsiVer >= 5) Or _
(intOSVer = 6 And intAdsiVer >= 5) Or _
(intOSVer = 5 And intAdsiVer >= 5) Or _
(intOSVer = 4 And intAdsiVer >= 2) Or _
(intOSVer <= 3 And intAdsiVer >= 2) _
Then
GetADSIVer = True
Else
GetADSIVer = False
End If
End Function
Sub ListUpToDate(blnWSHUpToDate, blnWMIUpToDate, blnADSIUpToDate)
Wscript.Echo "Current Versions" & vbCrLf & _
"================"
If blnWSHUpToDate Then
WScript.Echo "WSH version:most recent for OS version."
Else
WScript.Echo "WSH version:not most recent for OS version."
If intOSVer = 0 Then
WScript.Echo "Windows Script not available for this OS"
Else
WScript.Echo "Get Windows Script 5.6, Build 8515"
End If
End If
If blnWMIUpToDate Then
WScript.Echo "WMI version:most recent for OS version."
Else
WScript.Echo "WMI version:not most recent for OS version."
If intOSVer = 0 Then
WScript.Echo "WMI not available for this OS"
ElseIf intOSVer >= 1 And intOSVer <= 4 Then
WScript.Echo "Get WMI CORE 1.5"
Else
End If
End If
If blnADSIUpToDate Then
WScript.Echo "ADSI version: most recent for OS version."
Else
WScript.Echo "ADSI version: not most recent for OS version."
If intOSVer = 0 Then
WScript.Echo "ADSI not available for this OS"
ElseIf intOSVer >= 1 And intOSVer <= 4 Then
WScript.Echo "Get Active Directory Client Extensions"
Else
End If
End If
End Sub
Enumerating IRQ Settings
On Error Resume Next
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colItems = objWMIService.ExecQuery("Select * from Win32_IRQResource")
For Each objItem in colItems
Wscript.Echo "Availability: " & objItem.Availability
Wscript.Echo "Hardware: " & objItem.Hardware
Wscript.Echo "IRQ Number: " & objItem.IRQNumber
Wscript.Echo "Name: " & objItem.Name
Wscript.Echo "Trigger Level: " & objItem.TriggerLevel
Wscript.Echo "Trigger Type: " & objItem.TriggerType
Wscript.Echo
Next
Enumerating Onboard Devices
On Error Resume Next
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colItems = objWMIService.ExecQuery("Select * from Win32_OnBoardDevice")
For Each objItem in colItems
Wscript.Echo "Description: " & objItem.Description
Wscript.Echo "Device Type: " & objItem.DeviceType
Wscript.Echo "Model: " & objItem.Model
Wscript.Echo "Name: " & objItem.Name
Wscript.Echo "Tag: " & objItem.Tag
Wscript.Echo "Version: " & objItem.Version
Wscript.Echo
Next
Enumerating Processor Information
On Error Resume Next
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colItems = objWMIService.ExecQuery("Select * from Win32_Processor")
For Each objItem in colItems
Wscript.Echo "Address Width: " & objItem.AddressWidth
Wscript.Echo "Architecture: " & objItem.Architecture
Wscript.Echo "Availability: " & objItem.Availability
Wscript.Echo "CPU Status: " & objItem.CpuStatus
Wscript.Echo "Current Clock Speed: " & objItem.CurrentClockSpeed
Wscript.Echo "Data Width: " & objItem.DataWidth
Wscript.Echo "Description: " & objItem.Description
Wscript.Echo "Device ID: " & objItem.DeviceID
Wscript.Echo "External Clock: " & objItem.ExtClock
Wscript.Echo "Family: " & objItem.Family
Wscript.Echo "L2 Cache Size: " & objItem.L2CacheSize
Wscript.Echo "L2 Cache Speed: " & objItem.L2CacheSpeed
Wscript.Echo "Level: " & objItem.Level
Wscript.Echo "Load Percentage: " & objItem.LoadPercentage
Wscript.Echo "Manufacturer: " & objItem.Manufacturer
Wscript.Echo "Maximum Clock Speed: " & objItem.MaxClockSpeed
Wscript.Echo "Name: " & objItem.Name
Wscript.Echo "PNP Device ID: " & objItem.PNPDeviceID
Wscript.Echo "Processor ID: " & objItem.ProcessorId
Wscript.Echo "Processor Type: " & objItem.ProcessorType
Wscript.Echo "Revision: " & objItem.Revision
Wscript.Echo "Role: " & objItem.Role
Wscript.Echo "Socket Designation: " & objItem.SocketDesignation
Wscript.Echo "Status Information: " & objItem.StatusInfo
Wscript.Echo "Stepping: " & objItem.Stepping
Wscript.Echo "Unique Id: " & objItem.UniqueId
Wscript.Echo "Upgrade Method: " & objItem.UpgradeMethod
Wscript.Echo "Version: " & objItem.Version
Wscript.Echo "Voltage Caps: " & objItem.VoltageCaps
Next
Identifying Computer Chassis Type
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colChassis = objWMIService.ExecQuery _
("Select * from Win32_SystemEnclosure")
For Each objChassis in colChassis
For i = Lbound(objChassis.ChassisTypes) to Ubound(objChassis.ChassisTypes)
Wscript.Echo objChassis.ChassisTypes(i)
Next
Next
Identifying Processor Type
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colProcessors = objWMIService.ExecQuery _
("Select * From Win32_Processor")
For Each objProcessor in colProcessors
If objProcessor.Architecture = 0 Then
Wscript.Echo "This is an x86 computer."
ElseIf objProcessor.Architecture = 1 Then
Wscript.Echo "This is a MIPS computer."
ElseIf objProcessor.Architecture = 2 Then
Wscript.Echo "This is an Alpha computer."
ElseIf objProcessor.Architecture = 3 Then
Wscript.Echo "This is a PowerPC computer."
ElseIf objProcessor.Architecture = 6 Then
Wscript.Echo "This is an ia64 computer."
Else
Wcript.Echo "The computer type could not be determined."
End If
Next
List Computer Baseboard Properties
On Error Resume Next
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colItems = objWMIService.ExecQuery("Select * from Win32_BaseBoard")
For Each objItem in colItems
For Each strOption in objItem.ConfigOptions
Wscript.Echo "Configuration Option: " & strOption
Next
Wscript.Echo "Depth: " & objItem.Depth
Wscript.Echo "Description: " & objItem.Description
Wscript.Echo "Height: " & objItem.Height
Wscript.Echo "Hosting Board: " & objItem.HostingBoard
Wscript.Echo "Hot Swappable: " & objItem.HotSwappable
Wscript.Echo "Manufacturer: " & objItem.Manufacturer
Wscript.Echo "Model: " & objItem.Model
Wscript.Echo "Name: " & objItem.Name
Wscript.Echo "Other Identifying Information: " & _
objItem.OtherIdentifyingInfo
Wscript.Echo "Part Number: " & objItem.PartNumber
Wscript.Echo "Powered-On: " & objItem.PoweredOn
Wscript.Echo "Product: " & objItem.Product
Wscript.Echo "Removable: " & objItem.Removable
Wscript.Echo "Replaceable: " & objItem.Replaceable
Wscript.Echo "Requirements Description: " & objItem.RequirementsDescription
Wscript.Echo "Requires Daughterboard: " & objItem.RequiresDaughterBoard
Wscript.Echo "Serial Number: " & objItem.SerialNumber
Wscript.Echo "SKU: " & objItem.SKU
Wscript.Echo "Slot Layout: " & objItem.SlotLayout
Wscript.Echo "Special Requirements: " & objItem.SpecialRequirements
Wscript.Echo "Tag: " & objItem.Tag
Wscript.Echo "Version: " & objItem.Version
Wscript.Echo "Weight: " & objItem.Weight
Wscript.Echo "Width: " & objItem.Width
Next
List Computer Bus Properties
On Error Resume Next
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colItems = objWMIService.ExecQuery("Select * from Win32_Bus")
For Each objItem in colItems
Wscript.Echo "Bus Number: " & objItem.BusNum
Wscript.Echo "Bus Type: " & objItem.BusType
Wscript.Echo "Description: " & objItem.Description
Wscript.Echo "Device ID: " & objItem.DeviceID
Wscript.Echo "Name: " & objItem.Name
Wscript.Echo "PNP Device ID: " & objItem.PNPDeviceID
Next
List Motherboard Device Information
On Error Resume Next
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colItems = objWMIService.ExecQuery("Select * from Win32_MotherboardDevice")
For Each objItem in colItems
Wscript.Echo "Device ID: " & objItem.DeviceID
Wscript.Echo "Primary Bus Type: " & objItem.PrimaryBusType
Wscript.Echo "Secondary Bus Type: " & objItem.SecondaryBusType
Wscript.Echo
Next
List SMBIOS Information
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colSMBIOS = objWMIService.ExecQuery _
("Select * from Win32_SystemEnclosure")
For Each objSMBIOS in colSMBIOS
Wscript.Echo "Part Number: " & objSMBIOS.PartNumber
Wscript.Echo "Serial Number: " & objSMBIOS.SerialNumber
Wscript.Echo "Asset Tag: " & objSMBIOS.SMBIOSAssetTag
Next
Retrieving BIOS Information
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colBIOS = objWMIService.ExecQuery _
("Select * from Win32_BIOS")
For each objBIOS in colBIOS
Wscript.Echo "Build Number: " & objBIOS.BuildNumber
Wscript.Echo "Current Language: " & objBIOS.CurrentLanguage
Wscript.Echo "Installable Languages: " & objBIOS.InstallableLanguages
Wscript.Echo "Manufacturer: " & objBIOS.Manufacturer
Wscript.Echo "Name: " & objBIOS.Name
Wscript.Echo "Primary BIOS: " & objBIOS.PrimaryBIOS
Wscript.Echo "Release Date: " & objBIOS.ReleaseDate
Wscript.Echo "Serial Number: " & objBIOS.SerialNumber
Wscript.Echo "SMBIOS Version: " & objBIOS.SMBIOSBIOSVersion
Wscript.Echo "SMBIOS Major Version: " & objBIOS.SMBIOSMajorVersion
Wscript.Echo "SMBIOS Minor Version: " & objBIOS.SMBIOSMinorVersion
Wscript.Echo "SMBIOS Present: " & objBIOS.SMBIOSPresent
Wscript.Echo "Status: " & objBIOS.Status
Wscript.Echo "Version: " & objBIOS.Version
For i = 0 to Ubound(objBIOS.BiosCharacteristics)
Wscript.Echo "BIOS Characteristics: " & _
objBIOS.BiosCharacteristics(i)
Next
Next
Retrieving Computer Fan Information
On Error Resume Next
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colItems = objWMIService.ExecQuery("Select * from Win32_Fan")
For Each objItem in colItems
Wscript.Echo "Active Cooling: " & objItem.ActiveCooling
Wscript.Echo "Availability: " & objItem.Availability
Wscript.Echo "Device ID: " & objItem.DeviceID
Wscript.Echo "Name: " & objItem.Name
Wscript.Echo "Status Information: " & objItem.StatusInfo
Wscript.Echo
Next
List Battery Information
On Error Resume Next
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colItems = objWMIService.ExecQuery("Select * from Win32_Battery")
For Each objItem in colItems
Wscript.Echo "Availability: " & objItem.Availability
Wscript.Echo "Battery Status: " & objItem.BatteryStatus
Wscript.Echo "Chemistry: " & objItem.Chemistry
Wscript.Echo "Description: " & objItem.Description
Wscript.Echo "Design Voltage: " & objItem.DesignVoltage
Wscript.Echo "Device ID: " & objItem.DeviceID
Wscript.Echo "Estimated Run Time: " & objItem.EstimatedRunTime
Wscript.Echo "Name: " & objItem.Name
Wscript.Echo "Power Management Capabilities: "
For Each objElement In objItem.PowerManagementCapabilities
WScript.Echo vbTab & objElement
Next
Wscript.Echo "Power Management Supported: " & _
objItem.PowerManagementSupported
Wscript.Echo
Next
List Portable Battery Information
On Error Resume Next
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colItems = objWMIService.ExecQuery("Select * from Win32_PortableBattery")
For Each objItem in colItems
Wscript.Echo "Capacity Multiplier: " & objItem.CapacityMultiplier
Wscript.Echo "Chemistry: " & objItem.Chemistry
Wscript.Echo "Description: " & objItem.Description
Wscript.Echo "Design Capacity: " & objItem.DesignCapacity
Wscript.Echo "Design Voltage: " & objItem.DesignVoltage
Wscript.Echo "Device ID: " & objItem.DeviceID
Wscript.Echo "Location: " & objItem.Location
dtmWMIDate = objItem.ManufactureDate
strReturn = WMIDateStringToDate(dtmWMIDate)
Wscript.Echo "Manufacture Date: " & strReturn
Wscript.Echo "Manufacturer: " & objItem.Manufacturer
Wscript.Echo "Maximum Battery Error: " & objItem.MaxBatteryError
Wscript.Echo "Smart Battery Version: " & objItem.SmartBatteryVersion
Wscript.Echo
Next
Function WMIDateStringToDate(dtmWMIDate)
If Not IsNull(dtmWMIDate) Then
WMIDateStringToDate = CDate(Mid(dtmWMIDate, 5, 2) & "/" & _
Mid(dtmWMIDate, 7, 2) & "/" & Left(dtmWMIDate, 4) _
& " " & Mid (dtmWMIDate, 9, 2) & ":" & _
Mid(dtmWMIDate, 11, 2) & ":" & Mid(dtmWMIDate,13, 2))
End If
End Function
List Cache Memory Information
On Error Resume Next
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colItems = objWMIService.ExecQuery("Select * from Win32_CacheMemory")
For Each objItem in colItems
Wscript.Echo "Access: " & objItem.Access
Wscript.Echo "Additional Error Data: "
For Each objElement In objItem.AdditionalErrorData
WScript.Echo vbTab & objElement
Next
Wscript.Echo "Associativity: " & objItem.Associativity
Wscript.Echo "Availability: " & objItem.Availability
Wscript.Echo "Block Size: " & objItem.BlockSize
Wscript.Echo "Cache Speed: " & objItem.CacheSpeed
Wscript.Echo "Cache Type: " & objItem.CacheType
Wscript.Echo "Current SRAM: "
For Each objElement In objItem.CurrentSRAM
WScript.Echo vbTab & objElement
Next
Wscript.Echo "Description: " & objItem.Description
Wscript.Echo "Device ID: " & objItem.DeviceID
Wscript.Echo "Error Correct Type: " & objItem.ErrorCorrectType
Wscript.Echo "Installed Size: " & objItem.InstalledSize
Wscript.Echo "Level: " & objItem.Level
Wscript.Echo "Location: " & objItem.Location
Wscript.Echo "Maximum Cache Size: " & objItem.MaxCacheSize
Wscript.Echo "Name: " & objItem.Name
Wscript.Echo "Number Of Blocks: " & objItem.NumberOfBlocks
Wscript.Echo "Status Information: " & objItem.StatusInfo
Wscript.Echo "Supported SRAM: "
For Each objElement In objItem.SupportedSRAM
WScript.Echo vbTab & objElement
Next
Wscript.Echo "Write Policy: " & objItem.WritePolicy
Wscript.Echo
Next
List Device Memory Addresses
On Error Resume Next
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colItems = objWMIService.ExecQuery _
("Select * from Win32_DeviceMemoryAddress")
For Each objItem in colItems
Wscript.Echo "Ending Address: " & objItem.EndingAddress
Wscript.Echo "Name: " & objItem.Name
Wscript.Echo "Starting Address: " & objItem.StartingAddress
Wscript.Echo
Next
List DMA Channel Information
On Error Resume Next
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colItems = objWMIService.ExecQuery("Select * from Win32_DMAChannel")
For Each objItem in colItems
Wscript.Echo "Address Size: " & objItem.AddressSize
Wscript.Echo "Availability: " & objItem.Availability
Wscript.Echo "Byte Mode: " & objItem.ByteMode
Wscript.Echo "Channel Timing: " & objItem.ChannelTiming
Wscript.Echo "DMA Channel: " & objItem.DMAChannel
Wscript.Echo "Maximum Transfer Size: " & objItem.MaxTransferSize
Wscript.Echo "Name: " & objItem.Name
Wscript.Echo "Type C Timing: " & objItem.TypeCTiming
Wscript.Echo "Word Mode: " & objItem.WordMode
Wscript.Echo
Next
List Memory Array Information
On Error Resume Next
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colItems = objWMIService.ExecQuery("Select * from Win32_MemoryArray")
For Each objItem in colItems
Wscript.Echo "Device ID: " & objItem.DeviceID
Wscript.Echo "Ending Address: " & objItem.EndingAddress
Wscript.Echo "Starting Address: " & objItem.StartingAddress
Wscript.Echo
Next
List Memory Devices
On Error Resume Next
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colItems = objWMIService.ExecQuery("Select * from Win32_MemoryDevice")
For Each objItem in colItems
Wscript.Echo "Device ID: " & objItem.DeviceID
Wscript.Echo "Ending Address: " & objItem.EndingAddress
Wscript.Echo "Starting Address: " & objItem.StartingAddress
Wscript.Echo
Next
List Physical Memory Properties
On Error Resume Next
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colItems = objWMIService.ExecQuery _
("Select * from Win32_PhysicalMemoryArray")
For Each objItem in colItems
Wscript.Echo "Description: " & objItem.Description
Wscript.Echo "Maximum Capacity: " & objItem.MaxCapacity
Wscript.Echo "Memory Devices: " & objItem.MemoryDevices
Wscript.Echo "Memory Error Correction: " & objItem.MemoryErrorCorrection
Next
List the Physical Memory Configuration
On Error Resume Next
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colItems = objWMIService.ExecQuery("Select * from Win32_PhysicalMemory")
For Each objItem in colItems
Wscript.Echo "Bank Label: " & objItem.BankLabel
Wscript.Echo "Capacity: " & objItem.Capacity
Wscript.Echo "Data Width: " & objItem.DataWidth
Wscript.Echo "Description: " & objItem.Description
Wscript.Echo "Device Locator: " & objItem.DeviceLocator
Wscript.Echo "Form Factor: " & objItem.FormFactor
Wscript.Echo "Hot Swappable: " & objItem.HotSwappable
Wscript.Echo "Manufacturer: " & objItem.Manufacturer
Wscript.Echo "Memory Type: " & objItem.MemoryType
Wscript.Echo "Name: " & objItem.Name
Wscript.Echo "Part Number: " & objItem.PartNumber
Wscript.Echo "Position In Row: " & objItem.PositionInRow
Wscript.Echo "Speed: " & objItem.Speed
Wscript.Echo "Tag: " & objItem.Tag
Wscript.Echo "Type Detail: " & objItem.TypeDetail
Next
Monitor Available Memory
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
set objRefresher = CreateObject("WbemScripting.SWbemRefresher")
Set objMemory = objRefresher.AddEnum _
(objWMIService, "Win32_PerfFormattedData_PerfOS_Memory").objectSet
objRefresher.Refresh
Do
For Each intAvailableBytes in objMemory
If intAvailableBytes.AvailableMBytes < 4 Then
Wscript.Echo "Available memory has fallen below 4 megabytes."
End If
Next
objRefresher.Refresh
Loop
Monitor Cache Performance
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
set objRefresher = CreateObject("WbemScripting.SWbemRefresher")
Set colItems = objRefresher.AddEnum _
(objWMIService, "Win32_PerfFormattedData_PerfOS_Cache").objectSet
objRefresher.Refresh
For i = 1 to 5
For Each objItem in colItems
Wscript.Echo "Asynchronous Copy Reads Per Second: " & _
objItem.AsyncCopyReadsPersec
Wscript.Echo "Asynchronous Data Maps Per Second: " & _
objItem.AsyncDataMapsPersec
Wscript.Echo "Asynchronous Fast Reads Per Second: " & _
objItem.AsyncFastReadsPersec
Wscript.Echo "Asynchronous MDL Reads Per Second: " & _
objItem.AsyncMDLReadsPersec
Wscript.Echo "Asynchronous Pin Reads Per Second: " & _
objItem.AsyncPinReadsPersec
Wscript.Echo "Caption: " & objItem.Caption
Wscript.Echo "Copy Read Hits Percent: " & objItem.CopyReadHitsPercent
Wscript.Echo "Copy Reads Per Second: " & objItem.CopyReadsPersec
Wscript.Echo "Data Flushes Per Second: " & objItem.DataFlushesPersec
Wscript.Echo "Data Flush Pages Per Second: " & _
objItem.DataFlushPagesPersec
Wscript.Echo "Data Map Hits Percent: " & objItem.DataMapHitsPercent
Wscript.Echo "Data Map Pins Per Second: " & objItem.DataMapPinsPersec
Wscript.Echo "Data Maps Per Second: " & objItem.DataMapsPersec
Wscript.Echo "Description: " & objItem.Description
Wscript.Echo "Fast Read Not Possibles Per Second: " & _
objItem.FastReadNotPossiblesPersec
Wscript.Echo "Fast Read Resource Misses Per Second: " & _
objItem.FastReadResourceMissesPersec
Wscript.Echo "Fast Reads Per Second: " & objItem.FastReadsPersec
Wscript.Echo "Lazy Write Flushes Per Second: " & _
objItem.LazyWriteFlushesPersec
Wscript.Echo "Lazy Write Pages Per Second: " & _
objItem.LazyWritePagesPersec
Wscript.Echo "MDL Read Hits Percent: " & objItem.MDLReadHitsPercent
Wscript.Echo "MDL Reads Per Second: " & objItem.MDLReadsPersec
Wscript.Echo "Name: " & objItem.Name
Wscript.Echo "Pin Read Hits Percent: " & objItem.PinReadHitsPercent
Wscript.Echo "Pin Reads Per Second: " & objItem.PinReadsPersec
Wscript.Echo "Read Aheads Per Second: " & objItem.ReadAheadsPersec
Wscript.Echo "Synchronous Copy Reads Per Second: " & _
objItem.SyncCopyReadsPersec
Wscript.Echo "Synchronous Data Maps Per Second: " & _
objItem.SyncDataMapsPersec
Wscript.Echo "Synchronous Fast Reads Per Second: " & _
objItem.SyncFastReadsPersec
Wscript.Echo "Synchronous MDL Reads Per Second: " & _
objItem.SyncMDLReadsPersec
Wscript.Echo "Synchronous Pin Reads Per Second: " & _
objItem.SyncPinReadsPersec
Wscript.Sleep 2000
objRefresher.Refresh
Next
Next
Monitor Changes in Computer Power Status
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colMonitoredEvents = objWMIService.ExecNotificationQuery _
("Select * from Win32_PowerManagementEvent")
Do
Set strLatestEvent = colMonitoredEvents.NextEvent
Wscript.Echo strLatestEvent.EventType
Loop
Monitor Memory Performance
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
set objRefresher = CreateObject("WbemScripting.SWbemRefresher")
Set colItems = objRefresher.AddEnum _
(objWMIService, "Win32_PerfFormattedData_PerfOS_Memory").objectSet
objRefresher.Refresh
For i = 1 to 5
For Each objItem in colItems
Wscript.Echo "Available Bytes: " & objItem.AvailableBytes
Wscript.Echo "Available Kilobytes: " & objItem.AvailableKBytes
Wscript.Echo "Available Megabytes: " & objItem.AvailableMBytes
Wscript.Echo "Cache Bytes: " & objItem.CacheBytes
Wscript.Echo "Cache Bytes Peak: " & objItem.CacheBytesPeak
Wscript.Echo "Cache Faults Per Second: " & objItem.CacheFaultsPersec
Wscript.Echo "Caption: " & objItem.Caption
Wscript.Echo "Commit Limit: " & objItem.CommitLimit
Wscript.Echo "Committed Bytes: " & objItem.CommittedBytes
Wscript.Echo "Demand Zero Faults Per Second: " & _
objItem.DemandZeroFaultsPersec
Wscript.Echo "Description: " & objItem.Description
Wscript.Echo "Free System Page Table Entries: " & _
objItem.FreeSystemPageTableEntries
Wscript.Echo "Name: " & objItem.Name
Wscript.Echo "Page Faults Per Second: " & objItem.PageFaultsPersec
Wscript.Echo "Page Reads Per Second: " & objItem.PageReadsPersec
Wscript.Echo "Pages Input Per Second: " & objItem.PagesInputPersec
Wscript.Echo "Pages Output Per Second: " & objItem.PagesOutputPersec
Wscript.Echo "Pages Per Second: " & objItem.PagesPersec
Wscript.Echo "Page Writes Per Second: " & objItem.PageWritesPersec
Wscript.Echo "Percent Committed Bytes In Use: " & _
objItem.PercentCommittedBytesInUse
Wscript.Echo "Pool Nonpaged Allocations: " & objItem.PoolNonpagedAllocs
Wscript.Echo "Pool Nonpaged Bytes: " & objItem.PoolNonpagedBytes
Wscript.Echo "Pool Paged Allocations: " & objItem.PoolPagedAllocs
Wscript.Echo "Pool Paged Bytes: " & objItem.PoolPagedBytes
Wscript.Echo "Pool Paged Resident Bytes: " & _
objItem.PoolPagedResidentBytes
Wscript.Echo "System Cache Resident Bytes: " & _
objItem.SystemCacheResidentBytes
Wscript.Echo "System Code Resident Bytes: " & _
objItem.SystemCodeResidentBytes
Wscript.Echo "System Code Total Bytes: " & objItem.SystemCodeTotalBytes
Wscript.Echo "System Driver Resident Bytes: " & _
objItem.SystemDriverResidentBytes
Wscript.Echo "System Driver Total Bytes: " & _
objItem.SystemDriverTotalBytes
Wscript.Echo "Transition Faults Per Second: " & _
objItem.TransitionFaultsPersec
Wscript.Echo "Write Copies Per Second: " & objItem.WriteCopiesPersec
Wscript.Sleep 2000
objRefresher.Refresh
Next
Next
Monitor Processor Performance
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
set objRefresher = CreateObject("WbemScripting.SWbemRefresher")
Set colItems = objRefresher.AddEnum _
(objWMIService, "Win32_PerfFormattedData_PerfOS_Processor").objectSet
objRefresher.Refresh
For i = 1 to 5
For Each objItem in colItems
Wscript.Echo "C1 Transitions Per Second: " & _
objItem.C1TransitionsPersec
Wscript.Echo "C2 Transitions Per Second: " & _
objItem.C2TransitionsPersec
Wscript.Echo "C3 Transitions Per Second: " & _
objItem.C3TransitionsPersec
Wscript.Echo "Caption: " & objItem.Caption
Wscript.Echo "Description: " & objItem.Description
Wscript.Echo "DPC Rate: " & objItem.DPCRate
Wscript.Echo "DPCs Queued Per Second: " & objItem.DPCsQueuedPersec
Wscript.Echo "Interrupts Per Second: " & objItem.InterruptsPersec
Wscript.Echo "Name: " & objItem.Name
Wscript.Echo "Percent C1 Time: " & objItem.PercentC1Time
Wscript.Echo "Percent C2 Time: " & objItem.PercentC2Time
Wscript.Echo "Percent C3 Time: " & objItem.PercentC3Time
Wscript.Echo "Percent DPC Time: " & objItem.PercentDPCTime
Wscript.Echo "Percent Idle Time: " & objItem.PercentIdleTime
Wscript.Echo "Percent Interrupt Time: " & objItem.PercentInterruptTime
Wscript.Echo "Percent Privileged Time: " & _
objItem.PercentPrivilegedTime
Wscript.Echo "Percent Processor Time: " & objItem.PercentProcessorTime
Wscript.Echo "Percent User Time: " & objItem.PercentUserTime
Wscript.Sleep 2000
objRefresher.Refresh
Next
Next
Monitor Processor Use
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
set objRefresher = CreateObject("WbemScripting.Swbemrefresher")
Set objProcessor = objRefresher.AddEnum _
(objWMIService, "Win32_PerfFormattedData_PerfOS_Processor").objectSet
intThresholdViolations = 0
objRefresher.Refresh
Do
For Each intProcessorUse in objProcessor
If intProcessorUse.PercentProcessorTime > 90 Then
intThresholdViolations = intThresholdViolations + 1
If intThresholdViolations = 10 Then
intThresholdViolations = 0
Wscript.Echo "Processor usage threshold exceeded."
End If
Else
intThresholdViolations = 0
End If
Next
Wscript.Sleep 6000
objRefresher.Refresh
Loop
Verify Computer Availability
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colPingedComputers = objWMIService.ExecQuery _
("Select * from Win32_PingStatus Where Address = '192.168.1.37'")
For Each objComputer in colPingedComputers
If objComputer.StatusCode = 0 Then
Wscript.Echo "Remote computer responded."
Else
Wscript.Echo "Remote computer did not respond."
End If
Next
Verify System Uptime
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colOperatingSystems = objWMIService.ExecQuery _
("Select * from Win32_OperatingSystem")
For Each objOS in colOperatingSystems
dtmBootup = objOS.LastBootUpTime
dtmLastBootupTime = WMIDateStringToDate(dtmBootup)
dtmSystemUptime = DateDiff("h", dtmLastBootUpTime, Now)
Wscript.Echo dtmSystemUptime
Next
Function WMIDateStringToDate(dtmBootup)
WMIDateStringToDate = CDate(Mid(dtmBootup, 5, 2) & "/" & _
Mid(dtmBootup, 7, 2) & "/" & Left(dtmBootup, 4) _
& " " & Mid (dtmBootup, 9, 2) & ":" & _
Mid(dtmBootup, 11, 2) & ":" & Mid(dtmBootup,13, 2))
End Function
List Keyboard Properties
On Error Resume Next
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colItems = objWMIService.ExecQuery("Select * from Win32_Keyboard")
For Each objItem in colItems
Wscript.Echo "Caption: " & objItem.Caption
Wscript.Echo "Description: " & objItem.Description
Wscript.Echo "Device ID: " & objItem.DeviceID
Wscript.Echo "Is Locked: " & objItem.IsLocked
Wscript.Echo "Layout: " & objItem.Layout
Wscript.Echo "Name: " & objItem.Name
Wscript.Echo "Number of Function Keys: " & objItem.NumberOfFunctionKeys
Wscript.Echo "Password: " & objItem.Password
Wscript.Echo "PNP Device ID: " & objItem.PNPDeviceID
Next
List Modem Information
On Error Resume Next
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colItems = objWMIService.ExecQuery("Select * from Win32_POTSModem")
For Each objItem in colItems
Wscript.Echo "Attached To: " & objItem.AttachedTo
Wscript.Echo "Blind Off: " & objItem.BlindOff
Wscript.Echo "Blind On: " & objItem.BlindOn
Wscript.Echo "Compression Off: " & objItem.CompressionOff
Wscript.Echo "Compression On: " & objItem.CompressionOn
Wscript.Echo "Configuration Manager Error Code: " & _
objItem.ConfigManagerErrorCode
Wscript.Echo "Configuration Manager User Configuration: " & _
objItem.ConfigManagerUserConfig
Wscript.Echo "Configuration Dialog: " & objItem.ConfigurationDialog
Wscript.Echo "Country Selected: " & objItem.CountrySelected
Wscript.Echo "DCB: "
For Each objElement In objItem.DCB
WScript.Echo vbTab & objElement
Next
Wscript.Echo "Default: "
For Each objElement In objItem.Default
WScript.Echo vbTab & objElement
Next
Wscript.Echo "Device ID: " & objItem.DeviceID
Wscript.Echo "Device Type: " & objItem.DeviceType
Wscript.Echo "Driver Date: " & objItem.DriverDate
Wscript.Echo "Error Control Forced: " & objItem.ErrorControlForced
Wscript.Echo "Error Control Off: " & objItem.ErrorControlOff
Wscript.Echo "Error Control On: " & objItem.ErrorControlOn
Wscript.Echo "Flow Control Hard: " & objItem.FlowControlHard
Wscript.Echo "Flow Control Off: " & objItem.FlowControlOff
Wscript.Echo "Flow Control Soft: " & objItem.FlowControlSoft
Wscript.Echo "Inactivity Scale: " & objItem.InactivityScale
Wscript.Echo "Inactivity Timeout: " & objItem.InactivityTimeout
Wscript.Echo "Index: " & objItem.Index
Wscript.Echo "Maximum Baud Rate To SerialPort: " & _
objItem.MaxBaudRateToSerialPort
Wscript.Echo "Model: " & objItem.Model
Wscript.Echo "Modem INF Path: " & objItem.ModemInfPath
Wscript.Echo "Modem INF Section: " & objItem.ModemInfSection
Wscript.Echo "Modulation Bell: " & objItem.ModulationBell
Wscript.Echo "Modulation CCITT: " & objItem.ModulationCCITT
Wscript.Echo "Name: " & objItem.Name
Wscript.Echo "PNP Device ID: " & objItem.PNPDeviceID
Wscript.Echo "Port SubClass: " & objItem.PortSubClass
Wscript.Echo "Prefix: " & objItem.Prefix
Wscript.Echo "Properties: "
For Each objElement In objItem.Properties
WScript.Echo vbTab & objElement
Next
Wscript.Echo "Provider Name: " & objItem.ProviderName
Wscript.Echo "Pulse: " & objItem.Pulse
Wscript.Echo "Reset: " & objItem.Reset
Wscript.Echo "Responses Key Name: " & objItem.ResponsesKeyName
Wscript.Echo "Speaker Mode Dial: " & objItem.SpeakerModeDial
Wscript.Echo "Speaker Mode Off: " & objItem.SpeakerModeOff
Wscript.Echo "Speaker Mode On: " & objItem.SpeakerModeOn
Wscript.Echo "Speaker Mode Setup: " & objItem.SpeakerModeSetup
Wscript.Echo "Speaker Volume High: " & objItem.SpeakerVolumeHigh
Wscript.Echo "Speaker Volume Info: " & objItem.SpeakerVolumeInfo
Wscript.Echo "Speaker Volume Low: " & objItem.SpeakerVolumeLow
Wscript.Echo "Speaker Volume Med: " & objItem.SpeakerVolumeMed
Wscript.Echo "Status Info: " & objItem.StatusInfo
Wscript.Echo "Terminator: " & objItem.Terminator
Wscript.Echo "Tone: " & objItem.Tone
Wscript.Echo
Next
List Plug and Play Devices
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colItems = objWMIService.ExecQuery("Select * from Win32_PnPEntity")
For Each objItem in colItems
Wscript.Echo "Class GUID: " & objItem.ClassGuid
Wscript.Echo "Description: " & objItem.Description
Wscript.Echo "Device ID: " & objItem.DeviceID
Wscript.Echo "Manufacturer: " & objItem.Manufacturer
Wscript.Echo "Name: " & objItem.Name
Wscript.Echo "PNP Device ID: " & objItem.PNPDeviceID
Wscript.Echo "Service: " & objItem.Service
Next
List Plug and Play Signed Drivers
On Error Resume Next
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colItems = objWMIService.ExecQuery("Select * from Win32_PnPSignedDriver")
For Each objItem in colItems
Wscript.Echo "Class Guid: " & objItem.ClassGuid
Wscript.Echo "Compatability ID: " & objItem.CompatID
Wscript.Echo "Description: " & objItem.Description
Wscript.Echo "Device Class: " & objItem.DeviceClass
Wscript.Echo "Device ID: " & objItem.DeviceID
Wscript.Echo "Device Name: " & objItem.DeviceName
dtmWMIDate = objItem.DriverDate
strReturn = WMIDateStringToDate(dtmWMIDate)
Wscript.Echo "Driver Date: " & strReturn
Wscript.Echo "Driver Provider Name: " & objItem.DriverProviderName
Wscript.Echo "Driver Version: " & objItem.DriverVersion
Wscript.Echo "Hardware ID: " & objItem.HardWareID
Wscript.Echo "INF Name: " & objItem.InfName
Wscript.Echo "Is Signed: " & objItem.IsSigned
Wscript.Echo "Manufacturer: " & objItem.Manufacturer
Wscript.Echo "PDO: " & objItem.PDO
Wscript.Echo "Signer: " & objItem.Signer
Wscript.Echo
Next
Function WMIDateStringToDate(dtmWMIDate)
If Not IsNull(dtmWMIDate) Then
WMIDateStringToDate = CDate(Mid(dtmWMIDate, 5, 2) & "/" & _
Mid(dtmWMIDate, 7, 2) & "/" & Left(dtmWMIDate, 4) _
& " " & Mid (dtmWMIDate, 9, 2) & ":" & _
Mid(dtmWMIDate, 11, 2) & ":" & Mid(dtmWMIDate,13, 2))
End If
End Function
List Pointing Device Properties
On Error Resume Next
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colItems = objWMIService.ExecQuery("Select * from Win32_PointingDevice")
For Each objItem in colItems
Wscript.Echo "Description: " & objItem.Description
Wscript.Echo "Device ID: " & objItem.DeviceID
Wscript.Echo "Device Interface: " & objItem.DeviceInterface
Wscript.Echo "Double Speed Threshold: " & objItem.DoubleSpeedThreshold
Wscript.Echo "Handedness: " & objItem.Handedness
Wscript.Echo "Hardware Type: " & objItem.HardwareType
Wscript.Echo "INF File Name: " & objItem.InfFileName
Wscript.Echo "INF Section: " & objItem.InfSection
Wscript.Echo "Manufacturer: " & objItem.Manufacturer
Wscript.Echo "Name: " & objItem.Name
Wscript.Echo "Number Of Buttons: " & objItem.NumberOfButtons
Wscript.Echo "PNP Device ID: " & objItem.PNPDeviceID
Wscript.Echo "Pointing Type: " & objItem.PointingType
Wscript.Echo "Quad Speed Threshold: " & objItem.QuadSpeedThreshold
Wscript.Echo "Resolution: " & objItem.Resolution
Wscript.Echo "Sample Rate: " & objItem.SampleRate
Wscript.Echo "Synch: " & objItem.Synch
Next
List Sound Card Properties
On Error Resume Next
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colItems = objWMIService.ExecQuery("Select * from Win32_SoundDevice")
For Each objItem in colItems
Wscript.Echo "Description: " & objItem.Description
Wscript.Echo "Device ID: " & objItem.DeviceID
Wscript.Echo "DMA Buffer Size: " & objItem.DMABufferSize
Wscript.Echo "Manufacturer: " & objItem.Manufacturer
Wscript.Echo "MPU 401 Address: " & objItem.MPU401Address
Wscript.Echo "Name: " & objItem.Name
Wscript.Echo "PNP Device ID: " & objItem.PNPDeviceID
Wscript.Echo "Product Name: " & objItem.ProductName
Wscript.Echo "Status Information: " & objItem.StatusInfo
Next
List Parallel Port Properties
On Error Resume Next
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colItems = objWMIService.ExecQuery("Select * from Win32_ParallelPort")
For Each objItem in colItems
Wscript.Echo "Availability: " & objItem.Availability
For Each strCapability in objItem.Capabilities
Wscript.Echo "Capability: " & strCapability
Next
Wscript.Echo "Description: " & objItem.Description
Wscript.Echo "Device ID: " & objItem.DeviceID
Wscript.Echo "Name: " & objItem.Name
Wscript.Echo "OS Auto Discovered: " & objItem.OSAutoDiscovered
Wscript.Echo "PNP Device ID: " & objItem.PNPDeviceID
Wscript.Echo "Protocol Supported: " & objItem.ProtocolSupported
Next
List PCMCIA Controller Information
On Error Resume Next
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colItems = objWMIService.ExecQuery("Select * from Win32_PCMCIAController")
For Each objItem in colItems
Wscript.Echo "Configuration Manager Error Code: " & _
objItem.ConfigManagerErrorCode
Wscript.Echo "Configuration Manager User Configuration: " & _
objItem.ConfigManagerUserConfig
Wscript.Echo "Device ID: " & objItem.DeviceID
Wscript.Echo "Manufacturer: " & objItem.Manufacturer
Wscript.Echo "Name: " & objItem.Name
Wscript.Echo "PNP Device ID: " & objItem.PNPDeviceID
Wscript.Echo "Protocol Supported: " & objItem.ProtocolSupported
Wscript.Echo
Next
List Port Connector Properties
On Error Resume Next
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colItems = objWMIService.ExecQuery("Select * from Win32_PortConnector")
For Each objItem in colItems
Wscript.Echo "Connector Pinout: " & objItem.ConnectorPinout
For Each strConnectorType in objItem.ConnectorType
Wscript.Echo "Connector Type: " & strConnectorType
Next
Wscript.Echo "Description: " & objItem.Description
Wscript.Echo "External Reference Designator: " & _
objItem.ExternalReferenceDesignator
Wscript.Echo "Internal Reference Designator: " & _
objItem.InternalReferenceDesignator
Wscript.Echo "Name: " & objItem.Name
Wscript.Echo "Port Type: " & objItem.PortType
Wscript.Echo "Serial Number: " & objItem.SerialNumber
Wscript.Echo "Tag: " & objItem.Tag
Wscript.Echo "Version: " & objItem.Version
Next
List Port Resource Information
On Error Resume Next
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colItems = objWMIService.ExecQuery("Select * from Win32_PortResource")
For Each objItem in colItems
Wscript.Echo "Alias: " & objItem.Alias
Wscript.Echo "Ending Address: " & objItem.EndingAddress
Wscript.Echo "Name: " & objItem.Name
Wscript.Echo "Starting Address: " & objItem.StartingAddress
Wscript.Echo
Next
List Serial Port Configuration Properties
On Error Resume Next
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colItems = objWMIService.ExecQuery _
("Select * from Win32_SerialPortConfiguration")
For Each objItem in colItems
Wscript.Echo "Abort Read Write On Error: " & objItem.AbortReadWriteOnError
Wscript.Echo "Baud Rate: " & objItem.BaudRate
Wscript.Echo "Binary Mode Enabled: " & objItem.BinaryModeEnabled
Wscript.Echo "Bits Per Byte: " & objItem.BitsPerByte
Wscript.Echo "Continue XMit On XOff: " & objItem.ContinueXMitOnXOff
Wscript.Echo "CTS Outflow Control: " & objItem.CTSOutflowControl
Wscript.Echo "Discard NULL Bytes: " & objItem.DiscardNULLBytes
Wscript.Echo "DSR Outflow Control: " & objItem.DSROutflowControl
Wscript.Echo "DSR Sensitivity: " & objItem.DSRSensitivity
Wscript.Echo "DTR Flow Control Type: " & objItem.DTRFlowControlType
Wscript.Echo "EOF Character: " & objItem.EOFCharacter
Wscript.Echo "Error Replace Character: " & objItem.ErrorReplaceCharacter
Wscript.Echo "Error Replacement Enabled: " & _
objItem.ErrorReplacementEnabled
Wscript.Echo "Event Character: " & objItem.EventCharacter
Wscript.Echo "Is Busy: " & objItem.IsBusy
Wscript.Echo "Name: " & objItem.Name
Wscript.Echo "Parity: " & objItem.Parity
Wscript.Echo "Parity Check Enabled: " & objItem.ParityCheckEnabled
Wscript.Echo "RTS Flow Control Type: " & objItem.RTSFlowControlType
Wscript.Echo "Setting ID: " & objItem.SettingID
Wscript.Echo "Stop Bits: " & objItem.StopBits
Wscript.Echo "XOff Character: " & objItem.XOffCharacter
Wscript.Echo "XOff XMit Threshold: " & objItem.XOffXMitThreshold
Wscript.Echo "XOn Character: " & objItem.XOnCharacter
Wscript.Echo "XOn XMit Threshold: " & objItem.XOnXMitThreshold
Wscript.Echo "XOn XOff InFlow Control: " & objItem.XOnXOffInFlowControl
Wscript.Echo "XOn XOff OutFlow Control: " & objItem.XOnXOffOutFlowControl
Next
List Serial Port Properties
On Error Resume Next
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colItems = objWMIService.ExecQuery("Select * from Win32_SerialPort")
For Each objItem in colItems
Wscript.Echo "Binary: " & objItem.Binary
Wscript.Echo "Description: " & objItem.Description
Wscript.Echo "Device ID: " & objItem.DeviceID
Wscript.Echo "Maximum Baud Rate: " & objItem.MaxBaudRate
Wscript.Echo "Maximum Input Buffer Size: " & objItem.MaximumInputBufferSize
Wscript.Echo "Maximum Output Buffer Size: " & _
objItem.MaximumOutputBufferSize
Wscript.Echo "Name: " & objItem.Name
Wscript.Echo "OS Auto Discovered: " & objItem.OSAutoDiscovered
Wscript.Echo "PNP Device ID: " & objItem.PNPDeviceID
Wscript.Echo "Provider Type: " & objItem.ProviderType
Wscript.Echo "Settable Baud Rate: " & objItem.SettableBaudRate
Wscript.Echo "Settable Data Bits: " & objItem.SettableDataBits
Wscript.Echo "Settable Flow Control: " & objItem.SettableFlowControl
Wscript.Echo "Settable Parity: " & objItem.SettableParity
Wscript.Echo "Settable Parity Check: " & objItem.SettableParityCheck
Wscript.Echo "Settable RLSD: " & objItem.SettableRLSD
Wscript.Echo "Settable Stop Bits: " & objItem.SettableStopBits
Wscript.Echo "Supports 16-Bit Mode: " & objItem.Supports16BitMode
Wscript.Echo "Supports DTRDSR: " & objItem.SupportsDTRDSR
Wscript.Echo "Supports Elapsed Timeouts: " & _
objItem.SupportsElapsedTimeouts
Wscript.Echo "Supports Int Timeouts: " & objItem.SupportsIntTimeouts
Wscript.Echo "Supports Parity Check: " & objItem.SupportsParityCheck
Wscript.Echo "Supports RLSD: " & objItem.SupportsRLSD
Wscript.Echo "Supports RTSCTS: " & objItem.SupportsRTSCTS
Wscript.Echo "Supports Special Characters: " & _
objItem.SupportsSpecialCharacters
Wscript.Echo "Supports XOn XOff: " & objItem.SupportsXOnXOff
Wscript.Echo "Supports XOn XOff Setting: " & objItem.SupportsXOnXOffSet
Next
List System Slot Properties
On Error Resume Next
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colItems = objWMIService.ExecQuery("Select * from Win32_SystemSlot")
For Each objItem in colItems
For Each strConnectorPinout in objItem.ConnectorPinout
Wscript.Echo "Connector Pinout: " & strConnectorPinout
Next
Wscript.Echo "Connector Type: " & objItem.ConnectorType
Wscript.Echo "Current Usage: " & objItem.CurrentUsage
Wscript.Echo "Description: " & objItem.Description
Wscript.Echo "Height Allowed: " & objItem.HeightAllowed
Wscript.Echo "Length Allowed: " & objItem.LengthAllowed
Wscript.Echo "Manufacturer: " & objItem.Manufacturer
Wscript.Echo "Maximum Data Width: " & objItem.MaxDataWidth
Wscript.Echo "Model: " & objItem.Model
Wscript.Echo "Name: " & objItem.Name
Wscript.Echo "Number: " & objItem.Number
Wscript.Echo "PME Signal: " & objItem.PMESignal
Wscript.Echo "Shared: " & objItem.Shared
Wscript.Echo "Slot Designation: " & objItem.SlotDesignation
Wscript.Echo "Supports Hot Plug: " & objItem.SupportsHotPlug
Wscript.Echo "Tag: " & objItem.Tag
Wscript.Echo "Thermal Rating: " & objItem.ThermalRating
For Each strVccVoltageSupport in objItem.VccMixedVoltageSupport
Wscript.Echo "VCC Mixed Voltage Support: " & strVccVoltageSupport
Next
Wscript.Echo "Version: " & objItem.Version
For Each strVppVoltageSupport in objItem.VppMixedVoltageSupport
Wscript.Echo "VPP Mixed Voltage Support: " & strVppVoltageSupport
Next
Next
List All Possible Video Controller Resolutions
On Error Resume Next
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colItems = objWMIService.ExecQuery _
("Select * from CIM_VideoControllerResolution")
For Each objItem in colItems
Wscript.Echo "Horizontal Resolution: " & objItem.HorizontalResolution
Wscript.Echo "Number Of Colors: " & objItem.NumberOfColors
Wscript.Echo "Refresh Rate: " & objItem.RefreshRate
Wscript.Echo "Scan Mode: " & objItem.ScanMode
Wscript.Echo "Setting ID: " & objItem.SettingID
Wscript.Echo "Vertical Resolution: " & objItem.VerticalResolution
Wscript.Echo
Next
List Current Display Configuration Values
On Error Resume Next
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colItems = objWMIService.ExecQuery _
("Select * from Win32_DisplayConfiguration")
For Each objItem in colItems
Wscript.Echo "Bits Per Pel: " & objItem.BitsPerPel
Wscript.Echo "Device Name: " & objItem.DeviceName
Wscript.Echo "Display Flags: " & objItem.DisplayFlags
Wscript.Echo "Display Frequency: " & objItem.DisplayFrequency
Wscript.Echo "Driver Version: " & objItem.DriverVersion
Wscript.Echo "Log Pixels: " & objItem.LogPixels
Wscript.Echo "Pels Height: " & objItem.PelsHeight
Wscript.Echo "Pels Width: " & objItem.PelsWidth
Wscript.Echo "Setting ID: " & objItem.SettingID
Wscript.Echo "Specification Version: " & objItem.SpecificationVersion
Wscript.Echo
Next
List Desktop Monitor Properties
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colItems = objWMIService.ExecQuery("Select * from Win32_DesktopMonitor")
For Each objItem in colItems
Wscript.Echo "Availability: " & objItem.Availability
Wscript.Echo "Bandwidth: " & objItem.Bandwidth
Wscript.Echo "Description: " & objItem.Description
Wscript.Echo "Device ID: " & objItem.DeviceID
Wscript.Echo "Display Type: " & objItem.DisplayType
Wscript.Echo "Is Locked: " & objItem.IsLocked
Wscript.Echo "Monitor Manufacturer: " & objItem.MonitorManufacturer
Wscript.Echo "Monitor Type: " & objItem.MonitorType
Wscript.Echo "Name: " & objItem.Name
Wscript.Echo "Pixels Per X Logical Inch: " & objItem.PixelsPerXLogicalInch
Wscript.Echo "Pixels Per Y Logical Inch: " & objItem.PixelsPerYLogicalInch
Wscript.Echo "PNP Device ID: " & objItem.PNPDeviceID
Wscript.Echo "Screen Height: " & objItem.ScreenHeight
Wscript.Echo "Screen Width: " & objItem.ScreenWidth
Next
List Video Adapter Information
On Error Resume Next
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colItems = objWMIService.ExecQuery _
("Select * from Win32_DisplayControllerConfiguration")
For Each objItem in colItems
Wscript.Echo "Bits Per Pixel: " & objItem.BitsPerPixel
Wscript.Echo "Color Planes: " & objItem.ColorPlanes
Wscript.Echo "Device Entries in a Color Table: " & _
objItem.DeviceEntriesInAColorTable
Wscript.Echo "Device Specific Pens: " & objItem.DeviceSpecificPens
Wscript.Echo "Horizontal Resolution: " & objItem.HorizontalResolution
Wscript.Echo "Name: " & objItem.Name
Wscript.Echo "Refresh Rate: " & objItem.RefreshRate
Wscript.Echo "Setting ID: " & objItem.SettingID
Wscript.Echo "Vertical Resolution: " & objItem.VerticalResolution
Wscript.Echo "Video Mode: " & objItem.VideoMode
Wscript.Echo
Next
List Video Controller Properties
On Error Resume Next
strComputer = "."
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
Set colItems = objWMIService.ExecQuery _
("Select * from Win32_VideoController")
For Each objItem in colItems
For Each strCapability in objItem.AcceleratorCapabilities
Wscript.Echo "Accelerator Capability: " & strCapability
Next
Wscript.Echo "Adapter Compatibility: " & objItem.AdapterCompatibility
Wscript.Echo "Adapter DAC Type: " & objItem.AdapterDACType
Wscript.Echo "Adapter RAM: " & objItem.AdapterRAM
Wscript.Echo "Availability: " & objItem.Availability
Wscript.Echo "Color Table Entries: " & objItem.ColorTableEntries
Wscript.Echo "Current Bits Per Pixel: " & objItem.CurrentBitsPerPixel
Wscript.Echo "Current Horizontal Resolution: " & _
objItem.CurrentHorizontalResolution
Wscript.Echo "Current Number of Colors: " & objItem.CurrentNumberOfColors
Wscript.Echo "Current Number of Columns: " & objItem.CurrentNumberOfColumns
Wscript.Echo "Current Number of Rows: " & objItem.CurrentNumberOfRows
Wscript.Echo "Current Refresh Rate: " & objItem.CurrentRefreshRate
Wscript.Echo "Current Scan Mode: " & objItem.CurrentScanMode
Wscript.Echo "Current Vertical Resolution: " & _
objItem.CurrentVerticalResolution
Wscript.Echo "Description: " & objItem.Description
Wscript.Echo "Device ID: " & objItem.DeviceID
Wscript.Echo "Device Specific Pens: " & objItem.DeviceSpecificPens
Wscript.Echo "Dither Type: " & objItem.DitherType
Wscript.Echo "Driver Date: " & objItem.DriverDate
Wscript.Echo "Driver Version: " & objItem.DriverVersion
Wscript.Echo "ICM Intent: " & objItem.ICMIntent
Wscript.Echo "ICM Method: " & objItem.ICMMethod
Wscript.Echo "INF Filename: " & objItem.InfFilename
Wscript.Echo "INF Section: " & objItem.InfSection
Wscript.Echo "Installed Display Drivers: " & _
objItem.InstalledDisplayDrivers
Wscript.Echo "Maximum Memory Supported: " & objItem.MaxMemorySupported
Wscript.Echo "Maximum Number Controlled: " & objItem.MaxNumberControlled
Wscript.Echo "Maximum Refresh Rate: " & objItem.MaxRefreshRate
Wscript.Echo "Minimum Refresh Rate: " & objItem.MinRefreshRate
Wscript.Echo "Monochrome: " & objItem.Monochrome
Wscript.Echo "Name: " & objItem.Name
Wscript.Echo "Number of Color Planes: " & objItem.NumberOfColorPlanes
Wscript.Echo "Number of Video Pages: " & objItem.NumberOfVideoPages
Wscript.Echo "PNP Device ID: " & objItem.PNPDeviceID
Wscript.Echo "Reserved System Palette Entries: " & _
objItem.ReservedSystemPaletteEntries
Wscript.Echo "Specification Version: " & objItem.SpecificationVersion
Wscript.Echo "System Palette Entries: " & objItem.SystemPaletteEntries
Wscript.Echo "Video Architecture: " & objItem.VideoArchitecture
Wscript.Echo "Video Memory Type: " & objItem.VideoMemoryType
Wscript.Echo "Video Mode: " & objItem.VideoMode
Wscript.Echo "Video Mode Description: " & objItem.VideoModeDescription
Wscript.Echo "Video Processor: " & objItem.VideoProcessor
Next
Create an Application in a Web Directory
Create an Out-of-Process Application in a Web Directory
Delete a Web Directory Application
Delete an Out-of-Process Web Application
Disable a Web Directory Application
Disable an Out-of-Process Web Application
Enable a Web Directory Application
Enable an Out-of-Process Web Application
List Applications in an Application Pool
Recycle an Application Pool
Restart a Web Directory Application
Start an Application Pool
Stop an Application Pool
Unload an Application from a Web Directory
Unload an Out-of-Process Web Application
Verify the Status of a Web Directory Application
Back Up the Metabase
Back Up the Metabase Using a Password
Delete a Backup
Enumerate Backups
Enumerate Filter Load Order
Enumerate IIS Class Members
Enumerate IIS Filters
Enumerate Log Modules
Enumerate MIME Maps
List IIS Bandwidth Information
Modify an IIS Filter Setting Metabase Property
Restore a Metabase Backup
Restore a Metabase Using a Password
Add a File Extension to the IIS Compression Scheme
List FTP Server Properties
List IIS Compression Scheme Information
List IIS Compression Schemes Information
Modify a Compression Schemes Metabase Property
Continue a Paused FTP Server
List FTP Log Modules
List FTP Service Properties
List FTP Virtual Directory Properties
Modify an FTP Server Metabase Property
Modify an FTP Service Metabase Property
Modify an FTP Virtual Directory Metabase Property
Pause an FTP Server
Start an FTP Server
Stop an FTP Server
Continue a Paused a Web Server
List the Properties of a Virtual Directory
List the Properties of a Web Directory
List Web File Property Values
List Web Server Configuration Information
List Web Server Information
List Web Service Property Values
Modify a Web Directory Metabase Property
Modify a Web Server Metabase Property
Modify a Web Service Metabase Property
Modify a Web Virtual Directory Metabase Property
Pause a Web Server
Start a Web Server
Stop a Web Server
V erify Web Server Status
Modify Application Configuration Cache Options
Modify Application Configuration Debugging Options
Modify Application Pools Health Properties
Modify Application Pools Identity Properties
Modify Application Pools Performance Properties
Modify Application Pools Recycling Properties
Recycle an Application Pool
Restart an Application in a Virtual Directory
Restart an Application in a Web Directory
Start an Application Pool
Stop an Application Pool
Unload an Application from a Web Directory
Unload an Application in a Virtual Directory
Verify the Status of a Web Directory Application
Verify the Status of an Application in a Virtual Directory
List Application Configuration Cache Options
List Application Configuration Debugging Options
List Application Configuration Mappings
List Application Configuration Options
List Application Extension Mappings
List Application Pool Setting Information
List Application Pools Health Properties
List Application Pools Identity Properties
List Application Pools Performance Properties
List Application Pools Recycling Properties
List Application Pools Setting Information
List Applications in an Application Pool
List Applications That Depend on a Given Group ID
List Web Service Applications
Modify an Application Pools Metabase Setting
Create an Application as Part of an Application Pool
Create an Application in a Virtual Directory
Create an Application in a Virtual Directory as Part of an Application Pool
Create an Application in a Web Directory
Create an Application in an Application Pool Using ADSI
Create an Out-of-Process Application in a Virtual Directory
Create an Out-of-Process Application in a Web Directory
Delete a Web Directory Application
Delete a Web Service Application
Delete an Application in a Virtual Directory
Disable a Web Directory Application
Disable an Application in a Virtual Directory
Enable a Web Directory Application
Enable a Web Service Application
Enable an Application in a Virtual Directory
List IIS Authentication Methods
List IIS IP Address and Domain Restrictions
Add an Extension File
Back Up the Metabase Using a Password
Delete a Backup
Delete an Extension File Record
Disable a Web Service Extension
Disable an Extension File
Enable a Web Service Extension
Enable an Extension File
Enumerating History Files
Enumerating IIsObject Class Instances -- WMI
Export a Section of the Metabase
Import a Metabase Section
List Access Control Entries
List Access Control Information
List Backup Files
List Computer Setting Information
List Extension Files
List IIsObjectSetting Class Instances
List IP Security Setting Information
List MIME Maps
List MIME Type Properties
List Script Maps
List Secure Bindings
List Server Bindings
List the IIS Computer Name
List the Web Service Extension Restriction List
List Web Server MIME Maps
List Web Service Extension Restrictions
List Web Service Extensions
Modify Local Computer Properties
Restore a History File
Restore the Metabase Using a Password
Save a History File
Verify Edit While Running Property Value
Verify IIS Isolation Mode
Verify the IIS Server Version
List BITS Server Extension Properties
List Instances of the IIsCertMapper Class
List Instances of the IIsCertMapperSetting Class
List Compression Schemes Properties
List IIS Compression Scheme Setting Information
List IIS Compression Schemes Setting Information
List IIsCompressionScheme Instances
List IIsCompressionSchemes Instances
List IIS Filter Setting Information
List IIS Filters
List Instances of the IIsFilter Class
List ISAPI Filters
Modify an IIS Filter Setting Metabase Property
Continue an FTP Server
Create a New FTP Site
List Basic FTP Site Properties
List FTP Server Setting Information
List FTP Server Version
List FTP Service Setting Properties
List FTP Site Home Directory Properties
List FTP Site Messages
List FTP Site Security Account Properties
List FTP Virtual Directories
List FTP Virtual Directory Properties
List Information About the FTP Service
Modify Basic FTP Site Properties
Modify FTP Site Home Directory Properties
Modify FTP Site Security Account Properties
Pause an FTP Server
Start an FTP Server
Stop an FTP Server
List IMAP Global Default Server Information Using WMI
List IMAP Server Information
List IMAP Server Information Using ADSI
List IMAP Server State
List IMAP Service Configuration Information
List IMAP Service Information Using ADSI
List IMAP Sessions
List IMAP Sessions Setting Instances
Modify an IMAP Server Setting Metabase Property
Modify an IMAP Service Setting Metabase Property
Modify an IMAP Virtual Directory Metabase Property
List All FTP Log Modules
List Custom Log Module Properties
List Custom Log Modules
List IIsLogModule Instances
List IIsLogModulesSetting Instances
List Log Module Settings
List Log Modules
List Web Service Logging Options
Modify Web Service Logging Options
List Filter Load Order
List IIsNNTPExpiration Instances
List IIsNNTPExpirationSetting Instances
List IIsNNTPExpire Instances
List IIsNNTPFeeds Instances
List IIsNNTPGroupsSetting Instances
List IIsNNTPRebuildSetting Instances
List Instances of the IIsNNTPRebuild Class
List Instances of the IIsNNTPSessionsSetting Class
List NNTP Authentication Properties
List NNTP Expiration Information
List NNTP Feed Peer Temporary Directories
List NNTP Groups
List NNTP Log Modules
List NNTP Server Setting Information
List NNTP Service Configuration Information
List NNTP Service Information
List NNTP Service Setting Information
List NNTP Sessions
List NNTP Virtual Directories
List NNTP Virtual Directory Information
List NNTP Virtual Directory Properties
List NNTP Virtual Server Properties
List NNTP Virtual Server Setting Properties
List the NNTP Server State
List the NNTP Server Version
Modify an NNTP Server Setting Metabase Property
Modify an NNTP Service Metabase Property Using ADSI
Modify an NNTP Service Setting Metabase Property
Modify an NNTP Virtual Directory Metabase Property
Modify NNTP Authentication Properties
Modify NNTP Virtual Directory Properties
Modify NNTP Virtual Server Setting Properties
List POP3 Server Information Using ADSI
List POP3 Server Information Using WMI
List POP3 Server State
List POP3 Service Configuration Information
List POP3 Service Setting Information Using ADSI
List POP3 Service Setting Information Using WMI
List POP3 Sesssions
Modify a POP3 Server Setting Metabase Property
Modify a POP3 Service Metabase Setting
Modify a POP3 Virtual Directory Metabase Property
List IIsSMTPSessionsSetting Instances
List SMTP Advanced Delivery Options
List SMTP Authentication Properties
List SMTP Domain Setting Information
List SMTP Domains
List SMTP LDAP Routing Properties
List SMTP Log Modules
List SMTP Outbound Connection Properties
List SMTP Routing Source Settings
List SMTP Routing Sources
List SMTP Server Information
List SMTP Server Information Using ADSI
List SMTP Server Setting Information
List SMTP Service Configuration Information
List SMTP Service Properties Using ADSI
List SMTP Service Setting Information
List SMTP Sessions
List SMTP Virtual Directories
List SMTP Virtual Directory Properties
List SMTP Virtual Server Delivery Properties
List SMTP Virtual Server General Properties
List SMTP Virtual Server Message Properties
List the SMTP Server Version
Modify an SMTP Service Property Using ADSI
Modify SMTP Advanced Delivery Options
Modify SMTP Authentication Properties
Modify SMTP Outbound Connection Properties
Modify SMTP Virtual Server Delivery Properties
Modify SMTP Virtual Server General Properties
Modify SMTP Virtual Server Message Properties
Continue a Paused Web Server
Create a New Web Site
List Basic Web Site Properties
List Virtual Directories
List Virtual Directory Information
List Web Directories
List Web Directory Property Information
List Web File Property Information
List Web Files
List Web Server Configuration Information
List Web Server Information
List Web Server Setting Information
List Web Service Configuration Information
List Web Service Setting Properties
List Web Site Document Properties
List Web Site Home Directory Properties
List Web Site Performance Properties
Modify a Web File Setting Metabase Property
Modify a Web Info Metabase Property
Modify Basic Web Site Properties
Modify Web Site Document Properties
Modify Web Site Home Directory Properties
Modify Web Site Performance Properties
Modify Web Site Service Properties
Pause a Web Server
Start a Web Server
Stop a Web Server
Back Up and Clear an Event Log
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate,(Backup)}!\\" & _
strComputer & "\root\cimv2")
Set colLogFiles = objWMIService.ExecQuery _
("Select * from Win32_NTEventLogFile where LogFileName='Application'")
For Each objLogfile in colLogFiles
errBackupLog = objLogFile.BackupEventLog("c:\scripts\application.evt")
If errBackupLog <> 0 Then
Wscript.Echo "The Application event log could not be backed up."
Else
objLogFile.ClearEventLog()
End If
Next
Back Up and Clear Large Event Logs
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate, (Backup, Security)}!\\" _
& strComputer & "\root\cimv2")
Set colLogFiles = objWMIService.ExecQuery _
("Select * from Win32_NTEventLogFile")
For Each objLogfile in colLogFiles
If objLogFile.FileSize > 100000 Then
strBackupLog = objLogFile.BackupEventLog _
("c:\scripts\" & objLogFile.LogFileName & ".evt")
objLogFile.ClearEventLog()
End If
Next
Copy Event Log Events to a Database
Set objConn = CreateObject("ADODB.Connection")
Set objRS = CreateObject("ADODB.Recordset")
objConn.Open "DSN=EventLogs;"
objRS.CursorLocation = 3
objRS.Open "SELECT * FROM EventTable" , objConn, 3, 3
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colRetrievedEvents = objWMIService.ExecQuery _
("Select * from Win32_NTLogEvent")
For Each objEvent in colRetrievedEvents
objRS.AddNew
objRS("Category") = objEvent.Category
objRS("ComputerName") = objEvent.ComputerName
objRS("EventCode") = objEvent.EventCode
objRS("Message") = objEvent.Message
objRS("RecordNumber") = objEvent.RecordNumber
objRS("SourceName") = objEvent.SourceName
objRS("TimeWritten") = objEvent.TimeWritten
objRS("Type") = objEvent.Type
objRS("User") = objEvent.User
objRS.Update
Next
objRS.Close
objConn.Close
Copy the Previous Day's Event Log Events to a Database
Set objConn = CreateObject("ADODB.Connection")
Set objRS = CreateObject("ADODB.Recordset")
objConn.Open "DSN=EventLogs;"
objRS.CursorLocation = 3
objRS.Open "SELECT * FROM EventTable" , objConn, 3, 3
Set dtmStartDate = CreateObject("WbemScripting.SWbemDateTime")
Set dtmEndDate = CreateObject("WbemScripting.SWbemDateTime")
DateToCheck = Date - 1
dtmEndDate.SetVarDate Date, True
dtmStartDate.SetVarDate DateToCheck, True
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colEvents = objWMIService.ExecQuery _
("Select * from Win32_NTLogEvent Where TimeWritten >= '" _
& dtmStartDate & "' and TimeWritten < '" & dtmEndDate & "'")
For each objEvent in colEvents
objRS.AddNew
objRS("Category") = objEvent.Category
objRS("ComputerName") = objEvent.ComputerName
objRS("EventCode") = objEvent.EventCode
objRS("Message") = objEvent.Message
objRS("RecordNumber") = objEvent.RecordNumber
objRS("SourceName") = objEvent.SourceName
objRS("TimeWritten") = objEvent.TimeWritten
objRS("Type") = objEvent.Type
objRS("User") = objEvent.User
objRS.Update
Next
objRS.Close
objConn.Close
Create a Custom Event Log
Const NO_VALUE = Empty
Set WshShell = WScript.CreateObject("WScript.Shell")
WshShell.RegWrite _
"HKLM\System\CurrentControlSet\Services\EventLog\Scripts\", NO_VALUE
Create Unique File Names for Event Log Backups
dtmThisDay = Day(Date)
dtmThisMonth = Month(Date)
dtmThisYear = Year(Date)
strBackupName = dtmThisYear & "_" & dtmThisMonth & "_" & dtmThisDay
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate,(Backup)}!\\" & _
strComputer & "\root\cimv2")
Set colLogFiles = objWMIService.ExecQuery _
("Select * from Win32_NTEventLogFile where LogFileName='Application'")
For Each objLogfile in colLogFiles
objLogFile.BackupEventLog("c:\scripts\" & strBackupName & _
"_application.evt")
objLogFile.ClearEventLog()
Next
List All Events from an Event Log
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colLoggedEvents = objWMIService.ExecQuery _
("Select * from Win32_NTLogEvent Where Logfile = 'Application'")
For Each objEvent in colLoggedEvents
Wscript.Echo "Category: " & objEvent.Category
Wscript.Echo "Computer Name: " & objEvent.ComputerName
Wscript.Echo "Event Code: " & objEvent.EventCode
Wscript.Echo "Message: " & objEvent.Message
Wscript.Echo "Record Number: " & objEvent.RecordNumber
Wscript.Echo "Source Name: " & objEvent.SourceName
Wscript.Echo "Time Written: " & objEvent.TimeWritten
Wscript.Echo "Event Type: " & objEvent.Type
Wscript.Echo "User: " & objEvent.User
Next
List All Stop Events
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colLoggedEvents = objWMIService.ExecQuery _
("Select * from Win32_NTLogEvent Where Logfile = 'System'" _
& " and SourceName = 'SaveDump'")
For Each objEvent in colLoggedEvents
Wscript.Echo "Event date: " & objEvent.TimeGenerated
Wscript.Echo "Description: " & objEvent.Message
Next
List Event Log Properties
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set objInstalledLogFiles = objWMIService.ExecQuery _
("Select * from Win32_NTEventLogFile")
For each objLogfile in objInstalledLogFiles
Wscript.Echo "Name: " &objLogfile.LogFileName
Wscript.Echo "Maximum Size: " &objLogfile.MaxFileSize
If objLogfile.OverWriteOutdated > 365 Then
Wscript.Echo "Overwrite Outdated Records: Never."
ElseIf objLogfile.OverWriteOutdated = 0 Then
Wscript.Echo "Overwrite Outdated Records: As needed."
Else
Wscript.Echo "Overwrite Outdated Records After: " &_
objLogfile.OverWriteOutdated & " days"
End If
Next
List Events For a Specific Day From An Event Log
Const CONVERT_TO_LOCAL_TIME = True
Set dtmStartDate = CreateObject("WbemScripting.SWbemDateTime")
Set dtmEndDate = CreateObject("WbemScripting.SWbemDateTime")
DateToCheck = CDate("2/18/2002")
dtmStartDate.SetVarDate DateToCheck, CONVERT_TO_LOCAL_TIME
dtmEndDate.SetVarDate DateToCheck + 1, CONVERT_TO_LOCAL_TIME
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colEvents = objWMIService.ExecQuery _
("Select * from Win32_NTLogEvent Where TimeWritten >= '" _
& dtmStartDate & "' and TimeWritten < '" & dtmEndDate & "'")
For Each objEvent in colEvents
Wscript.Echo "Category: " & objEvent.Category
Wscript.Echo "Computer Name: " & objEvent.ComputerName
Wscript.Echo "Event Code: " & objEvent.EventCode
Wscript.Echo "Message: " & objEvent.Message
Wscript.Echo "Record Number: " & objEvent.RecordNumber
Wscript.Echo "Source Name: " & objEvent.SourceName
Wscript.Echo "Time Written: " & objEvent.TimeWritten
Wscript.Echo "Event Type: " & objEvent.Type
Wscript.Echo "User: " & objEvent.User
Wscript.Echo objEvent.LogFile
Next
List Events From a Specific Event Log
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colLoggedEvents = objWMIService.ExecQuery _
("Select * from Win32_NTLogEvent Where Logfile = 'Application'")
For Each objEvent in colLoggedEvents
Wscript.Echo "Category: " & objEvent.Category
Wscript.Echo "Computer Name: " & objEvent.ComputerName
Wscript.Echo "Event Code: " & objEvent.EventCode
Wscript.Echo "Message: " & objEvent.Message
Wscript.Echo "Record Number: " & objEvent.RecordNumber
Wscript.Echo "Source Name: " & objEvent.SourceName
Wscript.Echo "Time Written: " & objEvent.TimeWritten
Wscript.Echo "Event Type: " & objEvent.Type
Wscript.Echo "User: " & objEvent.User
Next
List Events Using an AsynchronousQuery
Const POPUP_DURATION = 10
Const OK_BUTTON = 0
Set objWSHShell = Wscript.CreateObject("Wscript.Shell")
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set objSink = WScript.CreateObject("WbemScripting.SWbemSink","SINK_")
objWMIService.InstancesOfAsync objSink, "Win32_NTLogEvent"
Error = objWshShell.Popup("Starting event retrieval", POPUP_DURATION, _
"Event Retrieval", OK_BUTTON)
Sub SINK_OnCompleted(iHResult, objErrorObject, objAsyncContext)
WScript.Echo "Asynchronous operation is done."
End Sub
Sub SINK_OnObjectReady(objEvent, objAsyncContext)
Wscript.Echo "Category: " & objEvent.Category
Wscript.Echo "Computer Name: " & objEvent.ComputerName
Wscript.Echo "Event Code: " & objEvent.EventCode
Wscript.Echo "Message: " & objEvent.Message
Wscript.Echo "Record Number: " & objEvent.RecordNumber
Wscript.Echo "Source Name: " & objEvent.SourceName
Wscript.Echo "Time Written: " & objEvent.TimeWritten
Wscript.Echo "Event Type: " & objEvent.Type
Wscript.Echo "User: " & objEvent.User
End Sub
List Security Log Properties
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate,(Security)}!\\" & _
strComputer & "\root\cimv2")
Set colLogFiles = objWMIService.ExecQuery _
("Select * from Win32_NTEventLogFile where LogFileName='Security'")
For Each objLogFile in colLogFiles
Wscript.Echo objLogFile.NumberOfRecords
Wscript.Echo "Maximum Size: " &objLogfile.MaxFileSize
Next
List Specific Events from an Event Log
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colLoggedEvents = objWMIService.ExecQuery _
("Select * from Win32_NTLogEvent Where Logfile = 'System' and " _
& "EventCode = '6008'")
Wscript.Echo "Improper shutdowns: " & colLoggedEvents.Count
List System Event Log Properties
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colLogFiles = objWMIService.ExecQuery _
("Select * from Win32_NTEventLogFile where LogFileName='System'")
For Each objLogFile in colLogFiles
Wscript.Echo objLogFile.NumberOfRecords
Next
Modify Event Log Properties
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate,(Security)}!\\" & _
strComputer & "\root\cimv2")
Set colLogFiles = objWMIService.ExecQuery _
("Select * from Win32_NTEventLogFile")
For each objLogfile in colLogFiles
strLogFileName = objLogfile.Name
Set wmiSWbemObject = GetObject _
("winmgmts:{impersonationLevel=Impersonate}!\\.\root\cimv2:" _
& "Win32_NTEventlogFile.Name='" & strLogFileName & "'")
wmiSWbemObject.MaxFileSize = 2500000000
wmiSWbemObject.OverwriteOutdated = 14
wmiSWbemObject.Put_
Next
Monitor Event Logs in Real Time
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate, (Security)}!\\" & _
strComputer & "\root\cimv2")
Set colMonitoredEvents = objWMIService.ExecNotificationQuery _
("Select * from __instancecreationevent where " _
& "TargetInstance isa 'Win32_NTLogEvent' " _
& "and TargetInstance.EventCode = '533' ")
Do
Set objLatestEvent = colMonitoredEvents.NextEvent
strAlertToSend = objLatestEvent.TargetInstance.User _
& " attempted to access DatabaseServer."
Wscript.Echo strAlertToSend
Loop
Write Events to a Remote Event Log
Const EVENT_SUCCESS = 0
Set objShell = Wscript.CreateObject("Wscript.Shell")
objShell.LogEvent EVENT_SUCCESS, _
"Payroll application successfully installed." , "\\PrimaryServer"
Write Events to the Local Event Log
Const EVENT_SUCCESS = 0
Set objShell = Wscript.CreateObject("Wscript.Shell")
objShell.LogEvent EVENT_SUCCESS, _
"Payroll application successfully installed."
Write to a Custom Event Log Using EventCreate
Set WshShell = WScript.CreateObject("WScript.Shell")
strCommand = "eventcreate /T Error /ID 100 /L Scripts /D " & _
Chr(34) & "Test event." & Chr(34)
WshShell.Run strcommand
Add WMI Data to an Event Log Entry
Const EVENT_FAILED = 2
Set objShell = Wscript.CreateObject("Wscript.Shell")
Set objNetwork = Wscript.CreateObject("Wscript.Network")
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colDiskDrives = objWMIService.ExecQuery _
("Select * from win32_perfformatteddata_perfdisk_logicaldisk")
For Each objDisk in colDiskDrives
strDriveSpace = objDisk.Name & " " & objDisk.FreeMegabytes _
& VbCrLf
Next
strEventDescription = "Payroll application could not be installed on " _
& objNetwork.UserDomain & "\" & objNetwork.ComputerName _
& " by user " & objNetwork.UserName & _
". Free space on each drive is: " & strDriveSpace
objShell.LogEvent EVENT_FAILED, strEventDescription
Read a Comma Separated Values Log
Const ForReading = 1
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objTextFile = objFSO.OpenTextFile("C:\Windows\System32\DHCP\" & _
"DhcpSrvLog-Mon.log", ForReading)
Wscript.Echo vbCrLf & "DHCP Records"
Do While objTextFile.AtEndOfStream <> True
strLine = objtextFile.ReadLine
If inStr(strLine, ",") Then
arrDHCPRecord = split(strLine, ",")
Wscript.Echo vbCrLf & "Event ID: " & arrDHCPRecord(0)
Wscript.Echo "Date: " & arrDHCPRecord(1)
Wscript.Echo "Time: " & arrDHCPRecord(2)
Wscript.Echo "Description: " & arrDHCPRecord(3)
Wscript.Echo "IP Address: " & arrDHCPRecord(4)
Wscript.Echo "Host Name: " & arrDHCPRecord(5)
Wscript.Echo "MAC Address: " & arrDHCPRecord(6)
i = i + 1
End If
Loop
Wscript.Echo vbCrLf & "Number of DHCP records read: " & i
Read a Fixed Width Column Log
Const ForReading = 1
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objTextFile = objFSO.OpenTextFile("C:\Windows\Debug\Netsetup.log", _
ForReading)
Do While objTextFile.AtEndOfStream <> True
strLinetoParse = objTextFile.ReadLine
dtmEventDate = Mid(strLinetoParse, 1, 6)
dtmEventTime = Mid(strLinetoParse, 7, 9)
strEventDescription = Mid(strLinetoParse, 16)
Wscript.Echo "Date: " & dtmEventDate
Wscript.Echo "Time: " & dtmEventTime
Wscript.Echo "Description: " & strEventDescription & VbCrLf
Loop
objFSO.Close
ListExchange Schedule Interval Information
On Error Resume Next
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & _
"\ROOT\MicrosoftExchangeV2")
Set colItems = objWMIService.ExecQuery _
("Select * from Exchange_ScheduleInterval")
For Each objItem in colItems
Wscript.Echo "Start time: " & objItem.StartTime
Wscript.Echo "Stop time: " & objItem.StopTime
Wscript.Echo
Next
List Exchange Cluster Resource Information
On Error Resume Next
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" &_
strComputer & "\root\CIMV2\Applications\Exchange")
Set colItems = objWMIService.ExecQuery _
("Select * from ExchangeClusterResource")
For Each objItem in colItems
Wscript.Echo "Name: " & objItem.Name
Wscript.Echo "Owner: " & objItem.Owner
Wscript.Echo "State: " & objItem.State
Wscript.Echo "Type: " & objItem.Type
Wscript.Echo "Virtual machine: " & objItem.VirtualMachine
Wscript.Echo
Next
List Exchange Connector State Information
On Error Resume Next
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" &_
strComputer & "\root\cimv2\Applications\Exchange")
Set colItems = objWMIService.ExecQuery _
("Select * from ExchangeConnectorState")
For Each objItem in colItems
Wscript.Echo "Distinguished name: " & objItem.DN
Wscript.Echo "Group distinguished name: " & objItem.GroupDN
Wscript.Echo "Group GUID: " & objItem.GroupGUID
Wscript.Echo "GUID: " & objItem.GUID
Wscript.Echo "Is up: " & objItem.IsUp
Wscript.Echo "Name: " & objItem.Name
Wscript.Echo
Next
List Exchange Domain Controller Information
On Error Resume Next
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & _
"\ROOT\MicrosoftExchangeV2")
Set colItems = objWMIService.ExecQuery _
("Select * from Exchange_DSAccessDC")
For Each objItem in colItems
Wscript.Echo "Configuration: " & objItem.Configuration
Wscript.Echo "Directory type: " & objItem.DirectoryType
Wscript.Echo "Is fast: " & objItem.IsFast
Wscript.Echo "Is in sync: " & objItem.IsInSync
Wscript.Echo "Is up: " & objItem.IsUp
Wscript.Echo "LDAP port: " & objItem.LDAPPort
Wscript.Echo "Name: " & objItem.Name
Wscript.Echo "Type: " & objItem.Type
Wscript.Echo
Next
List Exchange Folder Tree Information
On Error Resume Next
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & _
"\ROOT\MicrosoftExchangeV2")
Set colItems = objWMIService.ExecQuery _
("Select * from Exchange_FolderTree")
For Each objItem in colItems
Wscript.Echo "Administrative group: " & _
objItem.AdministrativeGroup
Wscript.Echo "Administrative noe: " & _
objItem.AdministrativeNote
Wscript.Echo "Associated public stores: " & _
objItem.AssociatedPublicStores
Wscript.Echo "Creation time: " & objItem.CreationTime
Wscript.Echo "GUID: " & objItem.GUID
Wscript.Echo "Has local public store: " & _
objItem.HasLocalPublicStore
Wscript.Echo "Last modification time: " & _
objItem.LastModificationTime
Wscript.Echo "MAPI folder tree: " & objItem.MAPIFolderTree
Wscript.Echo "Name: " & objItem.Name
Wscript.Echo "Root folder URL: " & objItem.RootFolderURL
Wscript.Echo
Next
List Exchange Link Information
On Error Resume Next
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & _
"\ROOT\MicrosoftExchangeV2")
Set colItems = objWMIService.ExecQuery _
("Select * from Exchange_Link")
For Each objItem in colItems
Wscript.Echo "Action freeze: " & objItem.ActionFreeze
Wscript.Echo "Action kick: " & objItem.ActionKick
Wscript.Echo "Action thaw: " & objItem.ActionThaw
Wscript.Echo "Extended state info: " & _
objItem.ExtendedStateInfo
Wscript.Echo "Global stop: " & objItem.GlobalStop
Wscript.Echo "Link distinguished name: " & objItem.LinkDN
Wscript.Echo "Link ID: " & objItem.LinkID
Wscript.Echo "Link name: " & objItem.LinkName
Wscript.Echo "Message count: " & objItem.MessageCount
Wscript.Echo "Next scheduled connection: " & _
objItem.NextScheduledConnection
Wscript.Echo "Oldest message: " & objItem.OldestMessage
Wscript.Echo "Protocol name: " & objItem.ProtocolName
Wscript.Echo "Size: " & objItem.Size
Wscript.Echo "State action: " & objItem.StateActive
Wscript.Echo "State flags: " & objItem.StateFlags
Wscript.Echo "State frozen: " & objItem.StateFrozen
Wscript.Echo "State ready: " & objItem.StateReady
Wscript.Echo "State remote: " & objItem.StateRemote
Wscript.Echo "State retry: " & objItem.StateRetry
Wscript.Echo "State scheduled: " & objItem.StateScheduled
Wscript.Echo "Support link actions: " & _
objItem.SupportLinkActions
Wscript.Echo "Type currently unreachable: " & _
objItem.TypeCurrentlyUnreachable
Wscript.Echo "Type deferred deilvery: " & _
objItem.TypeDeferredDelivery
Wscript.Echo "Type internal: " & objItem.TypeInternal
Wscript.Echo "Type local delivery: " & _
objItem.TypeLocalDelivery
Wscript.Echo "Type pending categorization: " & _
objItem.TypePendingCategorization
Wscript.Echo "Type pending routing: " & _
objItem.TypePendingRouting
Wscript.Echo "Type pending submission: " & _
objItem.TypePendingSubmission
Wscript.Echo "Type remote delivery: " & _
objItem.TypeRemoteDelivery
Wscript.Echo "Version: " & objItem.Version
Wscript.Echo "Virtual machine: " & objItem.VirtualMachine
Wscript.Echo "Virtual server name: " & _
objItem.VirtualServerName
Wscript.Echo
Next
List Exchange Logon Information
On Error Resume Next
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & _
"\ROOT\MicrosoftExchangeV2")
Set colItems = objWMIService.ExecQuery("Select * from Exchange_Logon")
For Each objItem in colItems
Wscript.Echo "Client version: " & objItem.ClientVersion
Wscript.Echo "Code page ID: " & objItem.CodePageID
Wscript.Echo "Folder operations rate: " & _
objItem.FolderOperationsRate
Wscript.Echo "Host addess: " & objItem.HostAddress
Wscript.Echo "Last operation time: " & _
objItem.LastOperationTime
Wscript.Echo "Locale ID: " & objItem.LocaleID
Wscript.Echo "Logged-on user account: " & _
objItem.LoggedOnUserAccount
Wscript.Echo "Logged-on user's malibx legacy distinguished name: " _
& objItem.LoggedOnUsersMailboxLegacyDN
Wscript.Echo "Logon time: " & objItem.LogonTime
Wscript.Echo "Mailbox display name: " & _
objItem.MailboxDisplayName
Wscript.Echo "Mailbox legacy distinguished name: " & _
objItem.MailboxLegacyDN
Wscript.Echo "Messaging operation count: " & _
objItem.MessagingOperationRate
Wscript.Echo "Open attachment count: " & _
objItem.OpenAttachmentCount
Wscript.Echo "Open folder count: " & objItem.OpenFolderCount
Wscript.Echo "Open message count: " & objItem.OpenMessageCount
Wscript.Echo "Other operation rate: " & _
objItem.OtherOperationRate
Wscript.Echo "Progress operation rate: " & _
objItem.ProgressOperationRate
Wscript.Echo "Row ID: " & objItem.RowID
Wscript.Echo "Server name: " & objItem.ServerName
Wscript.Echo "Storage group name: " & objItem.StorageGroupName
Wscript.Echo "Store name: " & objItem.StoreName
Wscript.Echo "Store type: " & objItem.StoreType
Wscript.Echo "Stream operation rate: " & _
objItem.StreamOperationRate
Wscript.Echo "Table operation rate: " & _
objItem.TableOperationRate
Wscript.Echo "Total operation rate: " & _
objItem.TotalOperationRate
Wscript.Echo "Transfer operation rate: " & _
objItem.TransferOperationRate
Wscript.Echo
Next
List Exchange Mailbox Information
On Error Resume Next
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & _
"\ROOT\MicrosoftExchangeV2")
Set colItems = objWMIService.ExecQuery _
("Select * from Exchange_Mailbox")
For Each objItem in colItems
Wscript.Echo "Associated content count: " & _
objItem.AssocContentCount
Wscript.Echo "Date discovered absent in directory service: " & _
objItem.DateDiscoveredAbsentInDS
Wscript.Echo "Delete messages size extended: " & _
objItem.DeletedMessageSizeExtended
Wscript.Echo "Last logged-on user account: " & _
objItem.LastLoggedOnUserAccount
Wscript.Echo "Last logoff time: " & objItem.LastLogoffTime
Wscript.Echo "Last logon time: " & objItem.LastLogonTime
Wscript.Echo "Legacy distinguished name: " & objItem.LegacyDN
Wscript.Echo "Mailbox display name: " & _
objItem.MailboxDisplayName
Wscript.Echo "Mailbox GUID: " & objItem.MailboxGUID
Wscript.Echo "Server name: " & objItem.ServerName
Wscript.Echo "Size: " & objItem.Size
Wscript.Echo "Storage group name: " & _
objItem.StorageGroupName
Wscript.Echo "Storage limit information: " & _
objItem.StorageLimitInfo
Wscript.Echo "Store name: " & objItem.StoreName
Wscript.Echo "Total items: " & objItem.TotalItems
Wscript.Echo
Next
List Exchange Message Tracking Entry Information
On Error Resume Next
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & _
"\ROOT\MicrosoftExchangeV2")
Set colItems = objWMIService.ExecQuery _
("Select * from Exchange_MessageTrackingEntry")
For Each objItem in colItems
Wscript.Echo "Attempted partner server: " &_
objItem.AttemtpedPartnerServer
Wscript.Echo "Client IP: " & objItem.ClientIP
Wscript.Echo "Client name: " & objItem.ClientName
Wscript.Echo "Cost: " & objItem.Cost
Wscript.Echo "Delivery time: " & objItem.DeliveryTime
Wscript.Echo "Encrypted: " & objItem.Encrypted
Wscript.Echo "Entry type: " & objItem.EntryType
Wscript.Echo "Expansion DL: " & objItem.ExpansionDL
Wscript.Echo "Key ID: " & objItem.KeyID
Wscript.Echo "Linked message ID: " &_
objItem.LinkedMessageID
Wscript.Echo "Message ID: " & objItem.MessageID
Wscript.Echo "Origination time: " & objItem.OriginationTime
Wscript.Echo "Partner server: " & objItem.PartnerServer
Wscript.Echo "Priority: " & objItem.Priority
Wscript.Echo "Recipient address: " &_
objItem.RecipientAddress
Wscript.Echo "Recipient count: " & objItem.RecipientCount
Wscript.Echo "Recipient status: " & objItem.RecipientStatus
Wscript.Echo "Sender address: " & objItem.SenderAddress
Wscript.Echo "Server IP: " & objItem.ServerIP
Wscript.Echo "Server name: " & objItem.ServerName
Wscript.Echo "Size: " & objItem.Size
Wscript.Echo "Subject: " & objItem.Subject
Wscript.Echo "Subject ID: " & objItem.SubjectID
Wscript.Echo "Time logged: " & objItem.TimeLogged
Wscript.Echo "Version: " & objItem.Version
Wscript.Echo
Next
List Exchange Public Folder Information
On Error Resume Next
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & _
"\ROOT\MicrosoftExchangeV2")
Set colItems = objWMIService.ExecQuery _
("Select * from Exchange_PublicFolder")
For Each objItem in colItems
Wscript.Echo "Address book name: " & objItem.AddressBookName
Wscript.Echo "Administrative note: " & _
objItem.AdministrativeNote
Wscript.Echo "Administrative security descriptor: " & _
objItem.AdminSecurityDescriptor
Wscript.Echo "Active Directory proxy path: " & _
objItem.ADProxyPath
Wscript.Echo "Associated messgae count: " & _
objItem.AssociatedMessageCount
Wscript.Echo "Attachment count: " & objItem.AttachmentCount
Wscript.Echo "Categorization count: " & _
objItem.CategorizationCount
Wscript.Echo "Comment: " & objItem.Comment
Wscript.Echo "Contact count: " & objItem.ContactCount
Wscript.Echo "Contains rules: " & objItem.ContainsRules
Wscript.Echo "Creation time: " & objItem.CreationTime
Wscript.Echo "Deleted item lifetime: " & _
objItem.DeletedItemLifetime
Wscript.Echo "Folder tree: " & objItem.FolderTree
Wscript.Echo "Friendly URL: " & objItem.FriendlyURL
Wscript.Echo "Has children: " & objItem.HasChildren
Wscript.Echo "Has local replica: " & objItem.HasLocalReplica
Wscript.Echo "Is mail enabled: " & objItem.IsMailEnabled
Wscript.Echo "Is normal folder: " & objItem.IsNormalFolder
Wscript.Echo "Is search folder: " & objItem.IsSearchFolder
Wscript.Echo "Is secure in site: " & objItem.IsSecureInSite
Wscript.Echo "Last access time: " & objItem.LastAccessTime
Wscript.Echo "Last modification time: " & _
objItem.LastModificationTime
Wscript.Echo "Maximum item size: " & objItem.MaximumItemSize
Wscript.Echo "Message count: " & objItem.MessageCount
Wscript.Echo "Message with attachments count: " & _
objItem.MessageWithAttachmentsCount
Wscript.Echo "Name: " & objItem.Name
Wscript.Echo "Normal message size: " & _
objItem.NormalMessageSize
Wscript.Echo "owner count: " & objItem.OwnerCount
Wscript.Echo "Parent friendly URL: " & _
objItem.ParentFriendlyURL
Wscript.Echo "Path: " & objItem.Path
Wscript.Echo "Prohibit post limit: " & _
objItem.ProhibitPostLimit
Wscript.Echo "Publish in address book: " & _
objItem.PublishInAddressBook
Wscript.Echo "Recipiejt count on associated messages: " & _
objItem.RecipientCountOnAssociatedMessages
Wscript.Echo "Recipient count on normal messages: " & _
objItem.RecipientCountOnNormalMessages
Wscript.Echo "Replica age limit: " & objItem.ReplicaAgeLimit
Wscript.Echo "Replica list: " & objItem.ReplicaList
Wscript.Echo "Replication message priority: " & _
objItem.ReplicationMessagePriority
Wscript.Echo "Replication schedule: " & _
objItem.ReplicationSchedule
Wscript.Echo "Replication style: " & objItem.ReplicationStyle
Wscript.Echo "Replication count: " & objItem.RestrictionCount
Wscript.Echo "Security descriptor: " & _
objItem.SecurityDescriptor
Wscript.Echo "Storage limit style: " & objItem.StorageLimitStyle
Wscript.Echo "Target address: " & objItem.TargetAddress
Wscript.Echo "Total message size: " & objItem.TotalMessageSize
Wscript.Echo "URL: " & objItem.URL
Wscript.Echo "Use public store age limits: " & _
objItem.UsePublicStoreAgeLimits
Wscript.Echo "Use public store deleted item lifetime: " & _
objItem.UsePublicStoreDeletedItemLifetime
Wscript.Echo "Warning limit: " & objItem.WarningLimit
Wscript.Echo
Next
List Exchange Queue Information
On Error Resume Next
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & _
"\ROOT\MicrosoftExchangeV2")
Set colItems = objWMIService.ExecQuery("Select * from ExchangeQueue")
For Each objItem in colItems
Wscript.Echo "Can enumerate all: " & objItem.CanEnumAll
Wscript.Echo "Can enumerate failures: " & objItem.CanEnumFailed
Wscript.Echo "Van enumerate first N messages: " & _
objItem.CanEnumFirstNMessages
Wscript.Echo "Can enumerate frozen messages: " & _
objItem.CanEnumFrozen
Wscript.Echo "Can enumerate messages not meeting the criteria: " & _
objItem.CanEnumInvertSense
Wscript.Echo "Can enumerate messages larger than X: " & _
objItem.CanEnumLargerThan
Wscript.Echo "Can enumerate largest N messages: " & _
objItem.CanEnumNLargestMessages
Wscript.Echo "Can enumerate oldest N messages: " & _
objItem.CanEnumNOldestMessages
Wscript.Echo "Can enumerate messages older than X: " & _
objItem.CanEnumOlderThan
Wscript.Echo "Can enumerate recipients: " & _
objItem.CanEnumRecipient
Wscript.Echo "Can enumerate senders: " & objItem.CanEnumSender
Wscript.Echo "Global stop: " & objItem.GlobalStop
Wscript.Echo "Increasing time: " & objItem.IncreasingTime
Wscript.Echo "Link name: " & objItem.LinkName
Wscript.Echo "Message enumeration flags supported: " & _
objItem.MsgEnumFlagsSupported
Wscript.Echo "Number of messages: " & objItem.NumberOfMessages
Wscript.Echo "Protocol name: " & objItem.ProtocolName
Wscript.Echo "Queue name: " & objItem.QueueName
Wscript.Echo "Size of queue: " & objItem.SizeOfQueue
Wscript.Echo "Version: " & objItem.Version
Wscript.Echo "Virtual machine: " & objItem.VirtualMachine
Wscript.Echo "Virtual server name: " & objItem.VirtualServerName
Wscript.Echo
Next
List Exchange Queued Message Information
On Error Resume Next
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & _
"\ROOT\MicrosoftExchangeV2")
Set colItems = objWMIService.ExecQuery _
("Select * from Exchange_QueuedMessage")
For Each objItem in colItems
Wscript.Echo "Action deleted NDR: " & objItem.ActionDeletedNDR
Wscript.Echo "Action deleted no NDR: " & _
objItem.ActionDeletedNoNDR
Wscript.Echo "Action freeze: " & objItem.ActionFreeze
Wscript.Echo "Action thaw: " & objItem.ActionThaw
Wscript.Echo "Expiry: " & objItem.Expiry
Wscript.Echo "High priority: " & objItem.HighPriority
Wscript.Echo "Link ID: " & objItem.LinkID
Wscript.Echo "Link name: " & objItem.LinkName
Wscript.Echo "Low priority: " & objItem.LowPriority
Wscript.Echo "Message ID: " & objItem.MessageID
Wscript.Echo "Normal priority: " & objItem.NormalPriority
Wscript.Echo "Protocol ID: " & objItem.ProtocolName
Wscript.Echo "Queue ID: " & objItem.QueueID
Wscript.Echo "Queue name: " & objItem.QueueName
Wscript.Echo "Received: " & objItem.Received
Wscript.Echo "Recipient count: " & objItem.RecipientCount
Wscript.Echo "Recipients: " & objItem.Recipients
Wscript.Echo "Sender: " & objItem.Sender
Wscript.Echo "Size: " & objItem.Size
Wscript.Echo "State flags: " & objItem.StateFlags
Wscript.Echo "State frozen: " & objItem.StateFrozen
Wscript.Echo "State retry: " & objItem.StateRetry
Wscript.Echo "Subject: " & objItem.Subject
Wscript.Echo "Submission: " & objItem.Submission
Wscript.Echo "Version: " & objItem.Version
Wscript.Echo "Virtual machine: " & objItem.VirtualMachine
Wscript.Echo "Virtual server name: " & _
objItem.VirtualServerName
Wscript.Echo
Next
List Exchange Server Information
On Error Resume Next
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & _
"\ROOT\MicrosoftExchangeV2")
Set colItems = objWMIService.ExecQuery("Select * from Exchange_Server")
For Each objItem in colItems
Wscript.Echo "Administrative group: " & _
objItem.AdministrativeGroup
Wscript.Echo "Administrative note: " & objItem.AdministrativeNote
Wscript.Echo "Creation time: " & objItem.CreationTime
Wscript.Echo "Distinguished name: " & objItem.DN
Wscript.Echo "Exchange version: " & objItem.ExchangeVersion
Wscript.Echo "Fully-qualified domain name: " & objItem.FQDN
Wscript.Echo "GUID: " & objItem.GUID
Wscript.Echo "Is front-end server: " & objItem.IsFrontEndServer
Wscript.Echo "Last modification time: " & _
objItem.LastModificationTime
Wscript.Echo "Message tracking enabled: " & _
objItem.MessageTrackingEnabled
Wscript.Echo "Message tracking log file lifetime: " & _
objItem.MessageTrackingLogFileLifetime
Wscript.Echo "Message tracking log file path: " & _
objItem.MessageTrackingLogFilePath
Wscript.Echo "Monitoring enabled: " & objItem.MonitoringEnabled
Wscript.Echo "MTA data path: " & objItem.MTADataPath
Wscript.Echo "Name: " & objItem.Name
Wscript.Echo "Routing group: " & objItem.RoutingGroup
Wscript.Echo "Subject logging enabled: " & _
objItem.SubjectLoggingEnabled
Wscript.Echo "Type: " & objItem.Type
Wscript.Echo
Next
List Exchange Server State Information
On Error Resume Next
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" &_
strComputer & "\root\cimv2\Applications\Exchange")
Set colItems = objWMIService.ExecQuery _
("Select * from ExchangeServerState")
For Each objItem in colItems
Wscript.Echo "Cluster state: " & objItem.ClusterState
Wscript.Echo "Cluster state string: " & _
objItem.ClusterStateString
Wscript.Echo "CPU state: " & objItem.CPUState
Wscript.Echo "CPU state string: " & objItem.CPUStateString
Wscript.Echo "Disks state: " & objItem.DisksState
Wscript.Echo "Diskss state string: " & objItem.DisksStateString
Wscript.Echo "Distinguished name: " & objItem.DN
Wscript.Echo "Group dsitinguihsed name: " & objItem.GroupDN
Wscript.Echo "Group GUID: " & objItem.GroupGUID
Wscript.Echo "GUID: " & objItem.GUID
Wscript.Echo "Memory state: " & objItem.MemoryState
Wscript.Echo "Memory state string: " & _
objItem.MemoryStateString
Wscript.Echo "Name: " & objItem.Name
Wscript.Echo "Queues state: " & objItem.QueuesState
Wscript.Echo "Queues state string: " & _
objItem.QueuesStateString
Wscript.Echo "Server maintenance: " & _
objItem.ServerMaintenance
Wscript.Echo "Server state: " & objItem.ServerState
Wscript.Echo "Server state string: " & _
objItem.ServerStateString
Wscript.Echo "Services state: " & objItem.ServicesState
Wscript.Echo "Services state string: " & _
objItem.ServicesStateString
Wscript.Echo "Unreachable: " & objItem.Unreachable
Wscript.Echo "Version: " & objItem.Version
Wscript.Echo
Next
List Exchange Virtual Server Queue Information
On Error Resume Next
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & _
"\ROOT\MicrosoftExchangeV2")
Set colItems = objWMIService.ExecQuery _
("Select * from Exchange_QueueVirtualServer")
For Each objItem in colItems
Wscript.Echo "Global actions supported: " & _
objItem.GlobalActionsSupported
Wscript.Echo "Global stop: " & objItem.GlobalStop
Wscript.Echo "Protocol name: " & objItem.ProtocolName
Wscript.Echo "Virtual machine: " & objItem.VirtualMachine
Wscript.Echo "Virtual server name: " & _
objItem.VirtualServerName
Wscript.Echo
Next
List Exchange XML Queue Data
On Error Resume Next
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & _
"\ROOT\MicrosoftExchangeV2")
Set colItems = objWMIService.ExecQuery _
("Select * from Exchange_QueueData")
For Each objItem in colItems
Wscript.Echo "Server name: " & objItem.ServerName
Wscript.Echo "XML queue data: " & objItem.XMLQueueData
Wscript.Echo
Next
List the Queued Cache Reload Time
On Error Resume Next
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & _
"\ROOT\MicrosoftExchangeV2")
Set colItems = objWMIService.ExecQuery _
("Select * from Exchange_QueueCacheReloadEvent")
For Each objItem in colItems
Wscript.Echo "Reload time: " & objItem.ReloadTime
Wscript.Echo
Next
Send Email from a Script
Set objEmail = CreateObject("CDO.Message")
objEmail.From = "monitor1@fabrikam.com"
objEmail.To = "admin1@fabrikam.com"
objEmail.Subject = "Atl-dc-01 down"
objEmail.Textbody = "Atl-dc-01 is no longer accessible over the network."
objEmail.Send
Send Email without Installing the SMTP Service
Set objEmail = CreateObject("CDO.Message")
objEmail.From = "admin1@fabrikam.com"
objEmail.To = "admin2@fabrikam.com"
objEmail.Subject = "Server down"
objEmail.Textbody = "Server1 is no longer accessible over the network."
objEmail.Configuration.Fields.Item _
("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
objEmail.Configuration.Fields.Item _
("http://schemas.microsoft.com/cdo/configuration/smtpserver") = _
"smarthost"
objEmail.Configuration.Fields.Item _
("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 25
objEmail.Configuration.Fields.Update
objEmail.Send
Add Data to a Spreadsheet Cell
Set objExcel = CreateObject("Excel.Application")
objExcel.Visible = True
objExcel.Workbooks.Add
objExcel.Cells(1, 1).Value = "Test value"
Add Formatted Data to a Spreadsheet
Set objExcel = CreateObject("Excel.Application")
objExcel.Visible = True
objExcel.Workbooks.Add
objExcel.Cells(1, 1).Value = "Test value"
objExcel.Cells(1, 1).Font.Bold = TRUE
objExcel.Cells(1, 1).Font.Size = 24
objExcel.Cells(1, 1).Font.ColorIndex = 3
Create User Accounts Based on Information in a Spreadsheet
Set objExcel = CreateObject("Excel.Application")
Set objWorkbook = objExcel.Workbooks.Open _
("C:\Scripts\New_users.xls")
intRow = 2
Do Until objExcel.Cells(intRow,1).Value = ""
Set objOU = GetObject("ou=Finance, dc=fabrikam, dc=com")
Set objUser = objOU.Create _
("User", "cn=" & objExcel.Cells(intRow, 1).Value)
objUser.sAMAccountName = objExcel.Cells(intRow, 2).Value
objUser.GivenName = objExcel.Cells(intRow, 3).Value
objUser.SN = objExcel.Cells(intRow, 4).Value
objUser.AccountDisabled = FALSE
objUser.SetInfo
intRow = intRow + 1
Loop
objExcel.Quit
Format a Range of Cells
Set objExcel = CreateObject("Excel.Application")
objExcel.Visible = True
objExcel.Workbooks.Add
objExcel.Cells(1, 1).Value = "Name"
objExcel.Cells(1, 1).Font.Bold = TRUE
objExcel.Cells(1, 1).Interior.ColorIndex = 30
objExcel.Cells(1, 1).Font.ColorIndex = 2
objExcel.Cells(2, 1).Value = "Test value 1"
objExcel.Cells(3, 1).Value = "Test value 2"
objExcel.Cells(4, 1).Value = "Tets value 3"
objExcel.Cells(5, 1).Value = "Test value 4"
Set objRange = objExcel.Range("A1","A5")
objRange.Font.Size = 14
Set objRange = objExcel.Range("A2","A5")
objRange.Interior.ColorIndex = 36
Set objRange = objExcel.ActiveCell.EntireColumn
objRange.AutoFit()
List Active Directory Data in a Spreadsheet
Const ADS_SCOPE_SUBTREE = 2
Set objExcel = CreateObject("Excel.Application")
objExcel.Visible = True
objExcel.Workbooks.Add
objExcel.Cells(1, 1).Value = "Last name"
objExcel.Cells(1, 2).Value = "First name"
objExcel.Cells(1, 3).Value = "Department"
objExcel.Cells(1, 4).Value = "Phone number"
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") = 100
objCommand.Properties("Searchscope") = ADS_SCOPE_SUBTREE
objCommand.CommandText = _
"SELECT givenName, SN, department, telephoneNumber FROM " _
& "'LDAP://dc=fabrikam,dc=microsoft,dc=com' WHERE " _
& "objectCategory='user'"
Set objRecordSet = objCommand.Execute
objRecordSet.MoveFirst
x = 2
Do Until objRecordSet.EOF
objExcel.Cells(x, 1).Value = _
objRecordSet.Fields("SN").Value
objExcel.Cells(x, 2).Value = _
objRecordSet.Fields("givenName").Value
objExcel.Cells(x, 3).Value = _
objRecordSet.Fields("department").Value
objExcel.Cells(x, 4).Value = _
objRecordSet.Fields("telephoneNumber").Value
x = x + 1
objRecordSet.MoveNext
Loop
Set objRange = objExcel.Range("A1")
objRange.Activate
Set objRange = objExcel.ActiveCell.EntireColumn
objRange.Autofit()
Set objRange = objExcel.Range("B1")
objRange.Activate
Set objRange = objExcel.ActiveCell.EntireColumn
objRange.Autofit()
Set objRange = objExcel.Range("C1")
objRange.Activate
Set objRange = objExcel.ActiveCell.EntireColumn
objRange.Autofit()
Set objRange = objExcel.Range("D1")
objRange.Activate
Set objRange = objExcel.ActiveCell.EntireColumn
objRange.Autofit()
Set objRange = objExcel.Range("A1").SpecialCells(11)
Set objRange2 = objExcel.Range("C1")
Set objRange3 = objExcel.Range("A1")
List Excel Color Values
Set objExcel = CreateObject("Excel.Application")
objExcel.Visible = True
objExcel.Workbooks.Add
For i = 1 to 56
objExcel.Cells(i, 1).Value = i
objExcel.Cells(i, 1).Interior.ColorIndex = i
Next
List Service Data in a Spreadsheet
Set objExcel = CreateObject("Excel.Application")
objExcel.Visible = True
objExcel.Workbooks.Add
x = 1
strComputer = "."
Set objWMIService = GetObject _
("winmgmts:\\" & strComputer & "\root\cimv2")
Set colServices = objWMIService.ExecQuery _
("Select * From Win32_Service")
For Each objService in colServices
objExcel.Cells(x, 1) = objService.Name
objExcel.Cells(x, 2) = objService.State
x = x + 1
Next
Open an Excel Spreadsheet
Set objExcel = CreateObject("Excel.Application")
Set objWorkbook = objExcel.Workbooks.Open("C:\Scripts\New_users.xls")
Read an Excel Spreadsheet
Set objExcel = CreateObject("Excel.Application")
Set objWorkbook = objExcel.Workbooks.Open _
("C:\Scripts\New_users.xls")
intRow = 2
Do Until objExcel.Cells(intRow,1).Value = ""
Wscript.Echo "CN: " & objExcel.Cells(intRow, 1).Value
Wscript.Echo "sAMAccountName: " & objExcel.Cells(intRow, 2).Value
Wscript.Echo "GivenName: " & objExcel.Cells(intRow, 3).Value
Wscript.Echo "LastName: " & objExcel.Cells(intRow, 4).Value
intRow = intRow + 1
Loop
objExcel.Quit
AutoFit Columns in a Microsoft Excel Worksheet
Set objExcel = CreateObject("Excel.Application")
objExcel.Visible = True
Set objWorkbook = objExcel.Workbooks.Add()
Set objWorksheet = objWorkbook.Worksheets(1)
x = 1
strComputer = "."
Set objWMIService = _
GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
Set colItems = objWMIService.ExecQuery _
("Select * from Win32_Service")
For Each objItem in colItems
objWorksheet.Cells(x, 1) = objItem.Name
objWorksheet.Cells(x, 2) = objItem.DisplayName
objWorksheet.Cells(x, 3) = objItem.State
x = x + 1
Next
Set objRange = objWorksheet.UsedRange
objRange.EntireColumn.Autofit()
Sort an Excel Spreadsheet on Three Different Columns
Const xlAscending = 1
Const xlDescending = 2
Const xlYes = 1
Set objExcel = CreateObject("Excel.Application")
objExcel.Visible = True
Set objExcel = CreateObject("Excel.Application")
objExcel.Visible = True
Set objWorkbook = _
objExcel.Workbooks.Open("C:\Scripts\Sort_test.xls")
Set objWorksheet = objWorkbook.Worksheets(1)
Set objRange = objWorksheet.UsedRange
Set objRange2 = objExcel.Range("A1")
Set objRange3 = objExcel.Range("B1")
Set objRange4 = objExcel.Range("C1")
objRange.Sort objRange2,xlAscending,objRange3,,xlDescending, _
objRange4,xlDescending,xlYes
Apply an AutoFormat to an Excel Spreadsheet
Const xpRangeAutoFormatList2 = 11
Set objExcel = CreateObject("Excel.Application")
objExcel.Visible = True
Set objWorkbook = objExcel.Workbooks.Add()
Set objWorksheet = objWorkbook.Worksheets(1)
k = 1
For i = 1 to 10
For j = 1 to 10
objWorksheet.Cells(i,j) = k
k = k + 1
Next
Next
Set objRange = objWorksheet.UsedRange
objRange.AutoFormat(xpRangeAutoFormatList2)
Sort a Microsoft Excel Worksheet
Set objExcel = CreateObject("Excel.Application")
objExcel.Visible = True
Set objWorkbook = objExcel.Workbooks.Add
Set objWorksheet = objWorkbook.Worksheets(1)
objExcel.Cells(1, 1).Value = "4"
objExcel.Cells(2, 1).Value = "1"
objExcel.Cells(3, 1).Value = "2"
objExcel.Cells(4, 1).Value = "3"
objExcel.Cells(1, 2).Value = "A"
objExcel.Cells(2, 2).Value = "B"
objExcel.Cells(3, 2).Value = "C"
objExcel.Cells(4, 2).Value = "D"
Set objRange = objWorksheet.UsedRange
Set objRange2 = objExcel.Range("A1")
objRange.Sort(objRange2)
Run a Microsoft PowerPoint Slide Show
Const ppAdvanceOnTime = 2
Const ppShowTypeKiosk = 3
Const ppSlideShowDone = 5
Set objPPT = CreateObject("PowerPoint.Application")
objPPT.Visible = True
Set objPresentation = objPPT.Presentations.Open("C:\Scripts\Process.ppt")
objPresentation.Slides.Range.SlideShowTransition.AdvanceTime = 2
objPresentation.Slides.Range.SlideShowTransition.AdvanceOnTime = TRUE
objPresentation.SlideShowSettings.AdvanceMode = ppAdvanceOnTime
objPresentation.SlideShowSettings.ShowType = ppShowTypeKiosk
objPresentation.SlideShowSettings.StartingSlide = 1
objPresentation.SlideShowSettings.EndingSlide = _
objPresentation.Slides.Count
Set objSlideShow = objPresentation.SlideShowSettings.Run.View
Do Until objSlideShow.State = ppSlideShowDone
Loop
List the Shapes Found on a Microsoft PowerPoint Slide
Const ppLayoutText = 2
Set objPPT = CreateObject("PowerPoint.Application")
objPPT.Visible = True
Set objPresentation = objPPT.Presentations.Add
objPresentation.ApplyTemplate _
("C:\Program Files\Microsoft Office\" & _
"Templates\Presentation Designs\Globe.pot")
Set objSlide = objPresentation.Slides.Add(1, ppLayoutText)
Set objShapes = objSlide.Shapes
For Each objShape in objShapes
Wscript.Echo objShape.Name
Next
Add a Slide to a Microsoft PowerPoint Presentation
Const ppLayoutText = 2
Set objPPT = CreateObject("PowerPoint.Application")
objPPT.Visible = True
Set objPresentation = objPPT.Presentations.Add
objPresentation.ApplyTemplate _
("C:\Program Files\Microsoft Office\" & _
"Templates\Presentation Designs\Globe.pot")
Set objSlide = objPresentation.Slides.Add _
(1, ppLayoutText)
Modify the Title of a Microsoft PowerPoint Slide
Const ppLayoutText = 2
Set objPPT = CreateObject("PowerPoint.Application")
objPPT.Visible = True
Set objPresentation = objPPT.Presentations.Add
objPresentation.ApplyTemplate _
("C:\Program Files\Microsoft Office\" & _
"Templates\" Presentation Designs\Globe.pot")
Set objSlide = objPresentation.Slides.Add _
(1, ppLayoutText)
Set objShapes = objSlide.Shapes
Set objTitle = objShapes.Item("Rectangle 2")
objTitle.TextFrame.TextRange.Text = "Ken Myer"
Modify a Bulleted List in Microsoft PowerPoint
Const ppLayoutText = 2
Set objPPT = CreateObject("PowerPoint.Application")
objPPT.Visible = True
Set objPresentation = objPPT.Presentations.Add
objPresentation.ApplyTemplate _
("C:\Program Files\Microsoft Office\" & _
"Templates\Presentation Designs\Globe.pot")
Set objSlide = objPresentation.Slides.Add _
(1, ppLayoutText)
Set objShapes = objSlide.Shapes
strText = "Assistant Vice-President" & vbCrLf
strText = strText & "Omaha, Nebraska" & vbcrlf
strText = strtext & "Harvard University"
Set objTitle = objShapes.Item("Rectangle 3")
objTitle.TextFrame.TextRange.Text = strText
Create a Sample Microsoft PowerPoint Presentation
Set objPPT = CreateObject("PowerPoint.Application")
objPPT.Visible = True
Set objPresentation = objPPT.Presentations.Add
objPresentation.ApplyTemplate("C:\Program Files\Microsoft Office\Templates\Presentation Designs\Globe.pot")
strComputer = "."
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
Set colProcesses = objWMIService.ExecQuery("Select * From Win32_Process")
For Each objProcess in colProcesses
Set objSlide = objPresentation.Slides.Add(1,2)
Set objShapes = objSlide.Shapes
Set objTitle = objShapes.Item("Rectangle 2")
objTitle.TextFrame.TextRange.Text = objProcess.Name
strText = "Working set size: " & objProcess.WorkingSetSize & vbCrLf
strText = strText & "Priority: " & objProcess.Priority & vbCrLf
strText = strText & "Thread count: " & objProcess.ThreadCount & vbCrLf
Set objTitle = objShapes.Item("Rectangle 3")
objTitle.TextFrame.TextRange.Text = strText
Next
objPresentation.SaveAs("C:\Scripts\Process.ppt")
objPresentation.Close
objPPT.Quit
Add a Formatted Table to a Word Document
Set objWord = CreateObject("Word.Application")
objWord.Visible = True
Set objDoc = objWord.Documents.Add()
Set objRange = objDoc.Range()
objDoc.Tables.Add objRange,1,3
Set objTable = objDoc.Tables(1)
x=1
strComputer = "."
Set objWMIService = _
GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
Set colItems = objWMIService.ExecQuery("Select * from Win32_Service")
For Each objItem in colItems
If x > 1 Then
objTable.Rows.Add()
End If
objTable.Cell(x, 1).Range.Font.Bold = True
objTable.Cell(x, 1).Range.Text = objItem.Name
objTable.Cell(x, 2).Range.text = objItem.DisplayName
objTable.Cell(x, 3).Range.text = objItem.State
x = x + 1
Next
Add a Table to a Word Document
Set objWord = CreateObject("Word.Application")
objWord.Visible = True
Set objDoc = objWord.Documents.Add()
Set objRange = objDoc.Range()
objDoc.Tables.Add objRange,1,3
Set objTable = objDoc.Tables(1)
x=1
strComputer = "."
Set objWMIService = _
GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
Set colItems = objWMIService.ExecQuery("Select * from Win32_Service")
For Each objItem in colItems
If x > 1 Then
objTable.Rows.Add()
End If
objTable.Cell(x, 1).Range.Text = objItem.Name
objTable.Cell(x, 2).Range.text = objItem.DisplayName
objTable.Cell(x, 3).Range.text = objItem.State
x = x + 1
Next
Add Formatted Text to a Word Document
Set objWord = CreateObject("Word.Application")
objWord.Visible = True
Set objDoc = objWord.Documents.Add()
Set objSelection = objWord.Selection
objSelection.Font.Name = "Arial"
objSelection.Font.Size = "18"
objSelection.TypeText "Network Adapter Report"
objSelection.TypeParagraph()
objSelection.Font.Size = "14"
objSelection.TypeText "" & Date()
objSelection.TypeParagraph()
Append Text to a Word Document
Const END_OF_STORY = 6
Const MOVE_SELECTION = 0
Set objWord = CreateObject("Word.Application")
objWord.Visible = True
Set objDoc = objWord.Documents.Open("c:\scripts\word\testdoc.doc")
Set objSelection = objWord.Selection
objSelection.EndKey END_OF_STORY, MOVE_SELECTION
objSelection.TypeParagraph()
objSelection.TypeParagraph()
objSelection.Font.Size = "14"
objSelection.TypeText "" & Date()
objSelection.TypeParagraph()
objSelection.TypeParagraph()
objSelection.Font.Size = "10"
Apply a Style to a Table in a Word Document
Set objWord = CreateObject("Word.Application")
objWord.Visible = True
Set objDoc = objWord.Documents.Add()
Set objRange = objDoc.Range()
objDoc.Tables.Add objRange,1,3
Set objTable = objDoc.Tables(1)
objTable.Range.Font.Size = 10
objTable.Range.Style = "Table Contemporary"
x=2
objTable.Cell(x, 1).Range.Text = "Service Name"
objTable.Cell(x, 2).Range.text = "Display Name"
objTable.Cell(x, 3).Range.text = "State"
strComputer = "."
Set objWMIService = _
GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
Set colItems = objWMIService.ExecQuery("Select * from Win32_Service")
For Each objItem in colItems
If x > 1 Then
objTable.Rows.Add()
End If
objTable.Cell(x, 1).Range.Text = objItem.Name
objTable.Cell(x, 2).Range.text = objItem.DisplayName
objTable.Cell(x, 3).Range.text = objItem.State
x = x + 1
Next
Create a New Word Document
Set objWord = CreateObject("Word.Application")
objWord.Visible = True
Set objDoc = objWord.Documents.Add()
Create and Save a Word Document
Set objWord = CreateObject("Word.Application")
objWord.Caption = "Test Caption"
objWord.Visible = True
Set objDoc = objWord.Documents.Add()
Set objSelection = objWord.Selection
objSelection.Font.Name = "Arial"
objSelection.Font.Size = "18"
objSelection.TypeText "Network Adapter Report"
objSelection.TypeParagraph()
objSelection.Font.Size = "14"
objSelection.TypeText "" & Date()
objSelection.TypeParagraph()
objSelection.TypeParagraph()
objSelection.Font.Size = "10"
strComputer = "."
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
Set colItems = objWMIService.ExecQuery _
("Select * from Win32_NetworkAdapterConfiguration")
For Each objItem in colItems
objSelection.Font.Bold = True
objSelection.TypeText "ARP Always Source Route: "
objSelection.Font.Bold = False
objSelection.TypeText "" & objItem.ArpAlwaysSourceRoute
objSelection.TypeParagraph()
objSelection.Font.Bold = True
objSelection.TypeText "ARP Use EtherSNAP: "
objSelection.Font.Bold = False
objSelection.TypeText ""& objItem.ArpUseEtherSNAP
objSelection.TypeParagraph()
objSelection.Font.Bold = True
objSelection.TypeText "Caption: "
objSelection.Font.Bold = False
objSelection.TypeText ""& objItem.Caption
objSelection.TypeParagraph()
objSelection.Font.Bold = True
objSelection.TypeText "Database Path: "
objSelection.Font.Bold = False
objSelection.TypeText "" & objItem.DatabasePath
objSelection.TypeParagraph()
objSelection.Font.Bold = True
objSelection.TypeText "Dead GW Detection Enabled: "
objSelection.Font.Bold = False
objSelection.TypeText "" & objItem.DeadGWDetectEnabled
objSelection.TypeParagraph()
objSelection.Font.Bold = True
objSelection.TypeText "Default IP Gateway: "
objSelection.Font.Bold = False
objSelection.TypeText "" & objItem.DefaultIPGateway
objSelection.TypeParagraph()
objSelection.Font.Bold = True
objSelection.TypeText "Default TOS: "
objSelection.Font.Bold = False
objSelection.TypeText ""& objItem.DefaultTOS
objSelection.TypeParagraph()
objSelection.Font.Bold = True
objSelection.TypeText "Default TTL: "
objSelection.Font.Bold = False
objSelection.TypeText ""& objItem.DefaultTTL
objSelection.TypeParagraph()
objSelection.Font.Bold = True
objSelection.TypeText "Description: "
objSelection.Font.Bold = True
objSelection.Font.Bold = False
objSelection.TypeText ""& objItem.Description
objSelection.TypeParagraph()
objSelection.TypeParagraph()
Next
objDoc.SaveAs("C:\Scripts\Word\testdoc.doc")
objWord.Quit
Display Service Information in a Word Document
Set objWord = CreateObject("Word.Application")
objWord.Visible = True
Set objDoc = objWord.Documents.Add()
Set objSelection = objWord.Selection
objSelection.TypeText "Services Report"
objSelection.TypeParagraph()
objSelection.TypeText "" & Now
objSelection.TypeParagraph()
objSelection.TypeParagraph()
strComputer = "."
Set objWMIService = _
GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
Set colItems = objWMIService.ExecQuery("Select * from Win32_Service")
For Each objItem in colItems
objSelection.TypeText objItem.DisplayName & " -- " & objItem.State
objSelection.TypeParagraph()
Next
List Microsoft Word Properties
On Error Resume Next
Set objWord = CreateObject("Word.Application")
Wscript.Echo "Active Printer:", objWord.ActivePrinter
For Each objAddIn in objWord.AddIns
Wscript.Echo "AddIn: ", objAddIn
Next
Wscript.Echo "Application:", objWord.Application
Wscript.Echo "Assistant:", objWord.Assistant
For Each objCaption in objWord.AutoCaptions
Wscript.Echo "AutoCaptions:", objCaption
Next
Wscript.Echo "Automation Security:", objWord.AutomationSecurity
Wscript.Echo "Background Printing Status:", objWord.BackgroundPrintingStatus
Wscript.Echo "Background Saving Status:", objWord.BackgroundSavingStatus
Wscript.Echo "Browse Extra File Type:", objWord.BrowseExtraFileTypes
Wscript.Echo "Build:", objWord.Build
Wscript.Echo "Caps Lock:", objWord.CapsLock
Wscript.Echo "Caption:", objWord.Caption
For Each objLabel in objWord.CaptionLabels
Wscript.Echo "Caption Label:", objLabel
Next
Wscript.Echo "Check Language:", objWord.CheckLanguage
For Each objAddIn in objWord.COMAddIns
Wscript.Echo "COM AddIn:", objAddIn
Next
Wscript.Echo "Creator:", objWord.Creator
For Each objDictionary in objWord.CustomDictionaries
Wscript.Echo "Custom Dictionary:", objDictionary
Next
Wscript.Echo "Customization Context:", objWord.CustomizationContext
Wscript.Echo "Default Legal Blackline:", objWord.DefaultLegalBlackline
Wscript.Echo "Default Save Format:", objWord.DefaultSaveFormat
Wscript.Echo "Default Table Separator:", objWord.DefaultTableSeparator
For Each objDialog in objWord.Dialogs
Wscript.Echo "Dialog:", objDialog
Next
Wscript.Echo "Display Alerts:", objWord.DisplayAlerts
Wscript.Echo "Display Recent Files:", objWord.DisplayRecentFiles
Wscript.Echo "Display Screen Tips:", objWord.DisplayScreenTips
Wscript.Echo "Display Scroll Bars:", objWord.DisplayScrollBars
For Each objDocument in objWord.Documents
Wscript.Echo "Document:", objDocument
Next
Wscript.Echo "Email Template:", objWord.EmailTemplate
Wscript.Echo "Enable Cancel Key:", objWord.EnableCancelKey
Wscript.Echo "Feature Install:", objWord.FeatureInstall
For Each objConverter in objWord.FileConverters
Wscript.Echo "File Converter:", objConverter
Next
Wscript.Echo "Focus In MailHeader:", objWord.FocusInMailHeader
For Each objFont in objWord.FontNames
Wscript.Echo "Font Name:", objFont
Next
Wscript.Echo "Height", objWord.Height
For Each objBinding in objWord.KeyBindings
Wscript.Echo "Key Binding:", objBinding
Next
For Each objFont in objWord.LandscapeFontNames
Wscript.Echo "Landscape Font Name:", objFont
Next
Wscript.Echo "Language", objWord.Language
For Each objLanguage in objWord.Languages
Wscript.Echo "Language:", objLanguage
Next
Wscript.Echo "Left", objWord.Left
Wscript.Echo "Mail System:", objWord.MailSystem
Wscript.Echo "MAPI Available:", objWord.MAPIAvailable
Wscript.Echo "Math Coprocessor Available:", objWord.MathCoprocessorAvailable
Wscript.Echo "Mouse Available:", objWord.MouseAvailable
Wscript.Echo "Name:", objWord.Name
Wscript.Echo "Normal Template:", objWord.NormalTemplate
Wscript.Echo "Num Lock:", objWord.NumLock
Wscript.Echo "Parent:", objWord.Parent
Wscript.Echo "Path:", objWord.Path
Wscript.Echo "Path Separator:", objWord.PathSeparator
Wscript.Echo "Print Preview:", objWord.PrintPreview
For Each objFile in objWord.RecentFiles
Wscript.Echo "Recent File:", objFile
Next
Wscript.Echo "Screen Updating:", objWord.ScreenUpdating
Wscript.Echo "Show Visual Basic Editor:", objWord.ShowVisualBasicEditor
Wscript.Echo "Special Mode:", objWord.SpecialMode
Wscript.Echo "Startup Path:", objWord.StartupPath
For Each objTask in objWord.Tasks
Wscript.Echo "Task:", objTask
Next
For Each objTemplate in objWord.Templates
Wscript.Echo "Template:", objTemplate
Next
Wscript.Echo "Top:", objWord.Top
Wscript.Echo "Usable Height:", objWord.UsableHeight
Wscript.Echo "Usable Width:", objWord.UsableWidth
Wscript.Echo "User Address:", objWord.UserAddress
Wscript.Echo "User Control:", objWord.UserControl
Wscript.Echo "User Initials:", objWord.UserInitials
Wscript.Echo "User Name:", objWord.UserName
Wscript.Echo "Version:", objWord.Version
Wscript.Echo "Visible:", objWord.Visible
Wscript.Echo "Width:", objWord.Width
For Each objWindow in objWord.Windows
Wscript.Echo "Window:", objWindow
Next
Wscript.Echo "Window State:", objWord.WindowState
objWord.Quit
Modify Bookmark Text in a Word Document
Set objWord = CreateObject("Word.Application")
objWord.Caption = "Test Caption"
objWord.Visible = True
Set objDoc = objWord.Documents.Open("c:\scripts\word\bookmarkdoc.doc")
Set objRange = objDoc.Bookmarks("NameBookmark").Range
objRange.Text = "Bob"
Set objRange = objDoc.Bookmarks("AddressBookmark").Range
objRange.Text = "999"
Open and Print a Word Document
Set objWord = CreateObject("Word.Application")
Set objDoc = objWord.Documents.Open("c:\scripts\inventory.doc")
objDoc.PrintOut()
objWord.Quit
Read a Bookmark in a Word Document
Set objWord = CreateObject("Word.Application")
Set objDoc = objWord.Documents.Open("c:\scripts\word\bookmarkdoc.doc")
Set objRange = objDoc.Bookmarks("NameBookmark").Range
Wscript.Echo objRange.Text
Set objRange = objDoc.Bookmarks("AddressBookmark").Range
Wscript.Echo objRange.Text
objWord.Quit
Use Word to Search for Files
Set objWord = CreateObject("Word.Application")
Set objDoc = objWord.Documents.Add()
objWord.FileSearch.FileName = "*.mp3"
objWord.FileSearch.LookIn = "C:\"
objWord.FileSearch.SearchSubfolders = True
objWord.FileSearch.Execute
For Each objFile in objWord.FileSearch.FoundFiles
Wscript.Echo objFile
Next
objWord.Quit
Quit Microsoft Word Without Saving the Document
Set objWord = CreateObject("Word.Application")
objWord.Visible = True
Set objDoc = objWord.Documents.Add()
Set objSelection = objWord.Selection
objSelection.TypeText "ABCDEFGHIJKLM"
objDoc.Saved = TRUE
objWord.Quit
Determine the Version of Microsoft Word Installed on a Computer
Set objWord = CreateObject("Word.Application")
Wscript.Echo "Version: " & objWord.Version
Wscript.Echo "Build: " & objWord.Build
Wscript.Echo "Product Code: " & _
objWord.ProductCode()
objWord.Quit
Save a Microsoft Word Document as an HTML File
Const wdFormatHTML = 8
Set objWord = CreateObject("Word.Application")
objWord.Visible = True
Set objDoc = _
objWord.Documents.Open("c:\scripts\test.doc)
objDoc.SaveAs("C:\Scripts\test.htm", wdFormatHTML)
Format Paragraphs in Microsoft Word
Const CENTERED = 1
Set objWord = CreateObject("Word.Application")
objWord.Visible = True
Set objDoc = objWord.Documents.Add()
Set objSelection = objWord.Selection
objSelection.ParagraphFormat.Alignment = CENTERED
objSelection.ParagraphFormat.LineSpacing = 36
objSelection.Font.Name = "Arial"
objSelection.Font.Size = "18"
objSelection.TypeText "Here is some text typed in. "
objSelection.TypeText "Here is some more text typed in. "
objSelection.TypeText "Here is even more text typed in. "
objSelection.TypeText "This is the last of the text."
Add a Picture to a Microsoft Word Document
Set objWord = CreateObject("Word.Application")
objWord.Visible = True
Set objDoc = objWord.Documents.Add()
Set objSelection = objWord.Selection
Set objShape = objDoc.Shapes
objShape.AddPicture("C:\Scripts\Logo.jpg")
List Cluster Node Information
On Error Resume Next
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\mscluster")
Set colItems = objWMIService.ExecQuery("Select * from MSCluster_Node")
For Each objItem in colItems
Wscript.Echo "Build number: " & objItem.BuildNumber
Wscript.Echo "Caption: " & objItem.Caption
Wscript.Echo "Characteristics: " & objItem.Characteristics
Wscript.Echo "CSD version: " & objItem.CSDVersion
Wscript.Echo "Dedicated: " & objItem.Dedicated
Wscript.Echo "Description: " & objItem.Description
Wscript.Echo "Enable event log replication: " & _
objItem.EnableEventLogReplication
Wscript.Echo "Flags: " & objItem.Flags
Wscript.Echo "Identifying descriptions: " & objItem.IdentifyingDescriptions
Wscript.Echo "Initial load info: " & objItem.InitialLoadInfo
Wscript.Echo "Installation date: " & objItem.InstallDate
Wscript.Echo "Last load info: " & objItem.LastLoadInfo
Wscript.Echo "Major version: " & objItem.MajorVersion
Wscript.Echo "Minor version: " & objItem.MinorVersion
Wscript.Echo "Name: " & objItem.Name
Wscript.Echo "Name format: " & objItem.NameFormat
Wscript.Echo "Node highest version: " & objItem.NodeHighestVersion
Wscript.Echo "Node lowest version: " & objItem.NodeLowestVersion
Wscript.Echo "Other identifying info: " & objItem.OtherIdentifyingInfo
Wscript.Echo "Power state: " & objItem.PowerState
Wscript.Echo "Primary owner contact: " & objItem.PrimaryOwnerContact
Wscript.Echo "Primary owner name: " & objItem.PrimaryOwnerName
Wscript.Echo "Reset capability: " & objItem.ResetCapability
Wscript.Echo "Roles: " & objItem.Roles
Wscript.Echo "State: " & objItem.State
Wscript.Echo "Status: " & objItem.Status
Wscript.Echo
Next
List Cluster Resource Group Information
On Error Resume Next
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\mscluster")
Set colItems = objWMIService.ExecQuery("Select * from MSCluster_ResourceGroup")
For Each objItem in colItems
Wscript.Echo "Auto-failback type: " & objItem.AutoFailbackType
Wscript.Echo "Caption: " & objItem.Caption
Wscript.Echo "Characteristics: " & objItem.Characteristics
Wscript.Echo "Description: " & objItem.Description
Wscript.Echo "Failback window end: " & objItem.FailbackWindowEnd
Wscript.Echo "Failback window start: " & objItem.FailbackWindowStart
Wscript.Echo "Failover period: " & objItem.FailoverPeriod
Wscript.Echo "Failover threshold: " & objItem.FailoverThreshold
Wscript.Echo "Flags: " & objItem.Flags
Wscript.Echo "Installation date: " & objItem.InstallDate
Wscript.Echo "Load balance state: " & objItem.LoadBalState
Wscript.Echo "Name: " & objItem.Name
Wscript.Echo "Persistent state: " & objItem.PersistentState
Wscript.Echo "State: " & objItem.State
Wscript.Echo "Status: " & objItem.Status
Wscript.Echo
Next
List Cluster Resource Type Information
On Error Resume Next
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\mscluster")
Set colItems = objWMIService.ExecQuery("Select * from MSCluster_ResourceType")
For Each objItem in colItems
Wscript.Echo "Administrator extensions: " & objItem.AdminExtensions
Wscript.Echo "Caption: " & objItem.Caption
Wscript.Echo "Characteristics: " & objItem.Characteristics
Wscript.Echo "Delete requires all nodes: " & objItem.DeleteRequiresAllNodes
Wscript.Echo "Description: " & objItem.Description
Wscript.Echo "Display name: " & objItem.DisplayName
Wscript.Echo "DLL name: " & objItem.DllName
Wscript.Echo "Flags: " & objItem.Flags
Wscript.Echo "Installation date: " & objItem.InstallDate
Wscript.Echo "Is alive poll interval: " & objItem.IsAlivePollInterval
Wscript.Echo "Local quorum capable: " & objItem.LocalQuorumCapable
Wscript.Echo "Looks alive poll interval: " & objItem.LooksAlivePollInterval
Wscript.Echo "Name: " & objItem.Name
Wscript.Echo "Quorum capable: " & objItem.QuorumCapable
Wscript.Echo "Status: " & objItem.Status
Wscript.Echo
Next
List Cluster Service Information
On Error Resume Next
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\mscluster")
Set colItems = objWMIService.ExecQuery("Select * from MSCluster_Service")
For Each objItem in colItems
Wscript.Echo "Caption: " & objItem.Caption
Wscript.Echo "Description: " & objItem.Description
Wscript.Echo "Enable event log replication: " & _
objItem.EnableEventLogReplication
Wscript.Echo "Installation date: " & objItem.InstallDate
Wscript.Echo "Name: " & objItem.Name
Wscript.Echo "Node highest version: " & objItem.NodeHighestVersion
Wscript.Echo "Node lowest version: " & objItem.NodeLowestVersion
Wscript.Echo "Started: " & objItem.Started
Wscript.Echo "Start mode: " & objItem.StartMode
Wscript.Echo "State: " & objItem.State
Wscript.Echo "Status: " & objItem.Status
Wscript.Echo "System name: " & objItem.SystemName
Wscript.Echo
Next
List Network Information
On Error Resume Next
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\mscluster")
Set colItems = objWMIService.ExecQuery("Select * from MSCluster_Network")
For Each objItem in colItems
Wscript.Echo "Address: " & objItem.Address
Wscript.Echo "Address mask: " & objItem.AddressMask
Wscript.Echo "Caption: " & objItem.Caption
Wscript.Echo "Characteristics: " & objItem.Characteristics
Wscript.Echo "Description: " & objItem.Description
Wscript.Echo "Flags: " & objItem.Flags
Wscript.Echo "Installation date: " & objItem.InstallDate
Wscript.Echo "Name: " & objItem.Name
Wscript.Echo "Role: " & objItem.Role
Wscript.Echo "State: " & objItem.State
Wscript.Echo "Status: " & objItem.Status
Wscript.Echo
Next
List Network Interface Information
On Error Resume Next
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\mscluster")
Set colItems = objWMIService.ExecQuery _
("Select * from MSCluster_NetworkInterface")
For Each objItem in colItems
Wscript.Echo "Adapter: " & objItem.Adapter
Wscript.Echo "Address: " & objItem.Address
Wscript.Echo "Availability: " & objItem.Availability
Wscript.Echo "Caption: " & objItem.Caption
Wscript.Echo "Characteristics: " & objItem.Characteristics
Wscript.Echo "Description: " & objItem.Description
Wscript.Echo "Device ID: " & objItem.DeviceID
Wscript.Echo "Flags: " & objItem.Flags
Wscript.Echo "Identifying descriptions: " & objItem.IdentifyingDescriptions
Wscript.Echo "Installation date: " & objItem.InstallDate
Wscript.Echo "Name: " & objItem.Name
Wscript.Echo "Network: " & objItem.Network
Wscript.Echo "Other identifying info: " & objItem.OtherIdentifyingInfo
Wscript.Echo "Power-on hours: " & objItem.PowerOnHours
Wscript.Echo "State: " & objItem.State
Wscript.Echo "Status: " & objItem.Status
Wscript.Echo "Status info: " & objItem.StatusInfo
Wscript.Echo "System name: " & objItem.SystemName
Wscript.Echo "Total power-on hours: " & objItem.TotalPowerOnHours
Wscript.Echo
Next
Listing Cluster Resource Information
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\mscluster")
Set colItems = objWMIService.ExecQuery("Select * from MSCluster_Resource")
For Each objItem in colItems
Wscript.Echo "Caption: " & objItem.Caption
Wscript.Echo "Characteristics: " & objItem.Characteristics
Wscript.Echo "Core resource: " & objItem.CoreResource
Wscript.Echo "Cryptographic checkpoints: " & objItem.CryptoCheckpoints
Wscript.Echo "Debug prefix: " & objItem.DebugPrefix
Wscript.Echo "Delete requires all nodes: " & _
objItem.DeleteRequiresAllNodes
Wscript.Echo "Description: " & objItem.Description
Wscript.Echo "Flags: " & objItem.Flags
Wscript.Echo "Installation date: " & objItem.InstallDate
Wscript.Echo "Is alive poll interval: " & objItem.IsAlivePollInterval
Wscript.Echo "Load balance analysis interval: " & _
objItem.LoadBalAnalysisInterval
Wscript.Echo "Load balance minimum memory units: " & _
objItem.LoadBalMinMemoryUnits
Wscript.Echo "Load balance minimum processor units: " & _
objItem.LoadBalMinProcessorUnits
Wscript.Echo "Load balance sample interval: " & _
objItem.LoadBalSampleInterval
Wscript.Echo "Load balance startup interval: " & _
objItem.LoadBalStartupInterval
Wscript.Echo "Local quorum capable: " & objItem.LocalQuorumCapable
Wscript.Echo "Looks alive poll interval: " & _
objItem.LooksAlivePollInterval
Wscript.Echo "Name: " & objItem.Name
Wscript.Echo "Pending timeout: " & objItem.PendingTimeout
Wscript.Echo "Persistent state: " & objItem.PersistentState
Wscript.Echo "Private properties: " & objItem.PrivateProperties
Wscript.Echo "Quorum capable: " & objItem.QuorumCapable
Wscript.Echo "Registry checkpoints: " & objItem.RegistryCheckpoints
Wscript.Echo "Resource class: " & objItem.ResourceClass
Wscript.Echo "Restart action: " & objItem.RestartAction
Wscript.Echo "Restart period: " & objItem.RestartPeriod
Wscript.Echo "Restart threshold: " & objItem.RestartThreshold
Wscript.Echo "Retry period on failure: " & _
objItem.RetryPeriodOnFailure
Wscript.Echo "Separate monitor: " & objItem.SeparateMonitor
Wscript.Echo "State: " & objItem.State
Wscript.Echo "Status: " & objItem.Status
Wscript.Echo "Subclass: " & objItem.Subclass
Wscript.Echo "Type: " & objItem.Type
Wscript.Echo
Next
Retrieving Clustering Information
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\mscluster")
Set colItems = objWMIService.ExecQuery("Select * from MSCluster_Cluster")
For Each objItem in colItems
Wscript.Echo "Administrator extensions: " & objItem.AdminExtensions
Wscript.Echo "Caption: " & objItem.Caption
Wscript.Echo "Dedicated: " & objItem.Dedicated
Wscript.Echo "Default network role: " & objItem.DefaultNetworkRole
Wscript.Echo "Description: " & objItem.Description
Wscript.Echo "Enable event log replication: " & _
objItem.EnableEventLogReplication
Wscript.Echo "Group administrator extensions: " & _
objItem.GroupAdminExtensions
Wscript.Echo "Identifying descriptions: " & objItem.IdentifyingDescriptions
Wscript.Echo "Installation date: " & objItem.InstallDate
Wscript.Echo "Maintenance file: " & objItem.MaintenanceFile
Wscript.Echo "Maximum number of nodes: " & objItem.MaxNumberOfNodes
Wscript.Echo "Name: " & objItem.Name
Wscript.Echo "Name format: " & objItem.NameFormat
Wscript.Echo "Network administrator extensions: " & _
objItem.NetworkAdminExtensions
Wscript.Echo "Network interface administrator extensions: " & _
objItem.NetworkInterfaceAdminExtensions
Wscript.Echo "Network priorities: " & objItem.NetworkPriorities
Wscript.Echo "Node administrator xtensions: " & objItem.NodeAdminExtensions
Wscript.Echo "Other identifying info: " & objItem.OtherIdentifyingInfo
Wscript.Echo "Primary owner contact: " & objItem.PrimaryOwnerContact
Wscript.Echo "Primary owner name: " & objItem.PrimaryOwnerName
Wscript.Echo "Quorum log file size: " & objItem.QuorumLogFileSize
Wscript.Echo "Resource administrator extensions: " & _
objItem.ResourceAdminExtensions
Wscript.Echo "Resource type administrator extensions: " & _
objItem.ResourceTypeAdminExtensions
Wscript.Echo "Roles: " & objItem.Roles
Wscript.Echo "Security: " & objItem.Security
Wscript.Echo "Security descriptor: " & objItem.Security_Descriptor
Wscript.Echo "Status: " & objItem.Status
Wscript.Echo
Next
Create a Mail Agent for Domain DNS Record
Create a Mail Exchanger DNS Record
Create a Mail Forwarding Agent DNS Record
Create a Mail Group DNS Record
Create a Mail Information DNS Record
Create a Mailbox DNS Record
Create a Mailbox Rename DNS Record
Create a Name Server DNS Record
Create a Responsible Person DNS Record
Create a Route Through DNS Record
Create a Text DNS Record
Create a Well-Known Services DNS Record
Create an Andrew File System Database Server DNS Record
Create an ATM Address to Name DNS Record
Create an IPv6 Address DNS Record
List Andrew File System Database Server DNS Records
List ATM Address to Name DNS Records
List Canonical Name DNS Records
List Host Address DNS Records
List Host Information DNS Records
List IPv6 Address DNS Records
List ISDN DNS Records
List KEY DNS Records
List Mail Agent DNS Records
List Mail Exchanger DNS Records
List Mail Forwarding Agent DNS Records
List Mail Group DNS Records
List Mail Information DNS Records
List Mailbox DNS Records
List Mailbox Rename DNS Records
List Name Server DNS Records
List Next DNS Records
List Pointer DNS Records
List Responsible PersonDNS Records
List Route Through DNS Records
List Service DNS Records
List Signature DNS Records
List Start of Authority DNS Records
List Text DNS Records
List Well-Known Services DNS Records
List WINS DNS Records
List WINS Reverse Lookup DNS Records
List X.25 DNS Records
Age All DNS Records
Clear the DNS Server Cache
Create a Primary DNS Zone
Force a Refresh of a DNS Zone
List DNS Domain Properties
List DNS Server Cache Properties
List DNS Server Properties
List DNS Server Root Hints Properties
List DNS Server Statistics
List DNS Zones
Modify the DNS Zone Type
Pause a DNS Zone
Reload a DNS Zone
Resume a Paused DNS Zone
Start DNS Server Scavenging
Start the DNS Server Service
Stop the DNS Server Service
Update a DNS Zone
Write-Back a DNS Zone
List Home Networking Connection Properties
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & _
"\root\microsoft\homenet")
Set colItems = objWMIService.ExecQuery _
("Select * from HNet_ConnectionProperties")
For Each objItem in colItems
Wscript.Echo "Connection: " & objItem.Connection
Wscript.Echo "Is Bridge: " & objItem.IsBridge
Wscript.Echo "Is Bridge Member: " & objItem.IsBridgeMember
Wscript.Echo "Is Firewalled: " & objItem.IsFirewalled
Wscript.Echo "Is ICS Private: " & objItem.IsICSPrivate
Wscript.Echo "Is ICS Public: " & objItem.IsICSPublic
Next
List Home Networking Connections
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & _
"\root\microsoft\homenet")
Set colItems = objWMIService.ExecQuery("Select * from HNet_Connection")
For Each objItem in colItems
Wscript.Echo "GUID: " & objItem.GUID
Wscript.Echo "Is LAN Connection: " & objItem.IsLANConnection
Wscript.Echo "Name: " & objItem.Name
Wscript.Echo "Phone Book Path: " & objItem.PhoneBookPath
Next
List Home Networking Firewall Logging Settings
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & _
"\root\microsoft\homenet")
Set colItems = objWMIService.ExecQuery _
("Select * from HNet_FirewallLoggingSettings")
For Each objItem in colItems
Wscript.Echo "ID: " & objItem.ID
Wscript.Echo "Log Connections: " & objItem.LogConnections
Wscript.Echo "Log Dropped Packets: " & objItem.LogDroppedPackets
Wscript.Echo "Max File Size: " & objItem.MaxFileSize
Wscript.Echo "Path: " & objItem.Path
Next
List Home Networking Firewall Settings
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & _
"\root\microsoft\homenet")
Set colItems = objWMIService.ExecQuery("Select * from HNet_FwIcmpSettings")
For Each objItem in colItems
Wscript.Echo "Name: " & objItem.Name
Wscript.Echo "Allow Inbound Echo request: " & _
objItem.AllowInboundEchoRequest
Wscript.Echo "Allow Inbound Mask Requestt: " & _
objItem.AllowInboundMaskRequest
Wscript.Echo "Allow Inbound Router Request: " & _
objItem.AllowInboundRouterRequest
Wscript.Echo "Allow Inbound Timestamp Request: " & _
objItem.AllowInboundTimestampRequest
Wscript.Echo "Allow Outbound Destination Unreachable: " & _
objItem.AllowOutboundDestinationUnreachable
Wscript.Echo "Allow Outbound Parameter Problem: " & _
objItem.AllowOutboundParameterProblem
Wscript.Echo "Allow Outbound Source Quench: " & _
objItem.AllowOutboundSourceQuench
Wscript.Echo "Allow Outbound Time Exceeded: " & _
objItem.AllowOutboundTimeExceeded
Wscript.Echo "Allow redirect: " & objItem.AllowRedirect
Next
List Home Networking ICMP Settings
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & _
"\root\microsoft\homenet")
Set colItems = objWMIService.ExecQuery _
("Select * from HNet_ConnectionICMPSetting")
For Each objItem in colItems
Wscript.Echo "Connection: " & objItem.Connection
Wscript.Echo "ICMP Settings: " & objItem.ICMPSettings
Next
List Home Networking ICS Settings
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & _
"\root\microsoft\homenet")
Set colItems = objWMIService.ExecQuery("Select * from HNet_ICSSettings")
For Each objItem in colItems
Wscript.Echo "DHCP Enabled: " & objItem.DHCPEnabled
Wscript.Echo "DNS Enabled: " & objItem.DNSEnabled
Wscript.Echo "ID: " & objItem.ID
Next
List Home Networking Port Mapping Protocols
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & _
"\root\microsoft\homenet")
Set colItems = objWMIService.ExecQuery _
("Select * from HNet_PortMappingProtocol")
For Each objItem in colItems
Wscript.Echo "Built In: " & objItem.BuiltIn
Wscript.Echo "ID: " & objItem.ID
Wscript.Echo "IP Protocol: " & objItem.IPProtocol
Wscript.Echo "Name: " & objItem.Name
Wscript.Echo "Port: " & objItem.Port
Next
List Home Networking Port Mappings
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & _
"\root\microsoft\homenet")
Set colItems = objWMIService.ExecQuery _
("Select * from HNet_ConnectionPortMapping2")
For Each objItem in colItems
Wscript.Echo "Connection: " & objItem.Connection
Wscript.Echo "Enabled: " & objItem.Enabled
Wscript.Echo "Name Active: " & objItem.NameActive
Wscript.Echo "Protocol: " & objItem.Protocol
Wscript.Echo "Target IP Address: " & objItem.TargetIPAddress
Wscript.Echo "Target Name: " & objItem.TargetName
Wscript.Echo "Target Port: " & objItem.TargetPort
Next
Modify Home Networking Firewall Logging Settings
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & _
"\root\microsoft\homenet")
Set colItems = objWMIService.ExecQuery _
("Select * from HNet_FirewallLoggingSettings")
For Each objItem in colItems
objItem.LogDroppedPackets = False
objItem.Put_
Next
Modify Home Networking Firewall Settings
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & _
"\root\microsoft\homenet")
Set colItems = objWMIService.ExecQuery("Select * from HNet_FwIcmpSettings")
For Each objItem in colItems
objItem.AllowInboundEchoRequest = False
objItem.Put_
Next
Monitor HTTP Indexing Service Performance
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
set objRefresher = CreateObject("WbemScripting.SWbemRefresher")
Set colItems = objRefresher.AddEnum(objWMIService," & _
"Win32_PerfFormattedData_ISAPISearch_HTTPIndexingService").objectSet
objRefresher.Refresh
For i = 1 to 5
For Each objItem in colItems
Wscript.Echo "Active Queries: " & objItem.Activequeries
Wscript.Echo "Cache Items: " & objItem.Cacheitems
Wscript.Echo "Caption: " & objItem.Caption
Wscript.Echo "Current Requests Queued: " & _
objItem.Currentrequestsqueued
Wscript.Echo "Description: " & objItem.Description
Wscript.Echo "Name: " & objItem.Name
Wscript.Echo "Percent Cache Hits: " & objItem.PercentCachehits
Wscript.Echo "Percent Cache Misses: " & objItem.PercentCachemisses
Wscript.Echo "Queries Per Minute: " & objItem.Queriesperminute
Wscript.Echo "Total Queries: " & objItem.Totalqueries
Wscript.Echo "Total Requests Rejected: " & _
objItem.Totalrequestsrejected
Wscript.Sleep 2000
objRefresher.Refresh
Next
Next
Monitor IPSec 4 Driver Performance
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set objRefresher = CreateObject("WbemScripting.SWbemRefresher")
Set colItems = objRefresher.AddEnum _
(objWMIService, "Win32_PerfFormattedData_IPSec4Driver").objectSet
objRefresher.Refresh
For i = 1 to 5
For Each objItem in colItems
Wscript.Echo "Pending key exchange operations: " & _
objItem.PendingKeyExchangeOperations
Wscript.Sleep 2000
objRefresher.Refresh
Next
Next
Monitor IPSec 4 IKE Performance
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set objRefresher = CreateObject("WbemScripting.SWbemRefresher")
Set colItems = objRefresher.AddEnum _
(objWMIService, "Win32_PerfFormattedData_IPSec4Driver").objectSet
objRefresher.Refresh
For i = 1 to 5
For Each objItem in colItems
Wscript.Echo "Acquire heap size: " & _
objItem.AcquireHeapSize
Wscript.Echo "Main mode SA list entries: " & _
objItem.MainModeSAListEntries
Wscript.Echo "Quick mode SA list entries: " & _
objItem.QuickModeSAListEntries
Wscript.Echo "Receive heap size: " & _
objItem.ReceiveHeapSize
Wscript.Echo "Total authentication failures: " & _
objItem.TotalAuthenticationFailures
Wscript.Echo "Total main mode SAs: " & _
objItem.TotalMainModeSAs
Wscript.Echo "Total negotiation failures: " & _
objItem.TotalNegotiationFailures
Wscript.Echo "Total quick mode SAs: " & _
objItem.TotalQuickModeSAs
Wscript.Echo "Total soft associations: " & _
objItem.TotalSoftAssociations
Wscript.Sleep 2000
objRefresher.Refresh
Next
Next
Monitor MSDTC Distributed Transaction Coordinator Performance
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
set objRefresher = CreateObject("WbemScripting.SWbemRefresher")
Set colItems = objRefresher.AddEnum(objWMIService," & _
"Win32_PerfFormattedData_MSDTC_DistributedTransactionCoordinator"). _
objectSet
objRefresher.Refresh
For i = 1 to 5
For Each objItem in colItems
Wscript.Echo "Aborted Transactions: " & objItem.AbortedTransactions
Wscript.Echo "Aborted Transactions Per Second: " & _
objItem.AbortedTransactionsPersec
Wscript.Echo "Active Transactions: " & objItem.ActiveTransactions
Wscript.Echo "Active Transactions Maximum: " & _
objItem.ActiveTransactionsMaximum
Wscript.Echo "Caption: " & objItem.Caption
Wscript.Echo "Committed Transactions: " & objItem.CommittedTransactions
Wscript.Echo "Committed Transactions Per Second: " & _
objItem.CommittedTransactionsPersec
Wscript.Echo "Description: " & objItem.Description
Wscript.Echo "Force Aborted Transactions: " & _
objItem.ForceAbortedTransactions
Wscript.Echo "Force Committed Transactions: " & _
objItem.ForceCommittedTransactions
Wscript.Echo "In-Doubt Transactions: " & objItem.InDoubtTransactions
Wscript.Echo "Name: " & objItem.Name
Wscript.Echo "Response Time Average: " & objItem.ResponseTimeAverage
Wscript.Echo "Response Time Maximum: " & objItem.ResponseTimeMaximum
Wscript.Echo "Response Time Minimum: " & objItem.ResponseTimeMinimum
Wscript.Echo "Transactions Per Second: " & objItem.TransactionsPersec
Wscript.Sleep 2000
objRefresher.Refresh
Next
Next
Monitor PSched Flow Performance
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
set objRefresher = CreateObject("WbemScripting.SWbemRefresher")
Set colItems = objRefresher.AddEnum _
(objWMIService, "Win32_PerfFormattedData_PSched_PSchedFlow").objectSet
objRefresher.Refresh
For i = 1 to 5
For Each objItem in colItems
Wscript.Echo "Average Packets in Netcard: " & _
objItem.AveragePacketsinnetcard
Wscript.Echo "Average Packets in Sequencer: " & _
objItem.Averagepacketsinsequencer
Wscript.Echo "Average Packets in Shaper: " & _
objItem.Averagepacketsinshaper
Wscript.Echo "Bytes Scheduled: " & objItem.Bytesscheduled
Wscript.Echo "Bytes Scheduled Per Second: " & _
objItem.BytesscheduledPersec
Wscript.Echo "Bytes Transmitted: " & objItem.Bytestransmitted
Wscript.Echo "Bytes Transmitted Per Second: " & _
objItem.BytestransmittedPersec
Wscript.Echo "Caption: " & objItem.Caption
Wscript.Echo "Description: " & objItem.Description
Wscript.Echo "Maximum Packets in Netcard: " & _
objItem.MaximumPacketsinnetcard
Wscript.Echo "Maximum Packets in Sequencer: " & _
objItem.Maxpacketsinsequencer
Wscript.Echo "Maximum Packets in Shaper: " & _
objItem.Maxpacketsinshaper
Wscript.Echo "Name: " & objItem.Name
Wscript.Echo "Non-conforming Packets Scheduled: " & _
objItem.Nonconformingpacketsscheduled
Wscript.Echo "Non-conforming Packets ScheduledPersec: " & _
objItem.NonconformingpacketsscheduledPersec
Wscript.Echo "Non-conforming Packets Transmitted: " & _
objItem.Nonconformingpacketstransmitted
Wscript.Echo "Non-conforming Packets TransmittedPersec: " & _
objItem.NonconformingpacketstransmittedPersec
Wscript.Echo "Packets Dropped: " & objItem.Packetsdropped
Wscript.Echo "Packets Dropped Per Second: " & _
objItem.PacketsdroppedPersec
Wscript.Echo "Packets Scheduled: " & objItem.Packetsscheduled
Wscript.Echo "Packets Scheduled Per Second: " & _
objItem.PacketsscheduledPersec
Wscript.Echo "Packets Transmitted: " & objItem.Packetstransmitted
Wscript.Echo "Packets Transmitted Per Second: " & _
objItem.PacketstransmittedPersec
Wscript.Sleep 2000
objRefresher.Refresh
Next
Next
Monitor PSched Pipe Performance
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
set objRefresher = CreateObject("WbemScripting.SWbemRefresher")
Set colItems = objRefresher.AddEnum _
(objWMIService, "Win32_PerfFormattedData_PSched_PSchedPipe").objectSet
objRefresher.Refresh
For i = 1 to 5
For Each objItem in colItems
Wscript.Echo "Average Packets in Netcard: " & _
objItem.Averagepacketsinnetcard
Wscript.Echo "Average Packets in Sequencer: " & _
objItem.Averagepacketsinsequencer
Wscript.Echo "Average Packets in Shaper: " & _
objItem.Averagepacketsinshaper
Wscript.Echo "Caption: " & objItem.Caption
Wscript.Echo "Description: " & objItem.Description
Wscript.Echo "Flow Mods Rejected: " & objItem.Flowmodsrejected
Wscript.Echo "Flows Closed: " & objItem.Flowsclosed
Wscript.Echo "Flows Modified: " & objItem.Flowsmodified
Wscript.Echo "Flows Opened: " & objItem.Flowsopened
Wscript.Echo "Flows Rejected: " & objItem.Flowsrejected
Wscript.Echo "Maximum Packets in Netcard: " & _
objItem.Maxpacketsinnetcard
Wscript.Echo "Maximum Packets in Sequencer: " & _
objItem.Maxpacketsinsequencer
Wscript.Echo "Maximum Packets in Shaper: " & _
objItem.Maxpacketsinshaper
Wscript.Echo "Maximum Simultaneous Flows: " & _
objItem.Maxsimultaneousflows
Wscript.Echo "Name: " & objItem.Name
Wscript.Echo "Non-conforming Packets Scheduled: " & _
objItem.Nonconformingpacketsscheduled
Wscript.Echo "Non-conforming Packets ScheduledPersec: " & _
objItem.NonconformingpacketsscheduledPersec
Wscript.Echo "Non-conforming Packets Transmitted: " & _
objItem.Nonconformingpacketstransmitted
Wscript.Echo "Non-conforming Packets TransmittedPersec: " & _
objItem.NonconformingpacketstransmittedPersec
Wscript.Echo "Out-of-packets: " & objItem.Outofpackets
Wscript.Sleep 2000
objRefresher.Refresh
Next
Next
Monitor Redirector Service Performance
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
set objRefresher = CreateObject("WbemScripting.SWbemRefresher")
Set colItems = objRefresher.AddEnum _
(objWMIService, "Win32_PerfFormattedData_PerfNet_Redirector").objectSet
objRefresher.Refresh
For i = 1 to 5
For Each objItem in colItems
Wscript.Echo "Bytes Received Per Second: " & _
objItem.BytesReceivedPersec
Wscript.Echo "Bytes Total Per Second: " & objItem.BytesTotalPersec
Wscript.Echo "Bytes Transmitted Per Second: " & _
objItem.BytesTransmittedPersec
Wscript.Echo "Caption: " & objItem.Caption
Wscript.Echo "Connects Core: " & objItem.ConnectsCore
Wscript.Echo "Connects Lan Manager 2.0: " & _
objItem.ConnectsLanManager20
Wscript.Echo "Connects Lan Manager 2.1: " & _
objItem.ConnectsLanManager21
Wscript.Echo "Connects Windows NT: " & objItem.ConnectsWindowsNT
Wscript.Echo "Current Commands: " & objItem.CurrentCommands
Wscript.Echo "Description: " & objItem.Description
Wscript.Echo "File Data Operations Per Second: " & _
objItem.FileDataOperationsPersec
Wscript.Echo "File Read Operations Per Second: " & _
objItem.FileReadOperationsPersec
Wscript.Echo "File Write Operations Per Second: " & _
objItem.FileWriteOperationsPersec
Wscript.Echo "Name: " & objItem.Name
Wscript.Echo "Network Errors Per Second: " & _
objItem.NetworkErrorsPersec
Wscript.Echo "Packets Per Second: " & objItem.PacketsPersec
Wscript.Echo "Packets Received Per Second: " & _
objItem.PacketsReceivedPersec
Wscript.Echo "Packets Transmitted Per Second: " & _
objItem.PacketsTransmittedPersec
Wscript.Echo "Read Bytes Cache Per Second: " & _
objItem.ReadBytesCachePersec
Wscript.Echo "Read Bytes Network Per Second: " & _
objItem.ReadBytesNetworkPersec
Wscript.Echo "Read Bytes NonPaging Per Second: " & _
objItem.ReadBytesNonPagingPersec
Wscript.Echo "Read Bytes Paging Per Second: " & _
objItem.ReadBytesPagingPersec
Wscript.Echo "Read Operations Random Per Second: " & _
objItem.ReadOperationsRandomPersec
Wscript.Echo "Read Packets Per Second: " & objItem.ReadPacketsPersec
Wscript.Echo "Read Packets Small Per Second: " & _
objItem.ReadPacketsSmallPersec
Wscript.Echo "Reads Denied Per Second: " & objItem.ReadsDeniedPersec
Wscript.Echo "Reads Large Per Second: " & objItem.ReadsLargePersec
Wscript.Echo "Server Disconnects: " & objItem.ServerDisconnects
Wscript.Echo "Server Reconnects: " & objItem.ServerReconnects
Wscript.Echo "Server Sessions: " & objItem.ServerSessions
Wscript.Echo "Server Sessions Hung: " & objItem.ServerSessionsHung
Wscript.Echo "Write Bytes Cache Per Second: " & _
objItem.WriteBytesCachePersec
Wscript.Echo "Write Bytes Network Per Second: " & _
objItem.WriteBytesNetworkPersec
Wscript.Echo "Write Bytes NonPaging Per Second: " & _
objItem.WriteBytesNonPagingPersec
Wscript.Echo "Write Bytes Paging Per Second: " & _
objItem.WriteBytesPagingPersec
Wscript.Echo "Write Operations Random Per Second: " & _
objItem.WriteOperationsRandomPersec
Wscript.Echo "Write Packets Per Second: " & _
objItem.WritePacketsPersec
Wscript.Echo "Write PacketsSmall Per Second: " & _
objItem.WritePacketsSmallPersec
Wscript.Echo "Writes Denied Per Second: " & objItem.WritesDeniedPersec
Wscript.Echo "Writes Large Per Second: " & objItem.WritesLargePersec
Wscript.Sleep 2000
objRefresher.Refresh
Next
Next
Monitor Remote Access Performance
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
set objRefresher = CreateObject("WbemScripting.SWbemRefresher")
Set colItems = objRefresher.AddEnum(objWMIService," & _
"Win32_PerfFormattedData_PerfProc_RemoteAccess_RASTotal").objectSet
objRefresher.Refresh
For i = 1 to 5
For Each objItem in colItems
Wscript.Echo "Alignment Errors: " & objItem.AlignmentErrors
Wscript.Echo "Buffer Overrun Errors: " & objItem.BufferOverrunErrors
Wscript.Echo "Bytes Received: " & objItem.BytesReceived
Wscript.Echo "Bytes Received Per Second: " & _
objItem.BytesReceivedPerSec
Wscript.Echo "Bytes Transmitted: " & objItem.BytesTransmitted
Wscript.Echo "Bytes Transmitted Per Second: " & _
objItem.BytesTransmittedPerSec
Wscript.Echo "Caption: " & objItem.Caption
Wscript.Echo "CRC Errors: " & objItem.CRCErrors
Wscript.Echo "Description: " & objItem.Description
Wscript.Echo "Frames Received: " & objItem.FramesReceived
Wscript.Echo "Frames Received Per Second: " & _
objItem.FramesReceivedPerSec
Wscript.Echo "Frames Transmitted: " & objItem.FramesTransmitted
Wscript.Echo "Frames Transmitted Per Second: " & _
objItem.FramesTransmittedPerSec
Wscript.Echo "Name: " & objItem.Name
Wscript.Echo "Percent Compression In: " & objItem.PercentCompressionIn
Wscript.Echo "Percent Compression Out: " & _
objItem.PercentCompressionOut
Wscript.Echo "Serial Overrun Errors: " & objItem.SerialOverrunErrors
Wscript.Echo "Timeout Errors: " & objItem.TimeoutErrors
Wscript.Echo "Total Connections: " & objItem.TotalConnections
Wscript.Echo "Total Errors: " & objItem.TotalErrors
Wscript.Echo "Total Errors Per Second: " & objItem.TotalErrorsPerSec
Wscript.Sleep 2000
objRefresher.Refresh
Next
Next
Monitor Remote Access RAS Port Performance
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
set objRefresher = CreateObject("WbemScripting.SWbemRefresher")
Set colItems = objRefresher.AddEnum(objWMIService," & _
"Win32_PerfFormattedData_PerfProc_RemoteAccess_RASPort").objectSet
objRefresher.Refresh
For i = 1 to 5
For Each objItem in colItems
Wscript.Echo "Alignment Errors: " & objItem.AlignmentErrors
Wscript.Echo "Buffer Overrun Errors: " & objItem.BufferOverrunErrors
Wscript.Echo "Bytes Received: " & objItem.BytesReceived
Wscript.Echo "Bytes Received Per Second: " & _
objItem.BytesReceivedPerSec
Wscript.Echo "Bytes Transmitted: " & objItem.BytesTransmitted
Wscript.Echo "Bytes Transmitted Per Second: " & _
objItem.BytesTransmittedPerSec
Wscript.Echo "Caption: " & objItem.Caption
Wscript.Echo "CRC Errors: " & objItem.CRCErrors
Wscript.Echo "Description: " & objItem.Description
Wscript.Echo "Frames Received: " & objItem.FramesReceived
Wscript.Echo "Frames Received Per Second: " & _
objItem.FramesReceivedPerSec
Wscript.Echo "Frames Transmitted: " & objItem.FramesTransmitted
Wscript.Echo "Frames Transmitted Per Second: " & _
objItem.FramesTransmittedPerSec
Wscript.Echo "Name: " & objItem.Name
Wscript.Echo "Percent Compression In: " & objItem.PercentCompressionIn
Wscript.Echo "Percent Compression Out: " & _
objItem.PercentCompressionOut
Wscript.Echo "Serial Overrun Errors: " & objItem.SerialOverrunErrors
Wscript.Echo "Timeout Errors: " & objItem.TimeoutErrors
Wscript.Echo "Total Errors: " & objItem.TotalErrors
Wscript.Echo "Total Errors Per Second: " & objItem.TotalErrorsPerSec
Wscript.Sleep 2000
objRefresher.Refresh
Next
Next
Monitor RSVP ACSRVP Interfaces Performance
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
set objRefresher = CreateObject("WbemScripting.SWbemRefresher")
Set colItems = objRefresher.AddEnum _
(objWMIService, "Win32_PerfFormattedData_RSVP_RSVPService").objectSet
objRefresher.Refresh
For i = 1 to 5
For Each objItem in colItems
Wscript.Echo "Bytes in QoS Notifications: " & _
objItem.BytesinQoSnotifications
Wscript.Echo "Caption: " & objItem.Caption
Wscript.Echo "Description: " & objItem.Description
Wscript.Echo "Failed QoS Requests: " & objItem.FailedQoSrequests
Wscript.Echo "Failed QoS Sends: " & objItem.FailedQoSsends
Wscript.Echo "Name: " & objItem.Name
Wscript.Echo "Network Interfaces: " & objItem.NetworkInterfaces
Wscript.Echo "Network Sockets: " & objItem.Networksockets
Wscript.Echo "QoS Clients: " & objItem.QoSclients
Wscript.Echo "QoS-Enabled Receivers: " & objItem.QoSenabledreceivers
Wscript.Echo "QoS-Enabled Senders: " & objItem.QoSenabledsenders
Wscript.Echo "QoS Notifications: " & objItem.QoSnotifications
Wscript.Echo "RSVP Sessions: " & objItem.RSVPsessions
Wscript.Echo "Timers: " & objItem.Timers
Wscript.Sleep 2000
objRefresher.Refresh
Next
Next
Monitor RSVP ACSRVPS Service Performance
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
set objRefresher = CreateObject("WbemScripting.SWbemRefresher")
Set colItems = objRefresher.AddEnum _
(objWMIService, "Win32_PerfFormattedData_RSVP_RVPInterfaces").objectSet
objRefresher.Refresh
For i = 1 to 5
For Each objItem in colItems
Wscript.Echo "Blocked RESVs: " & objItem.BlockedRESVs
Wscript.Echo "Caption: " & objItem.Caption
Wscript.Echo "Description: " & objItem.Description
Wscript.Echo "General Failures: " & objItem.Generalfailures
Wscript.Echo "Maximum Admitted Bandwidth: " & _
objItem.Maximumadmittedbandwidth
Wscript.Echo "Name: " & objItem.Name
Wscript.Echo "Number of Active Flows: " & objItem.Numberofactiveflows
Wscript.Echo "Number of Incoming Messages Dropped: " & _
objItem.Numberofincomingmessagesdropped
Wscript.Echo "Number of Outgoing Messages Dropped: " & _
objItem.Numberofoutgoingmessagesdropped
Wscript.Echo "PATH Error Messages Received: " & _
objItem.PATHERRmessagesreceived
Wscript.Echo "PATH Error Messages Sent: " & _
objItem.PATHERRmessagessent
Wscript.Echo "PATH Messages Received: " & objItem.PATHmessagesreceived
Wscript.Echo "PATH Messages Sent: " & objItem.PATHmessagessent
Wscript.Echo "PATH State Block Timeouts: " & _
objItem.PATHstateblocktimeouts
Wscript.Echo "PATH TEAR Messages Received: " & _
objItem.PATHTEARmessagesreceived
Wscript.Echo "PATH TEAR Messages Sent: " & _
objItem.PATHTEARmessagessent
Wscript.Echo "Policy Control Failures: " & _
objItem.Policycontrolfailures
Wscript.Echo "Receive Messages Errors Big Messages: " & _
objItem.ReceivemessageserrorsBigmessages
Wscript.Echo "Receive Messages Errors No Memory: " & _
objItem.ReceivemessageserrorsNomemory
Wscript.Echo "Reserved Bandwidth: " & objItem.Reservedbandwidth
Wscript.Echo "Resource Control Failures: " & _
objItem.Resourcecontrolfailures
Wscript.Echo "RESV CONFIRM Messages Received: " & _
objItem.RESVCONFIRMmessagesreceived
Wscript.Echo "RESV CONFIRM Messages Sent: " & _
objItem.RESVCONFIRMmessagessent
Wscript.Echo "RESV Error Messages Received: " & _
objItem.RESVERRmessagesreceived
Wscript.Echo "RESV Error Messages Sent: " & _
objItem.RESVERRmessagessent
Wscript.Echo "RESV Messages Received: " & objItem.RESVmessagesreceived
Wscript.Echo "RESV Messages Sent: " & objItem.RESVmessagessent
Wscript.Echo "RESV State Block Timeouts: " & _
objItem.RESVstateblocktimeouts
Wscript.Echo "RESV TEAR Messages Received: " & _
objItem.RESVTEARmessagesreceived
Wscript.Echo "RESV TEAR Messages Sent: " & _
objItem.RESVTEARmessagessent
Wscript.Echo "Send Messages Errors Big Messages: " & _
objItem.SendmessageserrorsBigmessages
Wscript.Echo "Send Messages Errors No Memory: " & _
objItem.SendmessageserrorsNomemory
Wscript.Echo "Signaling Bytes Received: " & _
objItem.Signalingbytesreceived
Wscript.Echo "Signaling Bytes Sent: " & objItem.Signalingbytessent
Wscript.Sleep 2000
objRefresher.Refresh
Next
Next
Monitor TAPI Server Telephony Performance
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
set objRefresher = CreateObject("WbemScripting.SWbemRefresher")
Set colItems = objRefresher.AddEnum _
(objWMIService, "Win32_PerfFormattedData_TAPISrv_Telephony").objectSet
objRefresher.Refresh
For i = 1 to 5
For Each objItem in colItems
Wscript.Echo "Active Lines: " & objItem.ActiveLines
Wscript.Echo "Active Telephones: " & objItem.ActiveTelephones
Wscript.Echo "Caption: " & objItem.Caption
Wscript.Echo "Client Applications: " & objItem.ClientApps
Wscript.Echo "Current Incoming Calls: " & objItem.CurrentIncomingCalls
Wscript.Echo "Current Outgoing Calls: " & objItem.CurrentOutgoingCalls
Wscript.Echo "Description: " & objItem.Description
Wscript.Echo "Incoming Calls Per Second: " & _
objItem.IncomingCallsPersec
Wscript.Echo "Lines: " & objItem.Lines
Wscript.Echo "Name: " & objItem.Name
Wscript.Echo "Outgoing Calls Per Second: " & _
objItem.OutgoingCallsPersec
Wscript.Echo "Telephone Devices: " & objItem.TelephoneDevices
Wscript.Sleep 2000
objRefresher.Refresh
Next
Next
Monitor TCP NBT Connection Performance
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
set objRefresher = CreateObject("WbemScripting.SWbemRefresher")
Set colItems = objRefresher.AddEnum _
(objWMIService, "Win32_PerfFormattedData_TCP_NBTConnection").objectSet
objRefresher.Refresh
For i = 1 to 5
For Each objItem in colItems
Wscript.Echo "Bytes Received Per Second: " & _
objItem.BytesReceivedPersec
Wscript.Echo "Bytes Sent Per Second: " & objItem.BytesSentPersec
Wscript.Echo "Bytes Total Per Second: " & objItem.BytesTotalPersec
Wscript.Echo "Caption: " & objItem.Caption
Wscript.Echo "Description: " & objItem.Description
Wscript.Echo "Name: " & objItem.Name
objRefresher.Refresh
Next
Next
Monitor TCP-IP ICMP Performance
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
set objRefresher = CreateObject("WbemScripting.SWbemRefresher")
Set colItems = objRefresher.AddEnum _
(objWMIService, "Win32_PerfFormattedData_Tcpip_ICMP").objectSet
objRefresher.Refresh
For i = 1 to 5
For Each objItem in colItems
Wscript.Echo "Caption: " & objItem.Caption
Wscript.Echo "Description: " & objItem.Description
Wscript.Echo "Messages Outbound Errors: " & _
objItem.MessagesOutboundErrors
Wscript.Echo "Messages Per Second: " & objItem.MessagesPersec
Wscript.Echo "Messages Received Errors: " & _
objItem.MessagesReceivedErrors
Wscript.Echo "Messages Received Per Second: " & _
objItem.MessagesReceivedPersec
Wscript.Echo "Messages Sent Per Second: " & objItem.MessagesSentPersec
Wscript.Echo "Name: " & objItem.Name
Wscript.Echo "Received Address Mask: " & objItem.ReceivedAddressMask
Wscript.Echo "Received Address Mask Reply: " & _
objItem.ReceivedAddressMaskReply
Wscript.Echo "Received Destination Unreachable: " & _
objItem.ReceivedDestUnreachable
Wscript.Echo "Received Echo Per Second: " & objItem.ReceivedEchoPersec
Wscript.Echo "Received Echo Reply Per Second: " & _
objItem.ReceivedEchoReplyPersec
Wscript.Echo "Received Parameter Problem: " & _
objItem.ReceivedParameterProblem
Wscript.Echo "Received Redirect Per Second: " & _
objItem.ReceivedRedirectPersec
Wscript.Echo "Received Source Quench: " & _
objItem.ReceivedSourceQuench
Wscript.Echo "Received Time Exceeded: " & _
objItem.ReceivedTimeExceeded
Wscript.Echo "Received Timestamp Per Second: " & _
objItem.ReceivedTimestampPersec
Wscript.Echo "Received Timestamp Reply Per Second: " & _
objItem.ReceivedTimestampReplyPersec
Wscript.Echo "Sent Address Mask: " & objItem.SentAddressMask
Wscript.Echo "Sent Address Mask Reply: " & _
objItem.SentAddressMaskReply
Wscript.Echo "Sent Destination Unreachable: " & _
objItem.SentDestinationUnreachable
Wscript.Echo "Sent Echo Per Second: " & objItem.SentEchoPersec
Wscript.Echo "Sent Echo Reply Per Second: " & _
objItem.SentEchoReplyPersec
Wscript.Echo "Sent Parameter Problem: " & objItem.SentParameterProblem
Wscript.Echo "Sent Redirect Per Second: " & objItem.SentRedirectPersec
Wscript.Echo "Sent Source Quench: " & objItem.SentSourceQuench
Wscript.Echo "Sent Time Exceeded: " & objItem.SentTimeExceeded
Wscript.Echo "Sent Timestamp Per Second: " & _
objItem.SentTimestampPersec
Wscript.Echo "Sent Timestamp Reply Per Second: " & _
objItem.SentTimestampReplyPersec
Wscript.Sleep 2000
objRefresher.Refresh
Next
Next
Monitor TCP-IP ICMPv6 Performance
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
set objRefresher = CreateObject("WbemScripting.SWbemRefresher")
Set colItems = objRefresher.AddEnum _
(objWMIService, "Win32_PerfFormattedData_TCPIP_ICMPv6").objectSet
objRefresher.Refresh
For i = 1 to 5
For Each objItem in colItems
Wscript.Echo "Messages per second: " & objItem.MessagesPerSec
Wscript.Sleep 2000
objRefresher.Refresh
Next
Next
Monitor TCP-IP IP Performance
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
set objRefresher = CreateObject("WbemScripting.SWbemRefresher")
Set colItems = objRefresher.AddEnum _
(objWMIService, "Win32_PerfFormattedData_TCPIP_IP").objectSet
objRefresher.Refresh
For i = 1 to 5
For Each objItem in colItems
Wscript.Echo "Caption: " & objItem.Caption
Wscript.Echo "Datagrams Forwarded Per Second: " & _
objItem.DatagramsForwardedPersec
Wscript.Echo "Datagrams Outbound Discarded: " & _
objItem.DatagramsOutboundDiscarded
Wscript.Echo "Datagrams Outbound No Route: " & _
objItem.DatagramsOutboundNoRoute
Wscript.Echo "Datagrams Per Second: " & objItem.DatagramsPersec
Wscript.Echo "Datagrams Received Address Errors: " & _
objItem.DatagramsReceivedAddressErrors
Wscript.Echo "Datagrams Received Delivered Per Second: " & _
objItem.DatagramsReceivedDeliveredPersec
Wscript.Echo "Datagrams Received Discarded: " & _
objItem.DatagramsReceivedDiscarded
Wscript.Echo "Datagrams Received Header Errors: " & _
objItem.DatagramsReceivedHeaderErrors
Wscript.Echo "Datagrams Received Per Second: " & _
objItem.DatagramsReceivedPersec
Wscript.Echo "Datagrams Received Unknown Protocol: " & _
objItem.DatagramsReceivedUnknownProtocol
Wscript.Echo "Datagrams Sent Per Second: " & _
objItem.DatagramsSentPersec
Wscript.Echo "Description: " & objItem.Description
Wscript.Echo "Fragmentation Failures: " & _
objItem.FragmentationFailures
Wscript.Echo "Fragmented Datagrams Per Second: " & _
objItem.FragmentedDatagramsPersec
Wscript.Echo "Fragment Reassembly Failures: " & _
objItem.FragmentReassemblyFailures
Wscript.Echo "Fragments Created Per Second: " & _
objItem.FragmentsCreatedPersec
Wscript.Echo "Fragments Reassembled Per Second: " & _
objItem.FragmentsReassembledPersec
Wscript.Echo "Fragments Received Per Second: " & _
objItem.FragmentsReceivedPersec
Wscript.Echo "Name: " & objItem.Name
objRefresher.Refresh
Next
Next
Monitor TCP-IP IPv4 Performance
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
set objRefresher = CreateObject("WbemScripting.SWbemRefresher")
Set colItems = objRefresher.AddEnum _
(objWMIService, "Win32_PerfFormattedData_TCPIP_IPv4").objectSet
objRefresher.Refresh
For i = 1 to 5
For Each objItem in colItems
Wscript.Echo "Datagrams per second: " & objItem.DatagramsPerSec
Wscript.Sleep 2000
objRefresher.Refresh
Next
Next
Monitor TCP-IP IPv6 Performance
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
set objRefresher = CreateObject("WbemScripting.SWbemRefresher")
Set colItems = objRefresher.AddEnum _
(objWMIService, "Win32_PerfFormattedData_TCPIP_IPv6").objectSet
objRefresher.Refresh
For i = 1 to 5
For Each objItem in colItems
Wscript.Echo "Datagrams per second: " & objItem.DatagramsPerSec
Wscript.Sleep 2000
objRefresher.Refresh
Next
Next
Monitor TCP-IP Network Interface Performance
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
set objRefresher = CreateObject("WbemScripting.SWbemRefresher")
Set colItems = objRefresher.AddEnum _
(objWMIService, "Win32_PerfFormattedData_TCPIP_NetworkInterface").objectSet
objRefresher.Refresh
For i = 1 to 5
For Each objItem in colItems
Wscript.Echo "Bytes Received Per Second: " & _
objItem.BytesReceivedPersec
Wscript.Echo "Bytes Sent Per Second: " & objItem.BytesSentPersec
Wscript.Echo "Bytes Total Per Second: " & objItem.BytesTotalPersec
Wscript.Echo "Caption: " & objItem.Caption
Wscript.Echo "Current Bandwidth: " & objItem.CurrentBandwidth
Wscript.Echo "Description: " & objItem.Description
Wscript.Echo "Name: " & objItem.Name
Wscript.Echo "Output Queue Length: " & objItem.OutputQueueLength
Wscript.Echo "Packets Outbound Discarded: " & _
objItem.PacketsOutboundDiscarded
Wscript.Echo "Packets Outbound Errors: " & _
objItem.PacketsOutboundErrors
Wscript.Echo "Packets Per Second: " & objItem.PacketsPersec
Wscript.Echo "Packets Received Discarded: " & _
objItem.PacketsReceivedDiscarded
Wscript.Echo "Packets Received Errors: " & _
objItem.PacketsReceivedErrors
Wscript.Echo "Packets Received Non-Unicast Per Second: " & _
objItem.PacketsReceivedNonUnicastPersec
Wscript.Echo "Packets Received Per Second: " & _
objItem.PacketsReceivedPersec
Wscript.Echo "Packets Received Unicast Per Second: " & _
objItem.PacketsReceivedUnicastPersec
Wscript.Echo "Packets Received Unknown: " & _
objItem.PacketsReceivedUnknown
Wscript.Echo "Packets Sent Non-Unicast Per Second: " & _
objItem.PacketsSentNonUnicastPersec
Wscript.Echo "Packets Sent Per Second: " & objItem.PacketsSentPersec
Wscript.Echo "Packets Sent Unicast Per Second: " & _
objItem.PacketsSentUnicastPersec
Wscript.Sleep 2000
objRefresher.Refresh
Next
Next
Monitor TCP-IP TCP Performance
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
set objRefresher = CreateObject("WbemScripting.SWbemRefresher")
Set colItems = objRefresher.AddEnum _
(objWMIService, "Win32_PerfFormattedData_TCPIP_TCP").objectSet
objRefresher.Refresh
For i = 1 to 5
For Each objItem in colItems
Wscript.Echo "Caption: " & objItem.Caption
Wscript.Echo "Connection Failures: " & objItem.ConnectionFailures
Wscript.Echo "Connections Active: " & objItem.ConnectionsActive
Wscript.Echo "Connections Established: " & _
objItem.ConnectionsEstablished
Wscript.Echo "Connections Passive: " & objItem.ConnectionsPassive
Wscript.Echo "Connections Reset: " & objItem.ConnectionsReset
Wscript.Echo "Description: " & objItem.Description
Wscript.Echo "Name: " & objItem.Name
Wscript.Echo "Segments Per Second: " & objItem.SegmentsPersec
Wscript.Echo "Segments Received Per Second: " & _\
objItem.SegmentsReceivedPersec
Wscript.Echo "Segments Retransmitted Per Second: " & _
objItem.SegmentsRetransmittedPersec
Wscript.Echo "Segments Sent Per Second: " & _
objItem.SegmentsSentPersec
objRefresher.Refresh
Next
Next
Monitor TCP-IP TCPv4 Performance
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
set objRefresher = CreateObject("WbemScripting.SWbemRefresher")
Set colItems = objRefresher.AddEnum _
(objWMIService, "Win32_PerfFormattedData_TCPIP_TCPv4").objectSet
objRefresher.Refresh
For i = 1 to 5
For Each objItem in colItems
Wscript.Echo "Connection failures: " & objItem.ConnectionFailures
Wscript.Sleep 2000
objRefresher.Refresh
Next
Next
Monitor TCP-IP TCPv6 Performance
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
set objRefresher = CreateObject("WbemScripting.SWbemRefresher")
Set colItems = objRefresher.AddEnum _
(objWMIService, "Win32_PerfFormattedData_TCPIP_TCPv6").objectSet
objRefresher.Refresh
For i = 1 to 5
For Each objItem in colItems
Wscript.Echo "Connection failures: " & objItem.ConnectionFailures
Wscript.Sleep 2000
objRefresher.Refresh
Next
Next
Monitor TCP-IP UDP Performance
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
set objRefresher = CreateObject("WbemScripting.SWbemRefresher")
Set colItems = objRefresher.AddEnum _
(objWMIService, "Win32_PerfFormattedData_TCPIP_UDP").objectSet
objRefresher.Refresh
For i = 1 to 5
For Each objItem in colItems
Wscript.Echo "Caption: " & objItem.Caption
Wscript.Echo "Datagrams No Port Per Second: " & _
objItem.DatagramsNoPortPersec
Wscript.Echo "Datagrams Per Second: " & objItem.DatagramsPersec
Wscript.Echo "Datagrams Received Errors: " & _
objItem.DatagramsReceivedErrors
Wscript.Echo "Datagrams Received Per Second: " & _
objItem.DatagramsReceivedPersec
Wscript.Echo "Datagrams Sent Per Second: " & _
objItem.DatagramsSentPersec
Wscript.Echo "Description: " & objItem.Description
Wscript.Echo "Name: " & objItem.Name
Wscript.Sleep 2000
objRefresher.Refresh
Next
Next
Monitor TCP-IP UDPv4 Performance
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
set objRefresher = CreateObject("WbemScripting.SWbemRefresher")
Set colItems = objRefresher.AddEnum _
(objWMIService, "Win32_PerfFormattedData_TCPIP_UDPv4").objectSet
objRefresher.Refresh
For i = 1 to 5
For Each objItem in colItems
Wscript.Echo "Datagrams sent per second: " & _
objItem.DatagramsSentPerSec
Wscript.Sleep 2000
objRefresher.Refresh
Next
Next
Monitor TCP-IP UDPv6 Performance
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
set objRefresher = CreateObject("WbemScripting.SWbemRefresher")
Set colItems = objRefresher.AddEnum _
(objWMIService, "Win32_PerfFormattedData_TCPIP_UDPv6").objectSet
objRefresher.Refresh
For i = 1 to 5
For Each objItem in colItems
Wscript.Echo "Datagrams sent per second: " & _
objItem.DatagramsSentPerSec
Wscript.Sleep 2000
objRefresher.Refresh
Next
Next
List SNMP MIB-II Interface Table Information
strTargetSnmpDevice = "192.168.0.1"
Set objWmiLocator = CreateObject("WbemScripting.SWbemLocator")
Set objWmiServices = objWmiLocator.ConnectServer("", "root\snmp\localhost")
Set objWmiNamedValueSet = CreateObject("WbemScripting.SWbemNamedValueSet")
objWmiNamedValueSet.Add "AgentAddress", strTargetSnmpDevice
objWmiNamedValueSet.Add "AgentReadCommunityName", "public"
Set colIfTable = objWmiServices.InstancesOf("SNMP_RFC1213_MIB_ifTable", , _
objWmiNamedValueSet)
For Each objInterface In colIfTable
WScript.Echo "ifIndex [Key]:" & objInterface.ifIndex& vbCrLf & _
" ifAdminStatus: " & objInterface.ifAdminStatus & vbCrLf & _
" ifDescr: " & objInterface.ifDescr & vbCrLf & _
" ifInDiscards:" & objInterface.ifInDiscards& vbCrLf & _
" ifInErrors:" & objInterface.ifInErrors& vbCrLf & _
" ifInNUcastPkts:" & objInterface.ifInNUcastPkts& vbCrLf & _
" ifInOctets:" & objInterface.ifInOctets& vbCrLf & _
" ifInUcastPkts: " & objInterface.ifInUcastPkts & vbCrLf & _
" ifInUnknownProtos: " & objInterface.ifInUnknownProtos & vbCrLf & _
" ifLastChange:" & objInterface.ifLastChange& vbCrLf & _
" ifMtu: " & objInterface.ifMtu & vbCrLf & _
" ifOperStatus:" & objInterface.ifOperStatus& vbCrLf & _
" ifOutDiscards: " & objInterface.ifOutDiscards & vbCrLf & _
" ifOutErrors: " & objInterface.ifOutErrors & vbCrLf & _
" ifOutNUcastPkts: " & objInterface.ifOutNUcastPkts & vbCrLf & _
" ifOutOctets: " & objInterface.ifOutOctets & vbCrLf & _
" ifOutQLen: " & objInterface.ifOutQLen & vbCrLf & _
" ifOutUcastPkts:" & objInterface.ifOutUcastPkts& vbCrLf & _
" ifPhysAddress: " & objInterface.ifPhysAddress & vbCrLf & _
" ifSpecific:" & objInterface.ifSpecific& vbCrLf & _
" ifSpeed: " & objInterface.ifSpeed & vbCrLf & _
" ifType:" & objInterface.ifType& vbCrLf
Next
List SNMP MIB-II System Group Information
strTargetSnmpDevice = "192.168.0.1"
Set objWmiLocator = CreateObject("WbemScripting.SWbemLocator")
Set objWmiServices = objWmiLocator.ConnectServer("", "root\snmp\localhost")
Set objWmiNamedValueSet = CreateObject("WbemScripting.SWbemNamedValueSet")
objWmiNamedValueSet.Add "AgentAddress", strTargetSnmpDevice
objWmiNamedValueSet.Add "AgentReadCommunityName", "public"
Set colSystem = objWmiServices.InstancesOf("SNMP_RFC1213_MIB_system", , _
objWmiNamedValueSet)
For Each objSystem In colSystem
WScript.Echo "sysContact:" & objSystem.sysContact& vbCrLf & _
"sysDescr:" & objSystem.sysDescr& vbCrLf & _
"sysLocation: " & objSystem.sysLocation & vbCrLf & _
"sysName: " & objSystem.sysName & vbCrLf & _
"sysObjectID: " & objSystem.sysObjectID & vbCrLf & _
"sysServices: " & objSystem.sysServices & vbCrLf & _
"sysUpTime: " & objSystem.sysUpTime
Next
List SNMP MIB-II TCP and UDP Connections and Listening Ports
strTargetSnmpDevice = "192.168.0.1"
Set objWmiLocator = CreateObject("WbemScripting.SWbemLocator")
Set objWmiServices = objWmiLocator.ConnectServer("", "root\snmp\localhost")
Set objWmiNamedValueSet = CreateObject("WbemScripting.SWbemNamedValueSet")
objWmiNamedValueSet.Add "AgentAddress", strTargetSnmpDevice
objWmiNamedValueSet.Add "AgentReadCommunityName", "public"
Set colTcpConnTable = _
objWmiServices.InstancesOf("SNMP_RFC1213_MIB_tcpConnTable", , _
objWmiNamedValueSet)
Set colUdpTable = _
objWmiServices.InstancesOf("SNMP_RFC1213_MIB_udpTable", , _
objWmiNamedValueSet)
WScript.Echo "TCP Connections and Listening Ports" & vbCrLf & _
"-----------------------------------"
For Each objTcpConn In colTcpConnTable
WScript.Echo objTcpConn.tcpConnLocalAddress & ":"& _
objTcpConn.tcpConnLocalPort& " => " & _
objTcpConn.tcpConnRemAddress & ":"& _
objTcpConn.tcpConnRemPort& " "& _
"[State: " & objTcpConn.tcpConnState & "]"
Next
WScript.Echo vbCrLf & "UDP Ports" & vbCrLf & "---------"
For Each objUdp In colUdpTable
WScript.Echo objUdp.udpLocalAddress & ":" & objUdp.UdpLocalPort
Next
Add an Application to the Standard Profile
Set objFirewall = CreateObject("HNetCfg.FwMgr")
Set objPolicy = objFirewall.LocalPolicy
Set objProfile = objPolicy.GetProfileByType(1)
Set objApplication = CreateObject("HNetCfg.FwAuthorizedApplication")
objApplication.Name = "Free Cell"
objApplication.IPVersion = 2
objApplication.ProcessImageFileName = "c:\windows\system32\freecell.exe"
objApplication.RemoteAddresses = "*"
objApplication.Scope = 0
objApplication.Enabled = True
Set colApplications = objProfile.AuthorizedApplications
colApplications.Add(objApplication)
Add an Authorized Application
Set objFirewall = CreateObject("HNetCfg.FwMgr")
Set objPolicy = objFirewall.LocalPolicy.CurrentProfile
Set objApplication = CreateObject("HNetCfg.FwAuthorizedApplication")
objApplication.Name = "Free Cell"
objApplication.IPVersion = 2
objApplication.ProcessImageFileName = "c:\windows\system32\freecell.exe"
objApplication.RemoteAddresses = "*"
objApplication.Scope = 0
objApplication.Enabled = True
Set colApplications = objPolicy.AuthorizedApplications
colApplications.Add(objApplication)
Create a New Port
Set objFirewall = CreateObject("HNetCfg.FwMgr")
Set objPolicy = objFirewall.LocalPolicy.CurrentProfile
Set objPort = CreateObject("HNetCfg.FwOpenPort")
objPort.Port = 9999
objPort.Name = "Test Port"
objPort.Enabled = FALSE
Set colPorts = objPolicy.GloballyOpenPorts
errReturn = colPorts.Add(objPort)
Delete an Authorized Application
Set objFirewall = CreateObject("HNetCfg.FwMgr")
Set objPolicy = objFirewall.LocalPolicy.CurrentProfile
Set colApplications = objPolicy.AuthorizedApplications
errReturn = colApplications.Remove("c:\windows\system32\freecell.exe")
Delete an Open Port
Set objFirewall = CreateObject("HNetCfg.FwMgr")
Set objPolicy = objFirewall.LocalPolicy.CurrentProfile
Set colPorts = objPolicy.GloballyOpenPorts
errReturn = colPorts.Remove(9999,6)
Disable Remote Administration
Set objFirewall = CreateObject("HNetCfg.FwMgr")
Set objPolicy = objFirewall.LocalPolicy.CurrentProfile
Set objAdminSettings = objPolicy.RemoteAdminSettings
objAdminSettings.Enabled = FALSE
Disable the Firewall
Set objFirewall = CreateObject("HNetCfg.FwMgr")
Set objPolicy = objFirewall.LocalPolicy.CurrentProfile
objPolicy.FirewallEnabled = FALSE
Enable File and Printer Sharing Through Windows Firewall
Set objFirewall = CreateObject("HNetCfg.FwMgr")
Set objPolicy = objFirewall.LocalPolicy.CurrentProfile
Set colServices = objPolicy.Services
Set objService = colServices.Item(0)
objService.Enabled = TRUE
Enable Remote Administration
Set objFirewall = CreateObject("HNetCfg.FwMgr")
Set objPolicy = objFirewall.LocalPolicy.CurrentProfile
Set objAdminSettings = objPolicy.RemoteAdminSettings
objAdminSettings.Enabled = TRUE
Enable the Firewall
Set objFirewall = CreateObject("HNetCfg.FwMgr")
Set objPolicy = objFirewall.LocalPolicy.CurrentProfile
objPolicy.FirewallEnabled = TRUE
List All Globally-Open Ports
Set objFirewall = CreateObject("HNetCfg.FwMgr")
Set objPolicy = objFirewall.LocalPolicy.CurrentProfile
Set colPorts = objPolicy.GloballyOpenPorts
For Each objPort in colPorts
Wscript.Echo "Port name: " & objPort.Name
Wscript.Echo "Port number: " & objPort.Port
Wscript.Echo "Port IP version: " & objPort.IPVersion
Wscript.Echo "Port protocol: " & objPort.Protocol
Wscript.Echo "Port scope: " & objPort.Scope
Wscript.Echo "Port remote addresses: " & objPort.RemoteAddresses
Wscript.Echo "Port enabled: " & objPort.Enabled
Wscript.Echo "Port built-in: " & objPort.Builtin
Next
List Authorized Applications
Set objFirewall = CreateObject("HNetCfg.FwMgr")
Set objPolicy = objFirewall.LocalPolicy.CurrentProfile
Set colApplications = objPolicy.AuthorizedApplications
For Each objApplication in colApplications
Wscript.Echo "Authorized application: " & objApplication.Name
Wscript.Echo "Application enabled: " & objApplication.Enabled
Wscript.Echo "Application IP version: " & objApplication.IPVersion
Wscript.Echo "Application process image file name: " & _
objApplication.ProcessImageFileName
Wscript.Echo "Application remote addresses: " & _
objApplication.RemoteAddresses
Wscript.Echo "Application scope: " & objApplication.Scope
Wscript.Echo
Next
List Authorized Applications in the Standard Profile
Set objFirewall = CreateObject("HNetCfg.FwMgr")
Set objPolicy = objFirewall.LocalPolicy
Set objProfile = objPolicy.GetProfileByType(1)
Set colApplications = objProfile.AuthorizedApplications
For Each objApplication in colApplications
Wscript.Echo "Authorized application: " & objApplication.Name
Wscript.Echo "Application enabled: " & objApplication.Enabled
Wscript.Echo "Application IP version: " & objApplication.IPVersion
Wscript.Echo "Application process image file name: " & _
objApplication.ProcessImageFileName
Wscript.Echo "Application remote addresses: " & _
objApplication.RemoteAddresses
Wscript.Echo "Application scope: " & objApplication.Scope
Wscript.Echo
Next
List Firewall Properties
Set objFirewall = CreateObject("HNetCfg.FwMgr")
Set objPolicy = objFirewall.LocalPolicy.CurrentProfile
Wscript.Echo "Current profile type: " & objFirewall.CurrentProfileType
Wscript.Echo "Firewall enabled: " & objPolicy.FirewallEnabled
Wscript.Echo "Exceptions not allowed: " & objPolicy.ExceptionsNotAllowed
Wscript.Echo "Notifications disabled: " & objPolicy.NotificationsDisabled
Wscript.Echo "Unicast responses to multicast broadcast disabled: " & _
objPolicy.UnicastResponsestoMulticastBroadcastDisabled
List Firewall Service Properties
Set objFirewall = CreateObject("HNetCfg.FwMgr")
Set objPolicy = objFirewall.LocalPolicy.CurrentProfile
Set colServices = objPolicy.Services
For Each objService in colServices
Wscript.Echo "Service name: " & objService.Name
Wscript.Echo "Service enabled: " & objService.Enabled
Wscript.Echo "Service type: " & objService.Type
Wscript.Echo "Service IP version: " & objService.IPVersion
Wscript.Echo "Service scope: " & objService.Scope
Wscript.Echo "Service remote addresses: " & objService.RemoteAddresses
Wscript.Echo "Service customized: " & objService.Customized
Set colPorts = objService.GloballyOpenPorts
For Each objPort in colPorts
Wscript.Echo "Port name: " & objPort.Name
Wscript.Echo "Port number: " & objPort.Port
Wscript.Echo "Port enabled: " & objPort.Enabled
Wscript.Echo "Port built-in: " & objPort.BuiltIn
Wscript.Echo "Port IP version: " & objPort.IPVersion
Wscript.Echo "Port protocol: " & objPort.Protocol
Wscript.Echo "Port remote addresses: " & objPort.RemoteAddresses
Wscript.Echo "Port scope: " & objPort.Scope
Next
Wscript.Echo
Next
List ICMP Settings
Set objFirewall = CreateObject("HNetCfg.FwMgr")
Set objPolicy = objFirewall.LocalPolicy.CurrentProfile
Set objICMPSettings = objPolicy.ICMPSettings
Wscript.Echo "Allow inbound echo request: " & _
objICMPSettings.AllowInboundEchoRequest
Wscript.Echo "Allow inbound mask request: " & _
objICMPSettings.AllowInboundMaskRequest
Wscript.Echo "Allow inbound router request: " & _
objICMPSettings.AllowInboundRouterRequest
Wscript.Echo "Allow inbound timestamp request: " & _
objICMPSettings.AllowInboundTimestampRequest
Wscript.Echo "Allow outbound destination unreachable: " & _
objICMPSettings.AllowOutboundDestinationUnreachable
Wscript.Echo "Allow outbound packet too big: " & _
objICMPSettings.AllowOutboundPacketTooBig
Wscript.Echo "Allow outbound parameter problem: " & _
objICMPSettings.AllowOutboundParameterProblem
Wscript.Echo "Allow outbound source quench: " & _
objICMPSettings.AllowOutboundSourceQuench
Wscript.Echo "Allow outbound time exceeded: " & _
objICMPSettings.AllowOutboundTimeExceeded
Wscript.Echo "Allow redirect: " & objICMPSettings.AllowRedirect
List Remote Administration Settings
Set objFirewall = CreateObject("HNetCfg.FwMgr")
Set objPolicy = objFirewall.LocalPolicy.CurrentProfile
Set objAdminSettings = objPolicy.RemoteAdminSettings
Wscript.Echo "Remote administration settings enabled: " & _
objAdminSettings.Enabled
Wscript.Echo "Remote administration addresses: " & _
objAdminSettings.RemoteAddresses
Wscript.Echo "Remote administration scope: " & objAdminSettings.Scope
Wscript.Echo "Remote administration IP version: " & objAdminSettings.IPVersion
List Standard Profile Properties
Set objFirewall = CreateObject("HNetCfg.FwMgr")
Set objPolicy = objFirewall.LocalPolicy
Set objProfile = objPolicy.GetProfileByType(1)
Wscript.Echo "Firewall enabled: " & objProfile.FirewallEnabled
Wscript.Echo "Exceptions not allowed: " & objProfile.ExceptionsNotAllowed
Wscript.Echo "Notifications disabled: " & objProfile.NotificationsDisabled
Wscript.Echo "Unicast responses to multicast broadcast disabled: " & -
objProfile.UnicastResponsestoMulticastBroadcastDisabled
Modify a Firewall Property
Set objFirewall = CreateObject("HNetCfg.FwMgr")
Set objPolicy = objFirewall.LocalPolicy.CurrentProfile
objPolicy.ExceptionsNotAllowed = TRUE
objPolicy.NotificationsDisabled = TRUE
objPolicy.UnicastResponsestoMulticastBroadcastDisabled = TRUE
Modify an ICMP Setting
Set objFirewall = CreateObject("HNetCfg.FwMgr")
Set objPolicy = objFirewall.LocalPolicy.CurrentProfile
Set objICMPSettings = objPolicy.ICMPSettings
objICMPSettings.AllowRedirect = TRUE
Open a Closed Port
Set objFirewall = CreateObject("HNetCfg.FwMgr")
Set objPolicy = objFirewall.LocalPolicy.CurrentProfile
Set colPorts = objPolicy.GloballyOpenPorts
Set objPort = colPorts.Item(9999,6)
objPort.Enabled = TRUE
Restore the Default Settings
Set objFirewall = CreateObject("HNetCfg.FwMgr")
objFirewall.RestoreDefaults()
List Classic COM Class Settings
On Error Resume Next
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colItems = objWMIService.ExecQuery _
("Select * from Win32_ClassicCOMClassSetting")
For Each objItem in colItems
Wscript.Echo "Application ID: " & objItem.AppID
Wscript.Echo "Component ID: " & objItem.ComponentId
Wscript.Echo "Control: " & objItem.Control
Wscript.Echo "Default Icon: " & objItem.DefaultIcon
Wscript.Echo "Description: " & objItem.Description
Wscript.Echo "In-process Server 32: " & objItem.InprocServer32
Wscript.Echo "Insertable: " & objItem.Insertable
Wscript.Echo "Java Class: " & objItem.JavaClass
Wscript.Echo "ProgId: " & objItem.ProgId
Wscript.Echo "Version Independent ProgId: " & _
objItem.VersionIndependentProgId
Wscript.Echo
Next
List Classic COM Classes
On Error Resume Next
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colItems = objWMIService.ExecQuery("Select * from Win32_ClassicCOMClass")
For Each objItem in colItems
Wscript.Echo "Component ID: " & objItem.ComponentId
Wscript.Echo "Description: " & objItem.Description
Wscript.Echo "Name: " & objItem.Name
Wscript.Echo
Next
List Component Categories
On Error Resume Next
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colItems = objWMIService.ExecQuery("Select * from Win32_ComponentCategory")
For Each objItem in colItems
Wscript.Echo "Category ID: " & objItem.CategoryId
Wscript.Echo "Name: " & objItem.Name
Wscript.Echo
Next
List DCOM Application Settings
On Error Resume Next
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colItems = objWMIService.ExecQuery _
("Select * from Win32_DCOMApplicationSetting")
For Each objItem in colItems
Wscript.Echo "Application ID: " & objItem.AppID
Wscript.Echo "Description: " & objItem.Description
Wscript.Echo "Enable At Storage Activation: " & _
objItem.EnableAtStorageActivation
Wscript.Echo "Local Service: " & objItem.LocalService
Wscript.Echo "Service Parameters: " & objItem.ServiceParameters
Wscript.Echo "Use Surrogate: " & objItem.UseSurrogate
Wscript.Echo
Next
List DCOM Applications
On Error Resume Next
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colItems = objWMIService.ExecQuery("Select * from Win32_DCOMApplication")
For Each objItem in colItems
Wscript.Echo "Application ID: " & objItem.AppID
Wscript.Echo "Name: " & objItem.Name
Wscript.Echo
Next
List ProgIDs
On Error Resume Next
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colItems = objWMIService.ExecQuery _
("Select * from Win32_ProgIDSpecification")
For Each objItem in colItems
Wscript.Echo "Caption: " & objItem.Caption
Wscript.Echo "Check ID: " & objItem.CheckID
Wscript.Echo "Name: " & objItem.Name
Wscript.Echo "Parent: " & objItem.Parent
Wscript.Echo "ProgID: " & objItem.ProgID
Next
List the Local Time on a Computer
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colItems = objWMIService.ExecQuery("Select * from Win32_LocalTime")
For Each objItem in colItems
Wscript.Echo "Year: " & objItem.Year
Wscript.Echo "Month: " & objItem.Month
Wscript.Echo "Day: " & objItem.Day
Wscript.Echo "Hour: " & objItem.Hour
Wscript.Echo "Minute: " & objItem.Minute
Wscript.Echo "Second: " & objItem.Second
Wscript.Echo "Quarter: " & objItem.Quarter
Wscript.Echo "Week in the Month: " & objItem.WeekInMonth
Wscript.Echo "Day of the Week: " & objItem.DayOfWeek
Next
List the Time Zone Offset from Greenwich Mean Time
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colTimeZone = objWMIService.ExecQuery("Select * from Win32_TimeZone")
For Each objTimeZone in colTimeZone
Wscript.Echo "Offset: "& objTimeZone.Bias
Next
List Time Zone Information for a Computer
On Error Resume Next
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colItems = objWMIService.ExecQuery("Select * from Win32_TimeZone")
For Each objItem in colItems
Wscript.Echo "Bias: " & objItem.Bias
Wscript.Echo "Caption: " & objItem.Caption
Wscript.Echo "Daylight Bias: " & objItem.DaylightBias
Wscript.Echo "Daylight Day: " & objItem.DaylightDay
Wscript.Echo "Daylight Day of Week: " & objItem.DaylightDayOfWeek
Wscript.Echo "Daylight Hour: " & objItem.DaylightHour
Wscript.Echo "Daylight Millisecond: " & objItem.DaylightMillisecond
Wscript.Echo "Daylight Minute: " & objItem.DaylightMinute
Wscript.Echo "Daylight Month: " & objItem.DaylightMonth
Wscript.Echo "Daylight Name: " & objItem.DaylightName
Wscript.Echo "Daylight Second: " & objItem.DaylightSecond
Wscript.Echo "Daylight Year: " & objItem.DaylightYear
Wscript.Echo "Description: " & objItem.Description
Wscript.Echo "Setting ID: " & objItem.SettingID
Wscript.Echo "Standard Bias: " & objItem.StandardBias
Wscript.Echo "Standard Day: " & objItem.StandardDay
Wscript.Echo "Standard Day of Week: " & objItem.StandardDayOfWeek
Wscript.Echo "Standard Hour: " & objItem.StandardHour
Wscript.Echo "Standard Millisecond: " & objItem.StandardMillisecond
Wscript.Echo "Standard Minute: " & objItem.StandardMinute
Wscript.Echo "Standard Month: " & objItem.StandardMonth
Wscript.Echo "Standard Name: " & objItem.StandardName
Wscript.Echo "Standard Second: " & objItem.StandardSecond
Wscript.Echo "Standard Year: " & objItem.StandardYear
Wscript.Echo
Next
Set the Time Zone Offset from Greenwich Mean Time
On Error Resume Next
strComputer = "."
'Change value to reflect desired GMT offset in minutes.
intGMTOffset = -480
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colCompSys = objWMIService.ExecQuery _
("Select * from Win32_ComputerSystem")
For Each objCompSys in colCompSys
objCompSys.CurrentTimeZone = intGMTOffset
objCompSys.Put_
If Err = 0 Then
Wscript.Echo "Time zone set to specified value."
Else
Wscript.Echo "Unable to set time zone."
End If
Err.Clear
Next
List Time Zone and Daylight Savings
Windows NT 4.0 SP4 and later : Yes
strComputer = "."
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\CIMV2")
Set colItems = objWMIService.ExecQuery("SELECT * FROM Win32_ComputerSystem")
For Each objItem In colItems
WScript.Echo "Current Time Zone (Hours Offset From GMT): " & (objItem.CurrentTimeZone / 60)
WScript.Echo "Daylight Saving In Effect: " & objItem.DaylightInEffect
Next
List the UTC Time on a Computer
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colItems = objWMIService.ExecQuery("Select * from Win32_UTCTime")
For Each objItem in colItems
Wscript.Echo "Day: " & objItem.Day
Wscript.Echo "Day of the Week: " & objItem.DayOfWeek
Wscript.Echo "Hour: " & objItem.Hour
Wscript.Echo "Milliseconds: " & objItem.Milliseconds
Wscript.Echo "Minute: " & objItem.Minute
Wscript.Echo "Month: " & objItem.Month
Wscript.Echo "Quarter: " & objItem.Quarter
Wscript.Echo "Second: " & objItem.Second
Wscript.Echo "Week in the Month: " & objItem.WeekInMonth
Wscript.Echo "Year: " & objItem.Year
Next
Monitor Browser Service Performance
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
set objRefresher = CreateObject("WbemScripting.SWbemRefresher")
Set colItems = objRefresher.AddEnum _
(objWMIService, "Win32_PerfFormattedData_PerfNet_Browser").objectSet
objRefresher.Refresh
For i = 1 to 5
For Each objItem in colItems
Wscript.Echo "Announcements Domain Per Second: " & _
objItem.AnnouncementsDomainPersec
Wscript.Echo "Announcements Server Per Second: " & _
objItem.AnnouncementsServerPersec
Wscript.Echo "Announcements Total Per Second: " & _
objItem.AnnouncementsTotalPersec
Wscript.Echo "Caption: " & objItem.Caption
Wscript.Echo "Description: " & objItem.Description
Wscript.Echo "Duplicate Master Announcements: " & _
objItem.DuplicateMasterAnnouncements
Wscript.Echo "Election Packets Per Second: " & _
objItem.ElectionPacketsPersec
Wscript.Echo "Enumerations Domain Per Second: " & _
objItem.EnumerationsDomainPersec
Wscript.Echo "Enumerations Other Per Second: " & _
objItem.EnumerationsOtherPersec
Wscript.Echo "Enumerations Server Per Second: " & _
objItem.EnumerationsServerPersec
Wscript.Echo "Enumerations Total Per Second: " & _
objItem.EnumerationsTotalPersec
Wscript.Echo "Illegal Datagrams Per Second: " & _
objItem.IllegalDatagramsPersec
Wscript.Echo "Mailslot Allocations Failed: " & _
objItem.MailslotAllocationsFailed
Wscript.Echo "Mailslot Opens Failed Per Second: " & _
objItem.MailslotOpensFailedPersec
Wscript.Echo "Mailslot Receives Failed: " & _
objItem.MailslotReceivesFailed
Wscript.Echo "Mailslot Writes Failed: " & objItem.MailslotWritesFailed
Wscript.Echo "Mailslot Writes Per Second: " & _
objItem.MailslotWritesPersec
Wscript.Echo "Missed Mailslot Datagrams: " & _
objItem.MissedMailslotDatagrams
Wscript.Echo "Missed Server Announcements: " & _
objItem.MissedServerAnnouncements
Wscript.Echo "Missed Server List Requests: " & _
objItem.MissedServerListRequests
Wscript.Echo "Name: " & objItem.Name
Wscript.Echo "Server Announce Allocations Failed Per Second: " & _
objItem.ServerAnnounceAllocationsFailedPersec
Wscript.Echo "Server List Requests Per Second: " & _
objItem.ServerListRequestsPersec
Wscript.Sleep 2000
objRefresher.Refresh
Next
Next
Monitor Operating System Objects
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
set objRefresher = CreateObject("WbemScripting.SWbemRefresher")
Set colItems = objRefresher.AddEnum _
(objWMIService, "Win32_PerfFormattedData_PerfOS_Objects").objectSet
objRefresher.Refresh
For i = 1 to 5
For Each objItem in colItems
Wscript.Echo "Caption: " & objItem.Caption
Wscript.Echo "Description: " & objItem.Description
Wscript.Echo "Events: " & objItem.Events
Wscript.Echo "Mutexes: " & objItem.Mutexes
Wscript.Echo "Name: " & objItem.Name
Wscript.Echo "Processes: " & objItem.Processes
Wscript.Echo "Sections: " & objItem.Sections
Wscript.Echo "Semaphores: " & objItem.Semaphores
Wscript.Echo "Threads: " & objItem.Threads
objRefresher.Refresh
Next
Next
Monitor Operating System Performance
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
set objRefresher = CreateObject("WbemScripting.SWbemRefresher")
Set colItems = objRefresher.AddEnum _
(objWMIService, "Win32_PerfFormattedData_PerfOS_System").objectSet
objRefresher.Refresh
For i = 1 to 5
For Each objItem in colItems
Wscript.Echo "Alignment Fixups Per Second: " & _
objItem.AlignmentFixupsPersec
Wscript.Echo "Caption: " & objItem.Caption
Wscript.Echo "Context Switches Per Second: " & _
objItem.ContextSwitchesPersec
Wscript.Echo "Description: " & objItem.Description
Wscript.Echo "Exception Dispatches Per Second: " & _
objItem.ExceptionDispatchesPersec
Wscript.Echo "File Control Bytes Per Second: " & _
objItem.FileControlBytesPersec
Wscript.Echo "File Control Operations Per Second: " & _
objItem.FileControlOperationsPersec
Wscript.Echo "File Data Operations Per Second: " & _
objItem.FileDataOperationsPersec
Wscript.Echo "File Read Bytes Per Second: " & _
objItem.FileReadBytesPersec
Wscript.Echo "File Read Operations Per Second: " & _
objItem.FileReadOperationsPersec
Wscript.Echo "File Write Bytes Per Second: " & _
objItem.FileWriteBytesPersec
Wscript.Echo "File Write Operations Per Second: " & _
objItem.FileWriteOperationsPersec
Wscript.Echo "Floating Emulations Per Second: " & _
objItem.FloatingEmulationsPersec
Wscript.Echo "Name: " & objItem.Name
Wscript.Echo "Percent Registry Quota In Use: " & _
objItem.PercentRegistryQuotaInUse
Wscript.Echo "Processes: " & objItem.Processes
Wscript.Echo "Processor Queue Length: " & _
objItem.ProcessorQueueLength
Wscript.Echo "System Calls Per Second: " & _
objItem.SystemCallsPersec
Wscript.Echo "System UpTime: " & objItem.SystemUpTime
Wscript.Echo "Threads: " & objItem.Threads
Wscript.Sleep 2000
objRefresher.Refresh
Next
Next
Monitor Server Performance
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
set objRefresher = CreateObject("WbemScripting.SWbemRefresher")
Set colItems = objRefresher.AddEnum _
(objWMIService, "Win32_PerfFormattedData_PerfNet_Server").objectSet
objRefresher.Refresh
For i = 1 to 5
For Each objItem in colItems
Wscript.Echo "Blocking Requests Rejected: " & _
objItem.BlockingRequestsRejected
Wscript.Echo "Bytes Received Per Second: " & _
objItem.BytesReceivedPersec
Wscript.Echo "Bytes Total Per Second: " & objItem.BytesTotalPersec
Wscript.Echo "Bytes Transmitted Per Second: " & _
objItem.BytesTransmittedPersec
Wscript.Echo "Caption: " & objItem.Caption
Wscript.Echo "Context Blocks Queued Per Second: " & _
objItem.ContextBlocksQueuedPersec
Wscript.Echo "Description: " & objItem.Description
Wscript.Echo "Errors Access Permissions: " & _
objItem.ErrorsAccessPermissions
Wscript.Echo "Errors Granted Access: " & _
objItem.ErrorsGrantedAccess
Wscript.Echo "Errors Logon: " & objItem.ErrorsLogon
Wscript.Echo "Errors System: " & objItem.ErrorsSystem
Wscript.Echo "File Directory Searches: " & _
objItem.FileDirectorySearches
Wscript.Echo "Files Open: " & objItem.FilesOpen
Wscript.Echo "Files Opened Total: " & objItem.FilesOpenedTotal
Wscript.Echo "Logon Per Second: " & objItem.LogonPersec
Wscript.Echo "Logon Total: " & objItem.LogonTotal
Wscript.Echo "Name: " & objItem.Name
Wscript.Echo "Pool Nonpaged Bytes: " & objItem.PoolNonpagedBytes
Wscript.Echo "Pool Nonpaged Failures: " & _
objItem.PoolNonpagedFailures
Wscript.Echo "Pool Nonpaged Peak: " & objItem.PoolNonpagedPeak
Wscript.Echo "Pool Paged Bytes: " & objItem.PoolPagedBytes
Wscript.Echo "Pool Paged Failures: " & objItem.PoolPagedFailures
Wscript.Echo "Pool Paged Peak: " & objItem.PoolPagedPeak
Wscript.Echo "Server Sessions: " & objItem.ServerSessions
Wscript.Echo "Sessions Errored Out: " & objItem.SessionsErroredOut
Wscript.Echo "Sessions Forced Off: " & objItem.SessionsForcedOff
Wscript.Echo "Sessions Logged Off: " & objItem.SessionsLoggedOff
Wscript.Echo "Sessions Timed Out: " & objItem.SessionsTimedOut
Wscript.Echo "Work Item Shortages: " & objItem.WorkItemShortages
Wscript.Sleep 2000
objRefresher.Refresh
Next
Next
Monitor Server Work Queues
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
set objRefresher = CreateObject("WbemScripting.SWbemRefresher")
Set colItems = objRefresher.AddEnum(objWMIService, _
"Win32_PerfFormattedData_PerfNet_ServerWorkQueues").objectSet
objRefresher.Refresh
For i = 1 to 5
For Each objItem in colItems
Wscript.Echo "Active Threads: " & objItem.ActiveThreads
Wscript.Echo "Available Threads: " & objItem.AvailableThreads
Wscript.Echo "Available Work Items: " & objItem.AvailableWorkItems
Wscript.Echo "Borrowed Work Items: " & objItem.BorrowedWorkItems
Wscript.Echo "Bytes Received Per Second: " & _
objItem.BytesReceivedPersec
Wscript.Echo "Bytes Sent Per Second: " & objItem.BytesSentPersec
Wscript.Echo "Bytes Transferred Per Second: " & _
objItem.BytesTransferredPersec
Wscript.Echo "Caption: " & objItem.Caption
Wscript.Echo "Context Blocks Queued Per Second: " & _
objItem.ContextBlocksQueuedPersec
Wscript.Echo "Current Clients: " & objItem.CurrentClients
Wscript.Echo "Description: " & objItem.Description
Wscript.Echo "Name: " & objItem.Name
Wscript.Echo "Queue Length: " & objItem.QueueLength
Wscript.Echo "Read Bytes Per Second: " & objItem.ReadBytesPersec
Wscript.Echo "Read Operations Per Second: " & _
objItem.ReadOperationsPersec
Wscript.Echo "Total Bytes Per Second: " & objItem.TotalBytesPersec
Wscript.Echo "Total Operations Per Second: " & _
objItem.TotalOperationsPersec
Wscript.Echo "Work Item Shortages: " & objItem.WorkItemShortages
Wscript.Echo "Write Bytes Per Second: " & objItem.WriteBytesPersec
Wscript.Echo "Write Operations Per Second: " & _
objItem.WriteOperationsPersec
Wscript.Sleep 2000
objRefresher.Refresh
Next
Next
Monitor NET Framework NETCLR Exceptions Performance
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
set objRefresher = CreateObject("WbemScripting.SWbemRefresher")
Set colItems = objRefresher.AddEnum(objWMIService, " & _
"Win32_PerfFormattedData_NETFramework_NETCLRExceptions").objectSet
objRefresher.Refresh
For i = 1 to 5
For Each objItem in colItems
Wscript.Echo "Exceptions thrown: " & objItem.NumberOfExcepsThrown
Wscript.Sleep 2000
objRefresher.Refresh
Next
Next
Monitor NET Framework NETCLR Interop Performance
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
set objRefresher = CreateObject("WbemScripting.SWbemRefresher")
Set colItems = objRefresher.AddEnum(objWMIService, _
"Win32_PerfFormattedData_NETFramework_NETCLRInterop").objectSet
objRefresher.Refresh
For i = 1 to 5
For Each objItem in colItems
Wscript.Echo "Number of stubs: " & objItem.NumberOfStubs
Wscript.Sleep 2000
objRefresher.Refresh
Next
Next
Monitor NET Framework NETCLR JIT Performance
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
set objRefresher = CreateObject("WbemScripting.SWbemRefresher")
Set colItems = objRefresher.AddEnum _
(objWMIService, "Win32_PerfFormattedData_NETFramework_NETCLRJit").objectSet
objRefresher.Refresh
For i = 1 to 5
For Each objItem in colItems
Wscript.Echo "Percent time in JIT: " & objItem.PercentTimeInJIT
Wscript.Sleep 2000
objRefresher.Refresh
Next
Next
Monitor NET Framework NETCLR Locks and Threads Performance
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
set objRefresher = CreateObject("WbemScripting.SWbemRefresher")
Set colItems = objRefresher.AddEnum(objWMIService, _
"Win32_PerfFormattedData_NETFramework_NETCLRLocksAndThreads").objectSet
objRefresher.Refresh
For i = 1 to 5
For Each objItem in colItems
Wscript.Echo "Current queue length: " & objItem.CurrentQueueLength
Wscript.Sleep 2000
objRefresher.Refresh
Next
Next
Monitor NET Framework NETCLR Memory Performance
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
set objRefresher = CreateObject("WbemScripting.SWbemRefresher")
Set colItems = objRefresher.AddEnum(objWMIService, _
"Win32_PerfFormattedData_NETFramework_NETCLRMemory").objectSet
objRefresher.Refresh
For i = 1 to 5
For Each objItem in colItems
Wscript.Echo "Total bytes committed: " & _
objItem.NumberTotalCommittedBytes
Wscript.Sleep 2000
objRefresher.Refresh
Next
Next
Monitor NET Framework NETCLR Remoting Performance
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
set objRefresher = CreateObject("WbemScripting.SWbemRefresher")
Set colItems = objRefresher.AddEnum(objWMIService, _
"Win32_PerfFormattedData_NETFRamework_NETCLRRemoting").objectSet
objRefresher.Refresh
For i = 1 to 5
For Each objItem in colItems
Wscript.Echo "Remote calls per second: " & _
objItem.RemoteCallsPerSec
Wscript.Sleep 2000
objRefresher.Refresh
Next
Next
Monitor NET Framework NETCLR Security Performance
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
set objRefresher = CreateObject("WbemScripting.SWbemRefresher")
Set colItems = objRefresher.AddEnum(objWMIService, _
"Win32_PerfFormattedData_NETFramework_NETCLRSecurity").objectSet
objRefresher.Refresh
For i = 1 to 5
For Each objItem in colItems
Wscript.Echo "Total runtime checks: " & objItem.TotalRuntimeChecks
Wscript.Sleep 2000
objRefresher.Refresh
Next
Next
List Page File Performance
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
set objRefresher = CreateObject("WbemScripting.SWbemRefresher")
Set colItems = objRefresher.AddEnum _
(objWMIService, "Win32_PerfFormattedData_PerfOS_PagingFile").objectSet
objRefresher.Refresh
For i = 1 to 5
For Each objItem in colItems
Wscript.Echo "Caption: " & objItem.Caption
Wscript.Echo "Description: " & objItem.Description
Wscript.Echo "Name: " & objItem.Name
Wscript.Echo "Percent Usage: " & objItem.PercentUsage
Wscript.Echo "Percent Usage Peak: " & objItem.PercentUsagePeak
Wscript.Sleep 2000
objRefresher.Refresh
Next
Next
List Page File Properties
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colPageFiles = objWMIService.ExecQuery("Select * from Win32_PageFile")
For Each objPageFile in colPageFiles
Wscript.Echo "Creation Date: " & objPageFile.CreationDate
Wscript.Echo "Description: " & objPageFile.Description
Wscript.Echo "Drive: " & objPageFile.Drive
Wscript.Echo "File Name: " & objPageFile.FileName
Wscript.Echo "File Size: " & objPageFile.FileSize
Wscript.Echo "Initial Size: " & objPageFile.InitialSize
Wscript.Echo "Install Date: " & objPageFile.InstallDate
Wscript.Echo "Maximum Size: " & objPageFile.MaximumSize
Wscript.Echo "Name: " & objPageFile.Name
Wscript.Echo "Path: " & objPageFile.Path
Next
List Page File Use
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colPageFiles = objWMIService.ExecQuery("Select * from Win32_PageFileUsage")
For Each objPageFile in colPageFiles
Wscript.Echo "Allocated Base Size: " & objPageFile.AllocatedBaseSize
Wscript.Echo "Current Usage: " & objPageFile.CurrentUsage
Wscript.Echo "Description: " & objPageFile.Description
Wscript.Echo "Install Date: " & objPageFile.InstallDate
Wscript.Echo "Name: " & objPageFile.Name
Wscript.Echo "Peak Usage: " & objPageFile.PeakUsage
Next
Modify Page File Properties
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colPageFiles = objWMIService.ExecQuery _
("Select * from Win32_PageFileSetting")
For Each objPageFile in colPageFiles
objPageFile.InitialSize = 300
objPageFile.MaximumSize = 600
objPageFile.Put_
Next
Monitor Job Object Details Performance
Monitor Job Object Performance
Monitor Process Address Space Performance -- Costly
Monitor Process Creation
Monitor Process Deletion
Monitor Process Full Image Performance -- Costly
Monitor Process Image Performance -- Costly
Monitor Process Performance
Monitor Process Performance
Monitor Processor Use by Process
Monitor Thread Details Performance -- Costly
Monitor Thread Performance
Verify Process Availability
Create a Higher Priority Process
Create a Process in a Hidden Window
Create a Process on a Remote Computer
List Process Owners
List the Scripts Running on a Computer
Modify the Priority Of a Running Process
Monitor Threads
Prevent a Process from Running
Terminate a Process
Create a MultiString Value
Const HKEY_LOCAL_MACHINE = &H80000002
strComputer = "."
Set oReg=GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & _
strComputer & "\root\default:StdRegProv")
strKeyPath = "SOFTWARE\System Admin Scripting Guide"
strValueName = "Multi String Value Name"
arrStringValues = Array("first string", "second string", _
"third string", "fourth string")
oReg.SetMultiStringValue HKEY_LOCAL_MACHINE,strKeyPath, _
strValueName,arrStringValues
Create a Registry Key
Const HKEY_LOCAL_MACHINE = &H80000002
strComputer = "."
Set oReg=GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & _
strComputer & "\root\default:StdRegProv")
strKeyPath = "SOFTWARE\System Admin Scripting Guide"
oReg.CreateKey HKEY_LOCAL_MACHINE,strKeyPath
Create Expanded String Values
Const HKEY_LOCAL_MACHINE = &H80000002
strComputer = "."
Set oReg=GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & _
strComputer & "\root\default:StdRegProv")
strKeyPath = "SOFTWARE\System Admin Scripting Guide"
strValueName = "Expanded String Value Name"
strValue = "%PATHEXT%"
oReg.SetExpandedStringValue _
HKEY_LOCAL_MACHINE,strKeyPath,strValueName,strValue
Create String and DWORD Values
Const HKEY_LOCAL_MACHINE = &H80000002
strComputer = "."
Set oReg=GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & _
strComputer & "\root\default:StdRegProv")
strKeyPath = "SOFTWARE\System Admin Scripting Guide"
strValueName = "String Value Name"
strValue = "string value"
oReg.SetStringValue HKEY_LOCAL_MACHINE,strKeyPath,strValueName,strValue
strValueName = "DWORD Value Name"
dwValue = 82
oReg.SetDWORDValue HKEY_LOCAL_MACHINE,strKeyPath,strValueName,dwValue
Delete a Registry Key
Const HKEY_LOCAL_MACHINE = &H80000002
strComputer = "."
Set oReg=GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & _
strComputer & "\root\default:StdRegProv")
strKeyPath = "SOFTWARE\System Admin Scripting Guide"
oReg.DeleteKey HKEY_LOCAL_MACHINE, strKeyPath
Delete Registry Values
Const HKEY_LOCAL_MACHINE = &H80000002
strComputer = "."
Set oReg=GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & _
strComputer & "\root\default:StdRegProv")
strKeyPath = "SOFTWARE\System Admin Scripting Guide"
strDWORDValueName = "DWORD Value Name"
strExpandedStringValueName = "Expanded String Value Name"
strMultiStringValueName = "Multi String Value Name"
strStringValueName = "String Value Name"
oReg.DeleteValue HKEY_LOCAL_MACHINE,strKeyPath,strDWORDValueName
oReg.DeleteValue HKEY_LOCAL_MACHINE,strKeyPath,strExpandedStringValueName
oReg.DeleteValue HKEY_LOCAL_MACHINE,strKeyPath,strMultiStringValueName
oReg.DeleteValue HKEY_LOCAL_MACHINE,strKeyPath,strStringValueName
List Registry Files
Const HKEY_LOCAL_MACHINE = &H80000002
strComputer = "."
Set oReg=GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & _
strComputer & "\root\default:StdRegProv")
strKeyPath = "System\CurrentControlSet\Control\hivelist"
oReg.EnumValues HKEY_LOCAL_MACHINE, strKeyPath,_
arrValueNames, arrValueTypes
For i=0 To UBound(arrValueNames)
StdOut.WriteLine "File Name: " & arrValueNames(i) & " -- "
oReg.GetStringValue HKEY_LOCAL_MACHINE,strKeyPath, _
arrValueNames(i),strValue
Wscript.Echo "Location: " & strValue
Wscript.Echo
Next
List Registry Key Access Rights
Const KEY_QUERY_VALUE = &H0001
Const KEY_SET_VALUE = &H0002
Const KEY_CREATE_SUB_KEY = &H0004
Const DELETE = &H00010000
Const HKEY_LOCAL_MACHINE = &H80000002
strComputer = "."
Set oReg=GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & _
strComputer & "\root\default:StdRegProv")
strKeyPath = "SYSTEM\CurrentControlSet"
oReg.CheckAccess HKEY_LOCAL_MACHINE, strKeyPath, KEY_QUERY_VALUE, _
bHasAccessRight
If bHasAccessRight = True Then
Wscript.Echo "Have Query Value Access Rights on Key"
Else
Wscript.Echo "Do Not Have Query Value Access Rights on Key"
End If
oReg.CheckAccess HKEY_LOCAL_MACHINE, strKeyPath, KEY_SET_VALUE, _
bHasAccessRight
If bHasAccessRight = True Then
Wscript.Echo "Have Set Value Access Rights on Key"
Else
Wscript.Echo "Do Not Have Set Value Access Rights on Key"
End If
oReg.CheckAccess HKEY_LOCAL_MACHINE, strKeyPath, KEY_CREATE_SUB_KEY, _
bHasAccessRight
If bHasAccessRight = True Then
Wscript.Echo "Have Create SubKey Access Rights on Key"
Else
StdOut.WriteLine "Do Not Have Create SubKey Access Rights on Key"
End If
oReg.CheckAccess HKEY_LOCAL_MACHINE, strKeyPath, DELETE, bHasAccessRight
If bHasAccessRight = True Then
StdOut.WriteLine "Have Delete Access Rights on Key"
Else
StdOut.WriteLine "Do Not Have Delete Access Rights on Key"
End If
List Registry Properties
On Error Resume Next
strComputer = "."
Set objWMIService=GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & _
strComputer & "\root\cimv2")
Set colItems = objWMIService.ExecQuery("Select * from Win32_Registry")
For Each objItem in colItems
Wscript.Echo "Current Size: " & objItem.CurrentSize
Wscript.Echo "Description: " & objItem.Description
Wscript.Echo "Install Date: " & objItem.InstallDate
Wscript.Echo "Maximum Size: " & objItem.MaximumSize
Wscript.Echo "Name: " & objItem.Name
Wscript.Echo "Proposed Size: " & objItem.ProposedSize
Next
List Registry Subkeys
Const HKEY_LOCAL_MACHINE = &H80000002
strComputer = "."
Set oReg=GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & _
strComputer & "\root\default:StdRegProv")
strKeyPath = "SYSTEM\CurrentControlSet\Services"
oReg.EnumKey HKEY_LOCAL_MACHINE, strKeyPath, arrSubKeys
For Each subkey In arrSubKeys
Wscript.Echo subkey
Next
List Registry Values and Types
Const HKEY_LOCAL_MACHINE = &H80000002
Const REG_SZ = 1
Const REG_EXPAND_SZ = 2
Const REG_BINARY = 3
Const REG_DWORD = 4
Const REG_MULTI_SZ = 7
strComputer = "."
Set oReg=GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & _
strComputer & "\root\default:StdRegProv")
strKeyPath = "SYSTEM\CurrentControlSet\Control\Lsa"
oReg.EnumValues HKEY_LOCAL_MACHINE, strKeyPath, _
arrValueNames, arrValueTypes
For i=0 To UBound(arrValueNames)
Wscript.Echo "Value Name: " & arrValueNames(i)
Select Case arrValueTypes(i)
Case REG_SZ
Wscript.Echo "Data Type: String"
Wscript.Echo
Case REG_EXPAND_SZ
Wscript.Echo "Data Type: Expanded String"
Wscript.Echo
Case REG_BINARY
Wscript.Echo "Data Type: Binary"
Wscript.Echo
Case REG_DWORD
Wscript.Echo "Data Type: DWORD"
Wscript.Echo
Case REG_MULTI_SZ
Wscript.Echo "Data Type: Multi String"
Wscript.Echo
End Select
Next
Monitor Registry Entry Level Events
Set wmiServices = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set wmiSink = WScript.CreateObject("WbemScripting.SWbemSink", "SINK_")
wmiServices.ExecNotificationQueryAsync wmiSink, _
"SELECT * FROM RegistryValueChangeEvent WHERE " & _
"Hive='HKEY_LOCAL_MACHINE' AND " & _
"KeyPath='SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion'" _
& " AND ValueName='CSDVersion'"
WScript.Echo "Listening for Registry Change Events..." & vbCrLf
While(1)
WScript.Sleep 1000
Wend
Sub SINK_OnObjectReady(wmiObject, wmiAsyncContext)
WScript.Echo "Received Registry Change Event" & vbCrLf & _
wmiObject.GetObjectText_()
End Sub
Monitor Registry Subkey Events
Set wmiServices = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\default")
Set wmiSink = WScript.CreateObject("WbemScripting.SWbemSink", "SINK_")
wmiServices.ExecNotificationQueryAsync wmiSink, _
"SELECT * FROM RegistryKeyChangeEvent WHERE Hive='HKEY_LOCAL_MACHINE' " & _
"AND KeyPath='SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion'"
WScript.Echo "Listening for Registry Change Events..." & vbCrLf
While(1)
WScript.Sleep 1000
Wend
Sub SINK_OnObjectReady(wmiObject, wmiAsyncContext)
WScript.Echo "Received Registry Change Event" & vbCrLf & _
wmiObject.GetObjectText_()
End Sub
Monitor Registry Subtree Events
Set wmiServices = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\default")
Set wmiSink = WScript.CreateObject("WbemScripting.SWbemSink", "SINK_")
wmiServices.ExecNotificationQueryAsync wmiSink, _
"SELECT * FROM RegistryTreeChangeEvent WHERE Hive= " _
& "'HKEY_LOCAL_MACHINE' AND RootPath=''"
WScript.Echo "Listening for Registry Change Events..." & vbCrLf
While(1)
WScript.Sleep 1000
Wend
Sub SINK_OnObjectReady(wmiObject, wmiAsyncContext)
WScript.Echo "Received Registry Change Event" & vbCrLf & _
wmiObject.GetObjectText_()
End Sub
Read a Binary Registry Value
Const HKEY_LOCAL_MACHINE = &H80000002
strComputer = "."
Set StdOut = WScript.StdOut
Set oReg=GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & _
strComputer & "\root\default:StdRegProv")
strKeyPath = "SOFTWARE\Microsoft\Windows NT\CurrentVersion"
strValueName = "LicenseInfo"
oReg.GetBinaryValue HKEY_LOCAL_MACHINE,strKeyPath, _
strValueName,strValue
For i = lBound(strValue) to uBound(strValue)
StdOut.WriteLinestrValue(i)
Next
Read a MultiString Value
Const HKEY_LOCAL_MACHINE = &H80000002
strComputer = "."
Set oReg=GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & _
strComputer & "\root\default:StdRegProv")
strKeyPath = "SYSTEM\CurrentControlSet\Services\Eventlog\System"
strValueName = "Sources"
oReg.GetMultiStringValue HKEY_LOCAL_MACHINE,strKeyPath, _
strValueName,arrValues
For Each strValue In arrValues
Wscript.EchostrValue
Next
Read an Expanded String Registry Value
Const HKEY_LOCAL_MACHINE = &H80000002
strComputer = "."
Set oReg=GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & _
strComputer & "\root\default:StdRegProv")
strKeyPath = "SOFTWARE\Microsoft\Windows NT\CurrentVersion\WinLogon"
strValueName = "UIHost"
oReg.GetExpandedStringValue HKEY_LOCAL_MACHINE,strKeyPath, _
strValueName,strValue
Wscript.Echo"The Windows logon UI host is: " & strValue
Read String and DWORD Registry Values
Const HKEY_CURRENT_USER = &H80000001
Const HKEY_LOCAL_MACHINE = &H80000002
strComputer = "."
Set oReg=GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & _
strComputer & "\root\default:StdRegProv")
strKeyPath = "Console"
strValueName = "HistoryBufferSize"
oReg.GetDWORDValue HKEY_CURRENT_USER,strKeyPath,strValueName,dwValue
Wscript.Echo "Current History Buffer Size: " & dwValue
strKeyPath = "SOFTWARE\Microsoft\Windows Script Host\Settings"
strValueName = "TrustPolicy"
oReg.GetStringValue HKEY_LOCAL_MACHINE,strKeyPath,strValueName,strValue
Wscript.Echo "Current WSH Trust Policy Value: " & strValue
'EnumerateRegistryKeysRecursively
ConstHKEY_CLASSES_ROOT=&H80000000
ConstHKEY_CURRENT_USER=&H80000001
ConstHKEY_LOCAL_MACHINE=&H80000002
ConstHKEY_USERS=&H80000003
ConstHKEY_CURRENT_CONFIG=&H80000005
strKeyPath="SOFTWARE\Classes\VBSFile"
Setreg=GetObject("winmgmts://./root/default:StdRegProv")
EnumerateKeysHKEY_LOCAL_MACHINE,strKeyPath
SubEnumerateKeys(hive,key)
WScript.Echokey
reg.EnumKeyhive,key,arrSubKeys
IfNotIsNull(arrSubKeys)Then
ForEachsubkeyInarrSubKeys
EnumerateKeyshive,key&"\"&subkey
Next
EndIf
EndSub
Delete a Service
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colListOfServices = objWMIService.ExecQuery _
("Select * from Win32_Service Where Name = 'DbService'")
For Each objService in colListOfServices
objService.StopService()
objService.Delete()
Next
Install a Service
Const OWN_PROCESS = 16
Const NOT_INTERACTIVE = False
Const NORMAL_ERROR_CONTROL = 2
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set objService = objWMIService.Get("Win32_BaseService")
errReturn = objService.Create("DbService" ,"Personnel Database" , _
"c:\windows\system32\db.exe", OWN_PROCESS, NORMAL_ERROR_CONTROL,_
"Manual", NOT_INTERACTIVE, "NT AUTHORITY\LocalService", "")
List Antecedent Services for a Single Service
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colServiceList = objWMIService.ExecQuery("Associators of " _
& "{Win32_service.Name='SMTPSVC'} Where " _
& "AssocClass=Win32_DependentService " & "Role=Dependent")
For Each objService in colServiceList
Wscript.Echo objService.DisplayName
Next
List Dependent Services for a Single Service
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colServiceList = objWMIService.ExecQuery("Associators of " _
& "{Win32_Service.Name='rasman'} Where " _
& "AssocClass=Win32_DependentService " & "Role=Antecedent" )
For Each objService in colServiceList
Wscript.Echo objService.DisplayName
Next
List Dependent Services for All Services
Const ForAppending = 8
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objLogFile = _
objFSO.OpenTextFile("c:\scripts\service_dependencies.csv", _
ForAppending, True)
objLogFile.Write("Service Dependencies")
objLogFile.Writeline
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colListOfServices = objWMIService.ExecQuery _
("Select * from Win32_Service")
For Each objService in colListofServices
objServiceRegistryName = objService.Name
objServiceDisplayName = objService.DisplayName
Set colServiceList = objWMIService.ExecQuery("Associators of " _
& "{Win32_Service.Name='" & objServiceRegistryName & "'} Where AssocClass=Win32_DependentService Role=Antecedent" )
If colServiceList.Count = 0 then
objLogFile.Write(objServiceDisplayName) & ", None"
objLogFile.Writeline
Else
For Each objDependentService in colServiceList
objLogFile.Write(objServiceDisplayName) & ","
objLogFile.Write(objDependentService.DisplayName)
Next
objLogFile.WriteLine
End If
Next
objLogFile.Close
List Inactive Services
strComputer = "."
Set objWMIService = GetObject("winmgmts:" & _
"{impersonationLevel=Impersonate}!\\" & strComputer & "\root\cimv2")
Set colStoppedServices = objWMIService.ExecQuery _
("Select * From Win32_Service Where State <> 'Running'")
For Each objService in colStoppedServices
Wscript.Echo objService.DisplayName& " = " & objService.State
Next
List Service Load Order Groups
On Error Resume Next
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colItems = objWMIService.ExecQuery("Select * from Win32_LoadOrderGroup")
For Each objItem in colItems
Wscript.Echo "Driver Enabled: " & objItem.DriverEnabled
Wscript.Echo "Group Order: " & objItem.GroupOrder
Wscript.Echo "Name: " & objItem.Name
Wscript.Echo
Next
List Service Properties
Const ForAppending = 8
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objLogFile = objFSO.OpenTextFile("c:\scripts\service_list.csv", _
ForAppending, True)
objLogFile.Write _
("System Name,Service Name,Service Type,Service State, Exit " _
& "Code,Process ID,Can Be Paused,Can Be Stopped,Caption," _
& "Description,Can Interact with Desktop,Display Name,Error " _
& "Control, Executable Path Name,Service Started," _
& "Start Mode,Account Name ")
objLogFile.Writeline
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colListOfServices = objWMIService.ExecQuery _
("Select * from Win32_Service")
For Each objService in colListOfServices
objLogFile.Write(objService.SystemName) & ","
objLogFile.Write(objService.Name) & ","
objLogFile.Write(objService.ServiceType) & ","
objLogFile.Write(objService.State) & ","
objLogFile.Write(objService.ExitCode) & ","
objLogFile.Write(objService.ProcessID) & ","
objLogFile.Write(objService.AcceptPause) & ","
objLogFile.Write(objService.AcceptStop) & ","
objLogFile.Write(objService.Caption) & ","
objLogFile.Write(objService.Description) & ","
objLogFile.Write(objService.DesktopInteract) & ","
objLogFile.Write(objService.DisplayName) & ","
objLogFile.Write(objService.ErrorControl) & ","
objLogFile.Write(objService.PathName) & ","
objLogFile.Write(objService.Started) & ","
objLogFile.Write(objService.StartMode) & ","
objLogFile.Write(objService.StartName) & ","
objLogFile.writeline
Next
objLogFile.Close
List Service Status
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colRunningServices = objWMIService.ExecQuery("Select * from Win32_Service")
For Each objService in colRunningServices
Wscript.Echo objService.DisplayName& VbTab & objService.State
Next
List Service Status Changes as recorded in the System Event Log
Set dtmConvertedDate = CreateObject("WbemScripting.SWbemDateTime")
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colServiceEvents = objWMIService.ExecQuery _
("Select * from Win32_NTLogEvent Where Logfile = 'System' and " _
& "EventCode = '7036'")
For Each strEvent in colServiceEvents
dtmConvertedDate.Value = strEvent.TimeWritten
Wscript.Echo dtmConvertedDate.GetVarDate
Wscript.Echo strEvent.Message
Next
List Services Running in a Process
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colListOfServices = objWMIService.ExecQuery _
("Select * from Win32_Service Where " & _
"PathName = 'C:\\WINDOWS\\system32\\services.exe'")
For Each objService in colListOfServices
Wscript.Echo objService.DisplayName
Next
List Services Running in All Processes
Set objIdDictionary = CreateObject("Scripting.Dictionary")
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colServices = objWMIService.ExecQuery _
("Select * from Win32_Service Where State <> 'Stopped'")
For Each objService in colServices
If objIdDictionary.Exists(objService.ProcessID) Then
Else
objIdDictionary.Add objService.ProcessID, objService.ProcessID
End If
Next
colProcessIDs = objIdDictionary.Items
For i = 0 to objIdDictionary.Count - 1
Set colServices = objWMIService.ExecQuery _
("Select * from Win32_Service Where ProcessID = '" & _
colProcessIDs(i) & "'")
Wscript.Echo "Process ID: " & colProcessIDs(i)
For Each objService in colServices
Wscript.Echo VbTab & objService.DisplayName
Next
Next
List Services that Can be Paused
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colServices = objWMIService.ExecQuery _
("Select * from Win32_Service Where AcceptPause = True")
For Each objService in colServices
Wscript.Echo objService.DisplayName
Next
List Services that Can be Stopped
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colServices = objWMIService.ExecQuery _
("Select * from Win32_Service Where AcceptStop = True")
For Each objService in colServices
Wscript.Echo objService.DisplayName
Next
Modify a Service Account Password
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colServiceList = objWMIService.ExecQuery _
("Select * from Win32_Service Where StartName = '.\\netsvc'")
For Each objService in colServiceList
errReturn = objService.Change( , , , , , , , "password")
Next
Modify Service Accounts
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colServices = objWMIService.ExecQuery _
("SELECT * FROM Win32_Service WHERE StartName = '.\netsvc'")
For Each objService In colServices
errServiceChange = objService.Change _
( , , , , , , "NT AUTHORITY\LocalService" , "")
Next
Modify Service Error Control Codes
Const NORMAL_ERROR_CONTROL = 2
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colServiceList = objWMIService.ExecQuery _
("Select * from Win32_Service where ErrorControl = 'Ignore'")
For Each objService in colServiceList
errReturn = objService.Change( , , , NORMAL_ERROR_CONTROL)
Next
Modify Service Start Options
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colServiceList = objWMIService.ExecQuery _
("Select * from Win32_Service where StartMode = 'Manual'")
For Each objService in colServiceList
errReturnCode = objService.Change( , , , , "Disabled")
Next
Monitor Changes in Service Status
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colServices = objWMIService. _
ExecNotificationQuery("Select * from __instancemodificationevent " _
& "within 30 where TargetInstance isa 'Win32_Service'")
i = 0
Do While i = 0
Set objService = colServices.NextEvent
If objService.TargetInstance.State <> _
objService.PreviousInstance.State Then
Wscript.Echo objService.TargetInstance.Name _
&" is " & objService.TargetInstance.State _
& ". The service previously was " & _
objService.PreviousInstance.State & "."
End If
Loop
Monitor Service Performance
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
set objRefresher = CreateObject("WbemScripting.SWbemRefresher")
Set colDHCPServer = objRefresher.AddEnum(objWMIService, _
"Win32_PerfFormattedData_DHCPServer_DHCPServer").ObjectSet
objRefresher.Refresh
For i = 1 to 60
For Each objDHCPServer in colDHCPServer
Wscript.Echo "Acknowledgements per second: " & _
objDHCPServer.AcksPerSec
Wscript.Echo "Declines per second: " & _
objDHCPServer.DeclinesPerSec
Wscript.Echo "Discovers per second: " & _
objDHCPServer.DiscoversPerSec
Wscript.Echo "Informs per second: " & objDHCPServer.InformsPerSec
Wscript.Echo "Offers per second: " & objDHCPServer.OffersPerSec
Wscript.Echo "Releases per second: " & _
objDHCPServer.ReleasesPerSec
Wscript.Echo "Requests per second: " & _
objDHCPServer.RequestsPerSec
Next
Wscript.Sleep 10000
objRefresher.Refresh
Next
Pause Services Running Under a Specific Account
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colServices = objWMIService.ExecQuery _
("Select * from Win32_Service Where StartName = '.\netsvc'")
For each objService in colServices
errReturnCode = objService.PauseService()
Next
Resume AutoStart Services that are Paused
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colListOfServices = objWMIService.ExecQuery _
("Select * from Win32_Service Where State = 'Paused' and StartMode = 'Auto'")
For Each objService in colListOfServices
objService.ResumeService()
Next
Start a Service and Its Dependents
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colServiceList = objWMIService.ExecQuery _
("Select * from Win32_Service where Name='NetDDE'")
For Each objService in colServiceList
errReturn = objService.StartService()
Next
Wscript.Sleep 20000
Set colServiceList = objWMIService.ExecQuery("Associators of " _
& "{Win32_Service.Name='NetDDE'} Where " _
& "AssocClass=Win32_DependentService " & "Role=Dependent" )
For Each objService in colServiceList
objService.StartService()
Next
Start AutoStart Services that have Stopped
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colListOfServices = objWMIService.ExecQuery _
("Select * from Win32_Service Where State = 'Stopped' and StartMode = " _
& "'Auto'")
For Each objService in colListOfServices
objService.StartService()
Next
Stop a Service and Its Dependents
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colServiceList = objWMIService.ExecQuery("Associators of " _
& "{Win32_Service.Name='NetDDE'} Where " _
& "AssocClass=Win32_DependentService " & "Role=Antecedent" )
For Each objService in colServiceList
objService.StopService()
Next
Wscript.Sleep 20000
Set colServiceList = objWMIService.ExecQuery _
("Select * from Win32_Service where Name='NetDDE'")
For Each objService in colServiceList
errReturn = objService.StopService()
Next
Stop Services Running Under a Specific Account
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colServices = objWMIService.ExecQuery _
("Select * from Win32_Service Where StartName = '.\netsvc'")
For Each objService in colServices
errReturnCode = objService.StopService()
Next
Create a Scheduled Task
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set objNewJob = objWMIService.Get("Win32_ScheduledJob")
errJobCreated = objNewJob.Create _
("Notepad.exe", "********123000.000000-420", _
True , 1 OR 4 OR 16, , , JobID)
Wscript.Echo errJobCreated
Delete a Scheduled Task
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set objInstance = objWMIService.Get("Win32_ScheduledJob.JobID=1")
err = objInstance.Delete
Delete All Scheduled Tasks
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colScheduledTasks = objWMIService.ExecQuery _
("Select * from Win32_ScheduledJob")
For Each objTask in colScheduledTasks
intJobID = objTask.JobID
Set objInstance = objWMIService.Get _
("Win32_ScheduledJob.JobID=" & intJobID)
objInstance.Delete
Next
List Scheduled Tasks
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colScheduledJobs = objWMIService.ExecQuery _
("Select * from Win32_ScheduledJob")
For Each objJob in colScheduledJobs
Wscript.Echo "Caption: " & objJob.Caption
Wscript.Echo "Command: " & objJob.Command
Wscript.Echo "Days of Month: " & objJob.DaysOfMonth
Wscript.Echo "Days of Week: " & objJob.DaysOfWeek
Wscript.Echo "Description: " & objJob.Description
Wscript.Echo "Elapsed Time: " & objJob.ElapsedTime
Wscript.Echo "Install Date: " & objJob.InstallDate
Wscript.Echo "Interact with Desktop: " & objJob.InteractWithDesktop
Wscript.Echo "Job ID: " & objJob.JobID
Wscript.Echo "Job Status: " & objJob.JobStatus
Wscript.Echo "Name: " & objJob.Name
Wscript.Echo "Notify: " & objJob.Notify
Wscript.Echo "Owner: " & objJob.Owner
Wscript.Echo "Priority: " & objJob.Priority
Wscript.Echo "Run Repeatedly: " & objJob.RunRepeatedly
Wscript.Echo "Start Time: " & objJob.StartTime
Wscript.Echo "Status: " & objJob.Status
Wscript.Echo "Time Submitted: " & objJob.TimeSubmitted
Wscript.Echo "Until Time: " & objJob.UntilTime
Next
List Operating System Properties
Set dtmConvertedDate = CreateObject("WbemScripting.SWbemDateTime")
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colOperatingSystems = objWMIService.ExecQuery _
("Select * from Win32_OperatingSystem")
For Each objOperatingSystem in colOperatingSystems
Wscript.Echo "Boot Device: " & objOperatingSystem.BootDevice
Wscript.Echo "Build Number: " & objOperatingSystem.BuildNumber
Wscript.Echo "Build Type: " & objOperatingSystem.BuildType
Wscript.Echo "Caption: " & objOperatingSystem.Caption
Wscript.Echo "Code Set: " & objOperatingSystem.CodeSet
Wscript.Echo "Country Code: " & objOperatingSystem.CountryCode
Wscript.Echo "Debug: " & objOperatingSystem.Debug
Wscript.Echo "Encryption Level: " & objOperatingSystem.EncryptionLevel
dtmConvertedDate.Value = objOperatingSystem.InstallDate
dtmInstallDate = dtmConvertedDate.GetVarDate
Wscript.Echo "Install Date: " & dtmInstallDate
Wscript.Echo "Licensed Users: " & _
objOperatingSystem.NumberOfLicensedUsers
Wscript.Echo "Organization: " & objOperatingSystem.Organization
Wscript.Echo "OS Language: " & objOperatingSystem.OSLanguage
Wscript.Echo "OS Product Suite: " & objOperatingSystem.OSProductSuite
Wscript.Echo "OS Type: " & objOperatingSystem.OSType
Wscript.Echo "Primary: " & objOperatingSystem.Primary
Wscript.Echo "Registered User: " & objOperatingSystem.RegisteredUser
Wscript.Echo "Serial Number: " & objOperatingSystem.SerialNumber
Wscript.Echo "Version: " & objOperatingSystem.Version
Next
List Operating System and Service Pack Information
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colOSes = objWMIService.ExecQuery("Select * from Win32_OperatingSystem")
For Each objOS in colOSes
Wscript.Echo "Computer Name: " & objOS.CSName
Wscript.Echo "Caption: " & objOS.Caption
'Name
Wscript.Echo "Version: " & objOS.Version
'Version & build
Wscript.Echo "Build Number: " & objOS.BuildNumber
'Build
Wscript.Echo "Build Type: " & objOS.BuildType
Wscript.Echo "OS Type: " & objOS.OSType
Wscript.Echo "Other Type Description: " & objOS.OtherTypeDescription
WScript.Echo "Service Pack: " & objOS.ServicePackMajorVersion & "." & _
objOS.ServicePackMinorVersion
Next
Add a User to an ADAM Group
Add a User to the ADAM Administrators Group
Add All Users in an ADAM OU to a Group
Create a Child ADAM OU
Create an ADAM Contact Account
Create an ADAM Container
Create an ADAM Group
Create an ADAM inetOrgPerson Account
Create an ADAM OU
Create an ADAM User Account
Delete an ADAM Contact Account
Delete an ADAM Container
Delete an ADAM Group
Delete an ADAM inetOrgPerson Account
Delete an ADAM OU
Delete an ADAM User Account
List All the Contacts in an ADAM OU
Modify an ADAM Contact Account Property
Modify an ADAM Container Account Property
Modify an ADAM Group Account Property
Modify an ADAM inetOrgPerson Account Property
Modify an ADAM OU Property
Modify an ADAM User Account Expiration Date
Modify an ADAM User Account Property
Remove a User from an ADAM Group
Rename an ADAM User Account
List All ADAM Contact Attributes and Values
List All ADAM Container Attributes and Values
List All ADAM Group Attributes and Values
List All ADAM inetOrgPerson Attributes and Values
List All ADAM OU Attributes and Values
List All ADAM OUs
List All ADAM User Attributes and Values
List All the Accounts in an ADAM OU
List All the Groups in an ADAM OU
List All the inetOrgPersons in an ADAM OU
List All the Members of an ADAM Group
List All the Users in an ADAM OU
List the ADAM Contact Schema
List the ADAM Container Schema
List the ADAM Group Schema
List the ADAM inetOrgPerson Schema
List the ADAM OU Schema
List the ADAM User Schema
List the Groups an ADAM User Belongs to
Verify that ADAM is Installed
Create a Local Group on a Computer
Delete a Local Group
Delete a User from a Local Group
List All the Local Groups a User Belongs To
List Local Groups and Their Members
Add a User to a Local Group
Add Users to a Local Group
List Members of a Local Group
Delete Users from a Local Group
List Local Group Attributes
List Account Expiration Dates in a Windows NT 4.0 Domain
Change the Local Administrator Password
Create a Local User Account
Delete a Local User Account
Disable a Local User Account
Disable the Guest Account
Enable the Guest Account
List All the User Accounts in an NT 4.0 Domain
List Attribute Values for a Local User Account
List Local Groups Using WMI
List Local User Accounts Using WMI
List User Accounts on the Local Computer
List userFlag Values for a Local User Account
Modify a Local User Account Password So It Never Expires
Modify a Local User Account So It Never Expires
Modify the Expiration Date for a Local User Account
Require a Local User to Change His or Her Password
Verify Whether an Account Exists in a Windows NT 4.0 Domain
Add a User to a Local Group
Add a Printer Connection
Set WshNetwork = CreateObject("WScript.Network")
WshNetwork.AddWindowsPrinterConnection "\\PrintServer1\Xerox300"
WshNetwork.SetDefaultPrinter "\\PrintServer1\Xerox300"
Assign a Default Printer
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colInstalledPrinters =objWMIService.ExecQuery _
("Select * from Win32_Printer Where Name = 'ScriptedPrinter'")
For Each objPrinter in colInstalledPrinters
objPrinter.SetDefaultPrinter()
Next
Assign a Default Printer Based on Queue Length
intSmallestQueue = 1000
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colPrintQueues =objWMIService.ExecQuery _
("Select * from Win32_PerfFormattedData_Spooler_PrintQueue " _
& "Where Name <> '_Total'")
For Each objPrintQueue in colPrintQueues
intCurrentQueue = objPrintQueue.Jobs + objPrintQueue.JobsSpooling
If intCurrentQueue <= intSmallestQueue Then
strNewDefault = objPrintQueue.Name
intSmallestQueue = intCurrentQueue
End If
Next
Set colInstalledPrinters =objWMIService.ExecQuery _
("Select * from Win32_Printer Where Name = '" & strNewDefault & "'")
For Each objPrinter in colInstalledPrinters
objPrinter.SetDefaultPrinter()
Next
Delete a Printer
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colInstalledPrinters =objWMIService.ExecQuery _
("Select * from Win32_Printer where DeviceID = 'ScriptedPrinter'")
For Each objPrinter in colInstalledPrinters
objPrinter.Delete_
Next
Delete a Printer Connection
Set objNetwork = WScript.CreateObject("WScript.Network")
objNetwork.RemovePrinterConnection "\\PrintServer\xerox3006"
List Printer Connections
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colInstalledPrinters =objWMIService.ExecQuery _
("Select * from Win32_Printer")
For Each objPrinter in colInstalledPrinters
Wscript.Echo "Name: " & objPrinter.Name
Wscript.Echo "Location: " & objPrinter.Location
Wscript.Echo "Default: " & objPrinter.Default
Next
Rename a Printer
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colPrinters =objWMIService.ExecQuery _
("Select * from Win32_Printer Where DeviceID = 'HP LaserJet 4Si M'")
For Each objPrinter in colPrinters
objPrinter.RenamePrinter("ArtDepartmentPrinter")
Next
Set colPrinters = objWMIService.ExecQuery _
("Select * From Win32_Printer Where DeviceID = 'ArtDepartmentPrinter' ")
For Each objPrinter in colPrinters
objPrinter.ShareName = "ArtDepartmentPrinter"
objPrinter.Put_
Next
Delete All Large Print Jobs
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colPrintJobs =objWMIService.ExecQuery _
("Select * from Win32_PrintJob Where Size > 1000000")
For Each objPrintJob in colPrintJobs
objPrintJob.Delete_
Next
Delete All Printers on a Print Server
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colInstalledPrinters =objWMIService.ExecQuery _
("Select * from Win32_Printer")
For Each objPrinter in colInstalledPrinters
objPrinter.Delete_
Next
Delete Specific Printers
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colInstalledPrinters =objWMIService.ExecQuery _
("Select * from Win32_Printer Where DriverName = 'HP QuietJet'")
For Each objPrinter in colInstalledPrinters
objPrinter.Delete_
Next
Install a Printer
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set objPrinter = objWMIService.Get("Win32_Printer").SpawnInstance_
objPrinter.DriverName = "HP LaserJet 4000 Series PS"
objPrinter.PortName = "IP_169.254.110.160"
objPrinter.DeviceID = "ScriptedPrinter"
objPrinter.Location = "USA/Redmond/Building 37/Room 114"
objPrinter.Network = True
objPrinter.Shared = True
objPrinter.ShareName = "ScriptedPrinter"
objPrinter.Put_
Install Multiple Printers for One Print Device
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set objPrinter = objWMIService.Get("Win32_Printer").SpawnInstance_
objPrinter.DriverName = "HP LaserJet 4000 Series PS"
objPrinter.PortName = "IP_169.254.110.160"
objPrinter.DeviceID = "PublicPrinter"
objPrinter.Location = "USA/Redmond/Building 37/Room 114"
objPrinter.Network = True
objPrinter.Shared = True
objPrinter.ShareName = "PublicPrinter"
objPrinter.Put_
objPrinter.DriverName = "HP LaserJet 4000 Series PS"
objPrinter.PortName = "IP_169.254.110.160"
objPrinter.DeviceID = "PrivatePrinter"
objPrinter.Location = "USA/Redmond/Building 37/Room 114"
objPrinter.Priority = 2
objPrinter.Network = True
objPrinter.Shared = True
objPrinter.Hidden = True
objPrinter.ShareName = "PrivatePrinter"
objPrinter.Put_
List All Published Printers
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.CommandText = "Select printerName, serverName from " _
& " 'LDAP://DC=fabrikam,DC=com'where objectClass='printQueue'"
objCommand.Properties("Page Size") = 1000
objCommand.Properties("Searchscope") = ADS_SCOPE_SUBTREE
Set objRecordSet = objCommand.Execute
objRecordSet.MoveFirst
Do Until objRecordSet.EOF
Wscript.Echo "Printer Name: " & objRecordSet.Fields("printerName").Value
Wscript.Echo "Server Name: " & objRecordSet.Fields("serverName").Value
objRecordSet.MoveNext
Loop
List Print Queue Statistics
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colPrintJobs =objWMIService.ExecQuery _
("Select * from Win32_PrintJob")
For Each objPrintJob in colPrintJobs
intTotalJobs = intTotalJobs + 1
intTotalPages = intTotalPages + objPrintJob.TotalPages
If objPrintJob.TotalPages > intMaxPrintJob Then
intMaxPrintJob = objPrintJob.TotalPages
End If
Next
Wscript.Echo "Total print jobs in queue: " & intTotalJobs
Wscript.Echo "Total pages in queue: " & intTotalPages
Wscript.Echo "Largest print job in queue: " & intMaxPrintJob
List Print Queue Statistics
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colPrintQueues =objWMIService.ExecQuery _
("Select * from Win32_PerfFormattedData_Spooler_PrintQueue Where " & _
"Name <> '_Total'")
For Each objPrintQueue in colPrintQueues
Wscript.Echo "Name: " & objPrintQueue.Name
Wscript.Echo "Jobs: " & objPrintQueue.Jobs
Wscript.Echo "Current jobs spooling: " & objPrintQueue.JobsSpooling
Wscript.Echo "Maximum jobs spooling: " & objPrintQueue.MaxJobsSpooling
Wscript.Echo "Total jobs printed: " & objPrintQueue.TotalJobsPrinted
Wscript.Echo "Job errors: " & objPrintQueue.JobErrors
Wscript.Echo "Not ready errors: " & objPrintQueue.NotReadyErrors
Wscript.Echo "Out of paper errors: " & objPrintQueue.OutOfPaperErrors
Next
List Printer Capabilities
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colInstalledPrinters =objWMIService.ExecQuery _
("Select * from Win32_PrinterConfiguration")
For Each objPrinter in colInstalledPrinters
Wscript.Echo "Name: " & objPrinter.Name
Wscript.Echo "Collate: " & objPrinter.Collate
Wscript.Echo "Copies: " & objPrinter.Copies
Wscript.Echo "Driver Version: " & objPrinter.DriverVersion
Wscript.Echo "Duplex: " & objPrinter.Duplex
Wscript.Echo "Horizontal Resolution: " & _
objPrinter.HorizontalResolution
If objPrinter.Orientation = 1 Then
strOrientation ="Portrait"
Else
strOrientation = "Landscape"
End If
Wscript.Echo "Orientation : " & strOrientation
Wscript.Echo "Paper Length: " & objPrinter.PaperLength / 254
Wscript.Echo "Paper Width: " & objPrinter.PaperWidth / 254
Wscript.Echo "Print Quality: " & objPrinter.PrintQuality
Wscript.Echo "Scale: " & objPrinter.Scale
Wscript.Echo "Specification Version: " & _
objPrinter.SpecificationVersion
If objPrinter.TTOption = 1 Then
strTTOption = "Print TrueType fonts as graphics."
Elseif objPrinter.TTOption = 2 Then
strTTOption = "Download TrueType fonts as soft fonts."
Else
strTTOption = "Substitute device fonts for TrueType fonts."
End If
Wscript.Echo "True Type Option: " & strTTOption
Wscript.Echo "Vertical Resolution: " & objPrinter.VerticalResolution
Next
Modify Print Job Priority
Set objPrinter = GetObject _
("WinNT://atl-dc-02/ArtDepartmentPrinter, printqueue")
For Each objPrintJob in objPrinter.PrintJobs
If objPrintJob.Size > 400000 Then
objPrintJob.Put "Priority" , 2
objPrintJob.SetInfo
Else
objPrintJob.Put "Priority" , 3
objPrintJob.SetInfo
End If
Next
Modify Print Job Start Time
Set objPrinter = GetObject("WinNT://atl-dc-02/ArtDepartmentPrinter,printqueue")
For Each objPrintQueue in objPrinter.PrintJobs
If objPrintQueue.Size > 400000 Then
objPrintQueue.Put "StartTime" , TimeValue("2:00:00 AM")
objPrintQueue.SetInfo
End If
Next
Modify Printer Availability
dtmStartTime= "********080000.000000+000"
dtmEndTime= "********180000.000000+000"
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colPrinters = objWMIService.ExecQuery _
("Select * From Win32_Printer Where DeviceID = 'ArtDepartmentPrinter' ")
For Each objPrinter in colPrinters
objPrinter.StartTime = dtmStartTime
objPrinter.UntilTime = dtmEndTime
objPrinter.Put_
Next
Modify Printer Locations
Set objOU = GetObject("LDAP://OU = Finance, DC = fabrikam, DC = com")
objOU.Filter = Array("printqueue")
For Each objPrintQueue In objOU
objPrintQueue.Put "Location" , "USA/Redmond/Finance Building"
objPrintQueue.SetInfo
Next
Modify Printer Priority
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colPrinters = objWMIService.ExecQuery _
("Select * From Win32_Printer where DeviceID = 'ArtDepartmentPrinter' ")
For Each objPrinter in colPrinters
objPrinter.Priority = 2
objPrinter.Put_
Next
Monitor Print Job Status
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colPrintJobs =objWMIService.ExecQuery _
("Select * from Win32_PrintJob")
Wscript.Echo "Print Queue, Job ID, Owner, Total Pages"
For Each objPrintJob in colPrintJobs
strPrinter = Split(objPrintJob.Name,",",-1,1)
Wscript.Echo strPrinter(0) & ", " & _
objPrintJob.JobID & ", " &objPrintJob.Owner & ", " _
& objPrintJob.TotalPages
Next
Monitor Print Queue Times
Const USE_LOCAL_TIME = True
Set DateTime = CreateObject("WbemScripting.SWbemDateTime")
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colInstalledPrinters =objWMIService.ExecQuery _
("Select * from Win32_PrintJob")
Wscript.Echo "Print Queue, Job ID, TimeSubmitted, Total Pages"
For Each objPrinter in colInstalledPrinters
DateTime.Value = objPrinter.TimeSubmitted
dtmActualTime = DateTime.GetVarDate(USE_LOCAL_TIME)
TimeinQueue = DateDiff("n", actualTime, Now)
If TimeinQueue > 15 Then
strPrinterName = Split(objPrinter.Name,",",-1,1)
Wscript.Echo strPrinterName(0) & ", " _
& objPrinter.JobID & ", " & dtmActualTime & ", " & _
objPrinter.TotalPages
End If
Next
Monitor Print Queues
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colPrintQueues =objWMIService.ExecQuery _
("Select * from Win32_PerfFormattedData_Spooler_PrintQueue " & _
"Where Name <> '_Total'")
For Each objPrintQueue in colPrintQueues
Wscript.Echo "Name: " & objPrintQueue.Name
Wscript.Echo "Current jobs: " & objPrintQueue.Jobs
Next
Monitor Printer Status
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colInstalledPrinters =objWMIService.ExecQuery _
("Select * from Win32_Printer")
For Each objPrinter in colInstalledPrinters
Wscript.Echo"Name: " & objPrinter.Name
Wscript.Echo"Location: " & objPrinter.Location
Select Case objPrinter.PrinterStatus
Case 1
strPrinterStatus = "Other"
Case 2
strPrinterStatus = "Unknown"
Case 3
strPrinterStatus = "Idle"
Case 4
strPrinterStatus = "Printing"
Case 5
strPrinterStatus = "Warmup"
End Select
Wscript.Echo"Printer Status: " & strPrinterStatus
Wscript.Echo"Server Name: " & objPrinter.ServerName
Wscript.Echo"Share Name: " & objPrinter.ShareName
Wscript.Echo
Next
Monitor Printer Status
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colInstalledPrinters =objWMIService.ExecQuery _
("Select * from Win32_Printer Where PrinterStatus = '1' " _
& "or PrinterStatus = '2'")
If colInstalledPrinters.Count = 0 Then
Wscript.Echo "All printers are functioning correctly."
Else
For Each objPrinter in colInstalledPrinters
Wscript.Echo "Printer " & objprinter.Name & " is not responding."
Next
End If
Monitor Printers with a Temporary Event Subscription
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colPrinters = objWMIService. _
ExecNotificationQuery("Select * from __instancemodificationevent " _
& "within 30 where TargetInstance isa 'Win32_Printer'")
i = 0
Do While i = 0
Set objPrinter = colPrinters.NextEvent
If objPrinter.TargetInstance.PrinterStatus <> _
objPrinter.PreviousInstance.PrinterStatus Then
Select Case objPrinter.TargetInstance.PrinterStatus
Case 1 strCurrentState = "Other"
Case 2 strCurrentState = "Unknown"
Case 3 strCurrentState = "Idle"
Case 4 strCurrentState = "Printing"
Case 5 strCurrentState = "Warming Up"
End Select
Select Case objPrinter.PreviousInstance.PrinterStatus
Case 1 strPreviousState = "Other"
Case 2 strPreviousState = "Unknown"
Case 3 strPreviousState = "Idle"
Case 4 strPreviousState = "Printing"
Case 5 strPreviousState = "Warming Up"
End Select
Wscript.Echo objPrinter.TargetInstance.Name _
&" is " & strCurrentState _
& ". The printer previously was " & strPreviousState & "."
End If
Loop
Monitor Spooler Print Queue Performance
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
set objRefresher = CreateObject("WbemScripting.SWbemRefresher")
Set colItems = objRefresher.AddEnum _
(objWMIService, "Win32_PerfFormattedData_Spooler_PrintQueue").objectSet
objRefresher.Refresh
For i = 1 to 5
For Each objItem in colItems
Wscript.Echo "Add Network Printer Calls: " & _
objItem.AddNetworkPrinterCalls
Wscript.Echo "Bytes Printed Per Second: " & objItem.BytesPrintedPersec
Wscript.Echo "Caption: " & objItem.Caption
Wscript.Echo "Description: " & objItem.Description
Wscript.Echo "Enumerate Network Printer Calls: " & _
objItem.EnumerateNetworkPrinterCalls
Wscript.Echo "Job Errors: " & objItem.JobErrors
Wscript.Echo "Jobs: " & objItem.Jobs
Wscript.Echo "Jobs Spooling: " & objItem.JobsSpooling
Wscript.Echo "Maximum Jobs Spooling: " & objItem.MaxJobsSpooling
Wscript.Echo "Maximum References: " & objItem.MaxReferences
Wscript.Echo "Name: " & objItem.Name
Wscript.Echo "Not-Ready Errors: " & objItem.NotReadyErrors
Wscript.Echo "Out-of-Paper Errors: " & objItem.OutofPaperErrors
Wscript.Echo "References: " & objItem.References
Wscript.Echo "Total Jobs Printed: " & objItem.TotalJobsPrinted
Wscript.Echo "Total Pages Printed: " & objItem.TotalPagesPrinted
Wscript.Sleep 2000
objRefresher.Refresh
Next
Next
Monitor the Print Service
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colRunningServices =objWMIService.ExecQuery _
("Select * from Win32_Service Where Name = 'Spooler'")
For Each objService in colRunningServices
Wscript.Echo objService.DisplayName & " -- " & objService.State
Next
Notify Users When a Print Queue is Purged
Set WshShell = Wscript.CreateObject("Wscript.Shell")
Set objDictionary = CreateObject("Scripting.Dictionary")
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colInstalledPrintJobs =objWMIService.ExecQuery _
("Select * from Win32_PrintJob")
For Each objPrintJob in colInstalledPrintJobs
strPrinterName = Split(objPrintJob.Name,",",-1,1)
If objDictionary.Exists(objPrintJob.Notify) Then
Else
objDictionary.Add objPrintJob.Notify, strPrinterName(0)
End If
Next
arrKeys = objDictionary.Keys
arrItems = objDictionary.Items
For i = 0 to objDictionary.Count - 1
Message = "The documents you were printing on printer "
Message = Message & arrItems(i)
Message = Message & " had to be deleted from the print queue. "
Message = Message & "You will need to reprint these documents."
CommandString = "%comspec% /c msg " & arrKeys(i) & " " & Chr(34) _
& Message & Chr(34)
WshShell.Run CommandString, 0, True
Next
Set colInstalledPrinters = objWMIService.ExecQuery _
("Select * from Win32_Printer")
For Each objPrinter in colInstalledPrinters
objPrinter.CancelAllJobs()
Next
Pause a Printer
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colInstalledPrinters =objWMIService.ExecQuery _
("Select * from Win32_Printer Where Name = 'ArtDepartmentPrinter'")
For Each objPrinter in colInstalledPrinters
ObjPrinter.Pause()
Next
Pause All Print Jobs
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colPrintJobs =objWMIService.ExecQuery _
("Select * from Win32_PrintJob")
For Each objPrintJob in colPrintJobs
objPrintJob.Pause
Next
Pause All Printers with Empty Print Queues
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colInstalledPrinters =objWMIService.ExecQuery _
("Select * from Win32_Printer")
For Each objPrinter in colInstalledPrinters
Set colPrintJobs = objWMIService.ExecQuery _
("Select * from Win32_PerfFormattedData_Spooler_PrintQueue " _
& "Where Name = '" & objPrinter.Name & "'")
For Each objPrintQueue in colPrintJobs
If objPrintQueue.Jobs = 0 and objPrintQueue.Name <> "_Total" Then
objPrinter.Pause()
End If
Next
Next
Purge a Print Queue
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colInstalledPrinters =objWMIService.ExecQuery _
("Select * from Win32_Printer Where Name = 'HP QuietJet'")
For Each objPrinter in colInstalledPrinters
objPrinter.CancelAllJobs()
Next
Rename a Printer Published in Active Directory
Set objOU = GetObject("LDAP://ou=HR,dc=NA,dc=fabrikam,dc=com")
objOU.MoveHere _
"LDAP://cn=Printer1,ou=HR,dc=NA,dc=fabrikam,dc=com", "cn=HRPrn1"
Resume a Paused Printer
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colInstalledPrinters =objWMIService.ExecQuery _
("Select * from Win32_Printer Where Name = 'ArtDepartmentPrinter'")
For Each objPrinter in colInstalledPrinters
ObjPrinter.Resume()
Next
Resume All Paused Printers
Const PRINTER_IS_PAUSED = 8
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colInstalledPrinters =objWMIService.ExecQuery _
("Select * from Win32_Printer where ExtendedPrinterStatus = 8")
For Each objPrinter in colInstalledPrinters
ObjPrinter.Resume()
Next
Resume All Print Jobs
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colPrintJobs =objWMIService.ExecQuery _
("Select * from Win32_PrintJob")
For Each objPrintJob in colPrintJobs
objPrintJob.Resume
Next
Search Active Directory for Specific Printers
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.CommandText = "Select printerName, serverName from " _
& "'LDAP://DC=fabrikam,DC=com'where objectClass='printQueue' and " _
& " Priority = 2 "
objCommand.Properties("Page Size") = 1000
objCommand.Properties("Searchscope") = ADS_SCOPE_SUBTREE
Set objRecordSet = objCommand.Execute
objRecordSet.MoveFirst
Do Until objRecordSet.EOF
Wscript.Echo "Printer Name: " & objRecordSet.Fields("printerName").Value
Wscript.Echo "Server Name: " & objRecordSet.Fields("serverName").Value
objRecordSet.MoveNext
Loop
Transfer Print Jobs to a Different Print Queue
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set objPrinter = objWMIService.Get _
("Win32_Printer.DeviceID='ArtDepartmentPrinter'")
objPrinter.PortName = "IP_192.168.1.10"
objPrinter.Put_
Update Printer Locations
Set objOU = GetObject("LDAP://OU=Finance, DC=fabrikam, DC=com")
objOU.Filter = Array("printqueue")
For Each objPrintQueue In objOU
strNewLocation = "Redmond/" & objPrintQueue.Location
objPrintQueue.Put "Location" , strNewLocation
objPrintQueue.SetInfo
Next
Delete A Printer Port
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colInstalledPorts =objWMIService.ExecQuery _
("Select * from Win32_TCPIPPrinterPort Where Name = 'IP_169.254.110.14'")
For Each objPort in colInstalledPorts
objPort.Delete
Next
Delete Unused Printer Ports
Set objDictionary = CreateObject("Scripting.Dictionary")
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colPrinters =objWMIService.ExecQuery _
("Select * from Win32_Printer")
For Each objPrinter in colPrinters
objDictionary.Add objPrinter.PortName, objPrinter.PortName
Next
Set colPorts = objWMIService.ExecQuery _
("Select * from Win32_TCPIPPrinterPort")
For Each objPort in colPorts
If objDictionary.Exists(objPort.Name) Then
Else
ObjPort.Delete_
End If
Next
Install a Printer Driver not Found in Drivers Cab
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
objWMIService.Security_.Privileges.AddAsString "SeLoadDriverPrivilege", True
Set objDriver = objWMIService.Get("Win32_PrinterDriver")
objDriver.Name = "NewPrinter Model 2900"
objDriver.SupportedPlatform = "Windows NT x86"
objDriver.Version = "3"
objDriverPath = "C:\Scripts\NewPrinter.dll"
objInfname = "C:\Scripts\NewPrinter.inf"
intResult = objDriver.AddPrinterDriver(objDriver)
Install Printer Drivers
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set objDriver = objWMIService.Get("Win32_PrinterDriver")
objWMIService.Security_.Privileges.AddAsString "SeLoadDriverPrivilege", True
objDriver.Name = "Apple LaserWriter 8500"
objDriver.SupportedPlatform = "Windows NT x86"
objDriver.Version = "3"
errResult = objDriver.AddPrinterDriver(objDriver)
Install Printer Ports
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set objNewPort = objWMIService.Get _
("Win32_TCPIPPrinterPort").SpawnInstance_
objNewPort.Name = "IP_169.254.110.14"
objNewPort.Protocol = 1
objNewPort.HostAddress = "169.254.110.14"
objNewPort.PortNumber = "9999"
objNewPort.SNMPEnabled = False
objNewPort.Put_
List Printer Drivers
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colInstalledPrinters =objWMIService.ExecQuery _
("Select * from Win32_PrinterDriver")
For each objPrinter in colInstalledPrinters
Wscript.Echo "Configuration File: " & objPrinter.ConfigFile
Wscript.Echo "Data File: " & objPrinter.DataFile
Wscript.Echo "Description: " & objPrinter.Description
Wscript.Echo "Driver Path: " & objPrinter.DriverPath
Wscript.Echo "File Path: " & objPrinter.FilePath
Wscript.Echo "Help File: " & objPrinter.HelpFile
Wscript.Echo "INF Name: " & objPrinter.InfName
Wscript.Echo "Monitor Name: " & objPrinter.MonitorName
Wscript.Echo "Name: " & objPrinter.Name
Wscript.Echo "OEM Url: " & objPrinter.OEMUrl
Wscript.Echo "Supported Platform: " & objPrinter.SupportedPlatform
Wscript.Echo "Version: " & objPrinter.Version
Next
List Printer Port Availability
Set objDictionary = CreateObject("Scripting.Dictionary")
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colPrinters =objWMIService.ExecQuery _
("Select * from Win32_Printer")
For Each objPrinter in colPrinters
objDictionary.Add objPrinter.PortName, objPrinter.PortName
Next
Set colPorts = objWMIService.ExecQuery _
("Select * from Win32_TCPIPPrinterPort")
For Each objPort in colPorts
If objDictionary.Exists(objPort.Name) Then
strUsedPorts = strUsedPorts & _
objDictionary.Item(objPort.Name) & VbCrLf
Else
strFreePorts = strFreePorts & objPort.Name & vbCrLf
End If
Next
Wscript.Echo "The following ports are in use: " & VbCrLf & strUsedPorts
Wscript.Echo "The following ports are available: " & VbCrLf & strFreePorts
List Printer Port Properties
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colPorts =objWMIService.ExecQuery _
("Select * from Win32_TCPIPPrinterPort")
For Each objPort in colPorts
Wscript.Echo "Description: " & objPort.Description
Wscript.Echo "Host Address: " & objPort.HostAddress
Wscript.Echo "Name: " & objPort.Name
Wscript.Echo "Port Number: " & objPort.PortNumber
Wscript.Echo "Protocol: " & objPort.Protocol
Wscript.Echo "SNMP Community: " & objPort.SNMPCommunity
Wscript.Echo "SNMP Dev Index: " & objPort.SnMPDevIndex
Wscript.Echo "SNMP Enabled: " & objPort.SNMPEnabled
Next
WScript.Echo"HelloWorld!"
Bind to Active Directory using rootDSE
Set objRootDSE = GetObject("LDAP://rootDSE")
strSchema = "LDAP://" & objRootDSE.Get("schemaNamingContext")
WScript.echo "ADsPath to schema: " & strSchema
Set objSchema = GetObject(strSchema)
WScript.Echo "Schema Object:"
WScript.Echo "Name: " & objSchema.Name
WScript.Echo "Class: " & objSchema.Class & VbCrLf
strConfiguration = "LDAP://" & objRootDSE.Get("configurationNamingContext")
WScript.Echo "ADsPath to configuration container: " & strConfiguration
Set objConfiguration = GetObject(strConfiguration)
WScript.Echo "Configuration Object:"
WScript.Echo "Name: " & objConfiguration.Name
WScript.Echo "Class: " & objConfiguration.Class & VbCrLf
strDomain = "LDAP://" & objRootDSE.Get("defaultNamingContext")
WScript.Echo "ADsPath to current domain container: " & strDomain
Set objDomain = GetObject(strDomain)
WScript.Echo "Current Domain Object:"
WScript.Echo "Name: " & objDomain.Name
WScript.Echo "Class: " & objDomain.Class & VbCrLf
strRootDomain = "LDAP://" & objRootDSE.Get("rootDomainNamingContext")
WScript.Echo "ADsPath to root domain container: " & strDomain
Set objRootDomain = GetObject(strRootDomain)
WScript.Echo "Current Domain Object:"
WScript.Echo "Name: " & objRootDomain.Name
WScript.Echo "Class: " & objRootDomain.Class & VbCrLf
List Active Directory Auxiliary Classes
On Error Resume Next
strClassName = "cn=user"
Set objSchemaClass = GetObject _
("LDAP://" & strClassName & _
",cn=schema,cn=configuration,dc=fabrikam,dc=com")
arrSystemAuxiliaryClass = _
objSchemaClass.GetEx("systemAuxiliaryClass")
If isEmpty(arrSystemAuxiliaryClass) Then
WScript.Echo "There are no auxiliary classes" & _
" applied directly to this class."
Else
WScript.StdOut.Write "Auxiliary classes: "
For Each strAuxiliaryClass in arrSystemAuxiliaryClass
WScript.StdOut.Write strAuxiliaryClass & " | "
Next
WScript.Echo
End If
List Active Directory System Information
On Error Resume Next
Set objSysInfo = CreateObject("ADSystemInfo")
Wscript.Echo "User name: " & objSysInfo.UserName
Wscript.Echo "Computer name: " & objSysInfo.ComputerName
Wscript.Echo "Site name: " & objSysInfo.SiteName
Wscript.Echo "Domain short name: " & objSysInfo.DomainShortName
Wscript.Echo "Domain DNS name: " & objSysInfo.DomainDNSName
Wscript.Echo "Forest DNS name: " & objSysInfo.ForestDNSName
Wscript.Echo "PDC role owner: " & objSysInfo.PDCRoleOwner
Wscript.Echo "Schema role owner: " & objSysInfo.SchemaRoleOwner
Wscript.Echo "Domain is in native mode: " & objSysInfo.IsNativeMode
List All the Attributes of an Active Directory Class
Set objSchemaComputer = GetObject("LDAP://schema/computer")
WScript.Echo "Mandatory (Must-Contain) attributes"
For Each strAttribute in objSchemaComputer.MandatoryProperties
WScript.Echo strAttribute
Next
WScript.Echo VbCrLf & "Optional (May-Contain) attributes"
For Each strAttribute in objSchemaComputer.OptionalProperties
WScript.Echo strAttribute
Next
List Domain Object Property Values
Set objDomain = GetObject("LDAP://dc=NA,dc=fabrikam,dc=com")
WScript.Echo "Ads Path:" & objDomain.ADsPath
WScript.Echo "Class:" & objDomain.Class
WScript.Echo "GUID:" & objDomain.GUID
WScript.Echo "Name:" & objDomain.Name
WScript.Echo "Parent:" & objDomain.Parent
WScript.Echo "Schema:" & objDomain.Schema
List the Active Directory Class Type for an Object
strClassName = "cn=organizational-person"
Set objSchemaClass = GetObject _
("LDAP://" & strClassName & _
",cn=schema,cn=configuration,dc=fabrikam,dc=com")
intClassCategory = objSchemaClass.Get("objectClassCategory")
Select Case intClassCategory
Case 0
strCategory = "88"
Case 1
strCategory = "structural"
Case 2
strCategory = "abstract"
Case 3
strCategory = "auxiliary"
End Select
Wscript.Echo strClassName & " is categorized as " & strCategory & "."
List the Names of All Objects in the Configuration Container
Set objConfiguration = GetObject _
("LDAP://cn=Configuration,dc=fabrikam,dc=com")
For Each objContainer in objConfiguration
WScript.Echo objContainer.Name
Next
List the Parent Class of an Active Directory Object
strClassName = "cn=computer"
Set objSchemaClass = GetObject _
("LDAP://" & strClassName & _
",cn=schema,cn=configuration,dc=fabrikam,dc=com")
strSubClassOf = objSchemaClass.Get("subClassOf")
WScript.Echo "The " & strClassName & _
" class is a child of the " & strSubClassOf & " class."
Use a Searchto Move Similar Active Directory Objects
Set objConnection = CreateObject("ADODB.Connection")
objConnection.Open "Provider=ADsDSOObject;"
Set objCommand = CreateObject("ADODB.Command")
objCommand.ActiveConnection = objConnection
objCommand.CommandText = _
"<LDAP://dc=NA,dc=fabrikam,dc=com>;" & _
"(&(&(objectCategory=person)(objectClass=user)" & _
"(department=Human Resources)));" & _
"ADsPath,distinguishedName, name;subtree"
Set objRecordSet = objCommand.Execute
Set objOU = GetObject("LDAP://ou=HR,dc=NA,dc=fabrikam,dc=com")
Do Until objRecordset.EOF
strADsPath = objRecordset.Fields("ADsPath")
strDNRecord=lcase(objRecordset.Fields("distinguishedName"))
strDNCompare=lcase("cn=" & objRecordset.Fields("name") & _
",ou=HR,dc=NA,dc=fabrikam,dc=com")
If strDNRecord <> strDNCompare Then
objOU.MoveHere strADsPath, vbNullString
WScript.Echo objRecordset.Fields("distinguishedName") & " Moved."
Else
Wscript.Echo objRecordset.Fields("distinguishedName") & " Not Moved."
End If
objRecordSet.MoveNext
Loop
objConnection.Close
Use a Search to Modify Similar Active Directory Objects
Set objConnection = CreateObject("ADODB.Connection")
objConnection.Open "Provider=ADsDSOObject;"
Set objCommand = CreateObject("ADODB.Command")
objCommand.ActiveConnection = objConnection
objCommand.CommandText = _
"<LDAP://dc=NA,dc=fabrikam,dc=com>;" & _
"(&(objectCategory=Computer)(cn=ATL*));" & _
"ADsPath;subtree"
Set objRecordSet = objCommand.Execute
Do Until objRecordset.EOF
strADsPath = objRecordset.Fields("ADsPath")
Set objComputer = GetObject(strADsPath)
objComputer.Put "location", "Atlanta, Georgia"
objComputer.SetInfo
objRecordSet.MoveNext
Loop
WScript.Echo objRecordSet.RecordCount & _
" computers objects modified."
objConnection.Close
Verify That an Attribute is in the Global Catalog
strAttributeName = "cn=given-name"
Set objSchemaAttribute = GetObject _
("LDAP://" & strAttributeName & _
",cn=schema,cn=configuration,dc=fabrikam,dc=com")
blnInGC = objSchemaAttribute.Get("isMemberOfPartialAttributeSet")
If blnInGC Then
WScript.Echo "The " & strAttributeName & _
" attribute is replicated to the Global Catalog."
Else
WScript.Echo "The " & strAttributeName & _
" attribute is not replicated to the Global Catalog."
End If
Verify That an Attribute is Operational
Const ADS_SYSTEMFLAG_ATTR_IS_CONSTRUCTED = &h00000004
strAttributeName = "cn=Canonical-Name"
Set objSchemaAttribute = GetObject _
("LDAP://" & strAttributeName & _
",cn=schema,cn=configuration,dc=fabrikam,dc=com")
intSystemFlags = objSchemaAttribute.Get("systemFlags")
If intSystemFlags AND ADS_SYSTEMFLAG_ATTR_IS_CONSTRUCTED Then
WScript.Echo strAttributeName & " is operational."
Else
WScript.Echo strAttributeName & " is not operational."
End If
Verify Whether Attributes are Indexed and-or in the Global Catalog
Const IS_INDEXED = 1
Set objConnection = CreateObject("ADODB.Connection")
objConnection.Open "Provider=ADsDSOObject;"
Set objCommand = CreateObject("ADODB.Command")
objCommand.ActiveConnection = objConnection
objCommand.Properties("Sort On") = "isMemberOfPartialAttributeSet"
objCommand.CommandText = _
"<LDAP://CN=Schema,CN=Configuration,DC=fabrikam,DC=com>;" & _
"(objectClass=attributeSchema);" & _
"lDAPDisplayName, isMemberOfPartialAttributeSet,searchFlags;onelevel"
Set objRecordSet = objCommand.Execute
Do Until objRecordSet.EOF
WScript.Echo objRecordset.Fields("lDAPDisplayName")
If objRecordset.Fields("isMemberOfPartialAttributeSet")Then
WScript.Echo "In the global catalog."
Else
WScript.Echo "Not in the global catlog."
End If
If IS_INDEXED AND objRecordset.Fields("searchFlags") Then
WScript.Echo "Is indexed."
Else
WScript.Echo "Is not indexed."
End If
Wscript.Echo VbCrLf
objRecordSet.MoveNext
Loop
objConnection.Close
'EncodeBinaryfiletoBase64
inputFile="c:\scripts\myfile.bin"
outputFile="c:\scripts\myfile.txt"
SetinStream=CreateObject("ADODB.Stream")
inStream.Open
inStream.type=1'TypeBinary
inStream.LoadFromFile(inputFile)
readBytes=inStream.Read()
SetoXML=CreateObject("Msxml2.DOMDocument")
SetoNode=oXML.CreateElement("base64")
oNode.dataType="bin.base64"
oNode.nodeTypedValue=readBytes
Base64Encode=oNode.text
Setfso=CreateObject("Scripting.Filesystemobject")
Setoutput=fso.CreateTextFile(outputFile,1)
output.Writebase64Encode
output.Close
'DecodeBase64Tobinaryfile
inputFile="c:\scripts\myfile.txt"
outputFile="c:\scripts\myfile2.bin"
Setfso=CreateObject("Scripting.Filesystemobject")
Setinput=fso.OpenTextFile(inputFile,1)
contents=input.ReadAll()
input.Close
SetoXML=CreateObject("Msxml2.DOMDocument")
SetoNode=oXML.CreateElement("base64")
oNode.dataType="bin.base64"
oNode.text=contents
SetBinaryStream=CreateObject("ADODB.Stream")
BinaryStream.Type=1'adTypeBinary
BinaryStream.Open
BinaryStream.WriteoNode.nodeTypedValue
BinaryStream.SaveToFileoutputFile
'DisplaytheContentsofaBinaryFile
SetBinaryStream1=CreateObject("ADODB.Stream")
BinaryStream1.Type=1
BinaryStream1.Open
currentdir=Left(WScript.ScriptFullName,InStrRev(WScript.ScriptFullName,"\"))
BinaryStream1.LoadFromFilecurrentdir&"pivot.zip"
pos=0
DoWhileNot(BinaryStream1.EOS)
varByteArray1=BinaryStream1.Read(16)
strData=""
strBin=""
ForlngCounter=0toUBound(varByteArray1)
car=Ascb(Midb(varByteArray1,lngCounter+1,1))
strBin=strBin&MyHex(car)&""
Ifcar=0Then
strData=strData&""
ElseIfcar>=32andcar<=128then
strData=strData&Chr(car)
Else
strData=strData&"."
EndIf
Next
spos=string(8-Len(pos),"0")&pos
WScript.Echospos&""&strBin&""&strData
pos=pos+16
Loop
FunctionMyHex(c)
s=Hex(c)
IfLen(s)=1Then
s="0"&s
EndIf
MyHex=s
EndFunction
'Checkifabinary(EXEorDLL)is32bit(x86)or64bit(x64)
Dimpath
path="c:\windows\system32\notepad.exe"
SetBinaryStream=CreateObject("ADODB.Stream")
BinaryStream.Type=1
BinaryStream.Open
BinaryStream.LoadFromFilepath
skip=BinaryStream.Read(&H3C)
positionSignature=BinaryStream.Read(4)
strPosition=""
ForlngCounter=0toUBound(positionSignature)
car=Ascb(Midb(positionSignature,lngCounter+1,1))
strPosition=MyHex(car)&strPosition
Next
positionSignature=CInt("&H"&strPosition)
BinaryStream.Position=positionSignature
'WScript.EchopositionSignature
arr_signature=BinaryStream.Read(6)
signature=""
ForlngCounter=0toUBound(arr_signature)
car=Ascb(Midb(arr_signature,lngCounter+1,1))
signature=signature&MyHex(car)
Next
BinaryStream.Close
'WScript.Echosignature
Ifsignature="504500004C01"Then
WScript.Echo"x86"
ElseIfsignature="504500006486"Then
WScript.Echo"x64"
EndIf
FunctionMyHex(c)
s=Hex(c)
IfLen(s)=1Then
s="0"&s
EndIf
MyHex=s
EndFunction
'CopyTexttotheClipboardusingVbsedit'sfree Toolkit
Settoolkit=CreateObject("vbsedit.toolkit")
toolkit.PutClipboardText"helloworld"
'GetTextfromtheClipboardusingVbsedit'sfree Toolkit
Settoolkit=CreateObject("vbsedit.toolkit")
text=toolkit.GetClipboardText()
WScript.Echotext
'GetHTMLfromtheClipboardusingVbsedit'sfree Toolkit
Settoolkit=CreateObject("vbsedit.toolkit")
html=toolkit.GetClipboardHTML()
WScript.Echohtml
CreateDocumentation Based on Script Comments
Const ForReading = 1
Const ForWriting = 2
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objScriptFile = objFSO.OpenTextFile("c:\scripts\Service_Monitor.vbs", _
ForReading)
Set objCommentFile = objFSO.OpenTextFile("c:\scripts\Comments.txt", _
ForWriting, TRUE)
Do While objScriptFile.AtEndOfStream <> TRUE
strCurrentLine = objScriptFile.ReadLine
intIsComment = Instr(1,strCurrentLine,"'*")
If intIsComment > 0 Then
objCommentFile.Write strCurrentLine & VbCrLf
End If
Loop
objScriptFile.Close
objCommentFile.Close
Delete Debugging Comments
Const ForReading = 1
Const ForWriting = 2
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objTextFile = objFSO.OpenTextFile("C:\Scripts\CreateUser.vbs", ForReading)
Do While objTextFile.AtEndOfStream <> true
strNextLine = objTextFile.Readline
intCheckForBugComment = Instr(strNextLine, "'* BUG")
If intCheckForBugComment = 0 Then
strSavedLines = strSavedLines & strNextLine & VbCrLf
End If
Loop
Set objTextFile = objFSO.OpenTextFile _
("c:\scripts\CreateUser.vbs ", ForWriting)
objTextFile.Write strSavedLines
objTextFile.Close
Convert WMI Date-Time Values
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set objOS = objWMIService.ExecQuery("Select * from Win32_OperatingSystem")
For Each strOS in objOS
dtmInstallDate = strOS.InstallDate
strReturn = WMIDateStringToDate(dtmInstallDate)
Wscript.Echo strReturn
Next
Function WMIDateStringToDate(dtmInstallDate)
WMIDateStringToDate = CDate(Mid(dtmInstallDate, 5, 2) & "/" & _
Mid(dtmInstallDate, 7, 2) & "/" & Left(dtmInstallDate, 4) _
& " " & Mid (dtmInstallDate, 9, 2) & ":" & _
Mid(dtmInstallDate, 11, 2) & ":" & Mid(dtmInstallDate, _
13, 2))
End Function
Convert Seconds To Hours
Windows NT 4.0 SP4 and later : Yes
intTotalSecs = 15438
intHours = intTotalSecs \ 3600
intMinutes = (intTotalSecs Mod 3600) \ 60
intSeconds = intTotalSecs Mod 60
WScript.Echo "Hours: " & intHours
WScript.Echo "Minutes: " & intMinutes
WScript.Echo "Seconds: " & intSeconds
Convert DATETIME to VT_DATE
Windows NT 4.0 SP4 and later : No
Set dateTime = CreateObject("WbemScripting.SWbemDateTime")
For Each os In GetObject("winmgmts:").InstancesOf("Win32_OperatingSystem")
the InstallDate property is a CIM_DATETIME.
WScript.Echo "Operating system installation date:"
WScript.Echo "WMI DATETIME format: " &os.InstallDate
dateTime.Value = os.InstallDate
WScript.Echo "VT_DATE format: " & dateTime.GetVarDate
Next
Convert DATETIME to FILETIME
Windows NT 4.0 SP4 and later : No
Set dateTime = CreateObject("WbemScripting.SWbemDateTime")
For Each os In GetObject("winmgmts:").InstancesOf("Win32_OperatingSystem")
WScript.Echo "Operating system installation date:"
WScript.Echo "WMI DATETIME format: " &os.InstallDate
dateTime.Value = os.InstallDate
WScript.Echo "FILETIME format: " & dateTime.GetFileTime
Next
Convert VT_DATE to FILETIME
Windows NT 4.0 SP4 and later : No
Set dateTime = CreateObject("WbemScripting.SWbemDateTime")
dateTime.SetVarDate Now
WScript.Echo "Current date and time:"
WScript.Echo "VT_DATE format: " &dateTime.GetVarDate
WScript.Echo "FILETIME format: " & dateTime.GetFileTime
Convert VT_DATE to DATETIME
Windows NT 4.0 SP4 and later : No
Set dateTime = CreateObject("WbemScripting.SWbemDateTime")
dateTime.SetVarDate Now
WScript.Echo "Current date and time:"
WScript.Echo "VT_DATE format: " &dateTime.GetVarDate
WScript.Echo "DATETIME format: " & dateTime.Value
Convert FILETIME to DATETIME
Windows NT 4.0 SP4 and later : No
Set dateTime = CreateObject("WbemScripting.SWbemDateTime")
strComputer = "."
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
Set colMonitorProcess = objWMIService.ExecNotificationQuery _
("SELECT * FROM __InstanceOperationEvent " _
& " WITHIN 1 WHERE TargetInstance ISA 'Win32_Process'")
Set objLatestEvent = colMonitorProcess.NextEvent
Wscript.Echo "Event Class: " & objLatestEvent.Path_.Class
WScript.Echo "Event Time:"
WScript.Echo "FILETIME format: " & objLatestEvent.TIME_CREATED
dateTime.SetFileTime objLatestEvent.TIME_CREATED, False
WScript.Echo "DATETIME format: " &dateTime.Value
Convert FILETIME to VT_DATE
Windows NT 4.0 SP4 and later : No
Set dateTime = CreateObject("WbemScripting.SWbemDateTime")
strComputer = "."
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
Set colMonitorProcess = objWMIService.ExecNotificationQuery _
("SELECT * FROM __InstanceOperationEvent " _
& " WITHIN 1 WHERE TargetInstance ISA 'Win32_Process'")
Set objLatestEvent = colMonitorProcess.NextEvent
Wscript.Echo "Event Class: " & objLatestEvent.Path_.Class
WScript.Echo "Event Time:"
WScript.Echo "FILETIME format: " & objLatestEvent.TIME_CREATED
dateTime.SetFileTime objLatestEvent.TIME_CREATED, False
WScript.Echo "VT_DATE format: " &dateTime.GetVarDate
'LocateaFileUsingaFileOpenDialogBox(usingVbsedit'sfreeToolkit)
Settoolkit=CreateObject("VbsEdit.Toolkit")
files=toolkit.OpenFileDialog("c:\scripts\","TextFiles(*.txt)|*.txt",False,"Openatextfile")
IfUBound(files)>=0Then
WScript.Echofiles(0)
Else
Wscript.Quit
EndIf
'LocateMultipleFilesUsingaFileOpenDialogBox(usingVbsedit'sfreeToolkit)
Settoolkit=CreateObject("VbsEdit.Toolkit")
files=toolkit.OpenFileDialog("c:\scripts\","TextFiles(*.txt)|*.txt",True,"Openatextfile")
IfUBound(files)>=0Then
ForEachfilepathInfiles
WScript.Echofilepath
Next
Else
Wscript.Quit
EndIf
'SaveaFileUsingaFileSaveDialogBox(usingVbsedit'sfreeToolkit)
Settoolkit=CreateObject("Vbsedit.Toolkit")
filepath=toolkit.SaveFileDialog("c:\scripts","test.txt","TextFiles(*.txt)|*.txt")
IfNot(IsNull(filepath))Then
SetobjFSO=CreateObject("Scripting.FileSystemObject")
SetobjFile=objFSO.CreateTextFile(filepath,True)
objFile.WriteLineDate
objFile.Close
Else
Wscript.Quit
EndIf
Add Elements to a Dictionary
Set objDictionary = CreateObject("Scripting.Dictionary")
objDictionary.Add "Printer 1", "Printing"
objDictionary.Add "Printer 2", "Offline"
objDictionary.Add "Printer 3", "Printing"
Delete All Elements from a Dictionary
Set objDictionary = CreateObject("Scripting.Dictionary")
objDictionary.Add "Printer 1", "Printing"
objDictionary.Add "Printer 2", "Offline"
objDictionary.Add "Printer 3", "Printing"
colKeys = objDictionary.Keys
Wscript.Echo "First run: "
For Each strKey in colKeys
Wscript.Echo strKey
Next
objDictionary.RemoveAll
colKeys = objDictionary.Keys
Wscript.Echo VbCrLf & "Second run: "
For Each strKey in colKeys
Wscript.Echo strKey
Next
Delete One Element from a Dictionary
Set objDictionary = CreateObject("Scripting.Dictionary")
objDictionary.Add "Printer 1", "Printing"
objDictionary.Add "Printer 2", "Offline"
objDictionary.Add "Printer 3", "Printing"
colKeys = objDictionary.Keys
Wscript.Echo "First run: "
For Each strKey in colKeys
Wscript.Echo strKey
Next
objDictionary.Remove("Printer 2")
colKeys = objDictionary.Keys
Wscript.Echo VbCrLf & "Second run: "
For Each strKey in colKeys
Wscript.Echo strKey
Next
List the Number of Items in a Dictionary
Set objDictionary = CreateObject("Scripting.Dictionary")
objDictionary.Add "Printer 1", "Printing"
objDictionary.Add "Printer 2", "Offline"
objDictionary.Add "Printer 3", "Printing"
Wscript.Echo objDictionary.Count
Verify the Existence of a Dictionary Key
Set objDictionary = CreateObject("Scripting.Dictionary")
objDictionary.Add "Printer 1", "Printing"
objDictionary.Add "Printer 2", "Offline"
objDictionary.Add "Printer 3", "Printing"
If objDictionary.Exists("Printer 4") Then
Wscript.Echo "Printer 4 is in the Dictionary."
Else
Wscript.Echo "Printer 4 is not in the Dictionary."
End If
List Real Time Events in a Command Window
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate,(Security)}!\\" & _
strComputer & "\root\cimv2")
Set colMonitoredEvents = objWMIService.ExecNotificationQuery _
("Select * from __InstanceCreationEvent within 5 where TargetInstance " & _
"isa 'Win32_NTLogEvent' and TargetInstance.EventType = '1'")
Do
Set objLatestEvent = colMonitoredEvents.NextEvent
Wscript.Echo "Record No.: " & _
objLatestEvent.TargetInstance.RecordNumber
Wscript.Echo "Event ID: " & objLatestEvent.TargetInstance.EventCode
Wscript.Echo "Time: " & objLatestEvent.TargetInstance.TimeWritten
Wscript.Echo "Source: " & objLatestEvent.TargetInstance.SourceName
Wscript.Echo "Category: " & _
objLatestEvent.TargetInstance.CategoryString
Wscript.Echo "Event Type: " & objLatestEvent.TargetInstance.Type
Wscript.Echo "Computer: " & _
objLatestEvent.TargetInstance.ComputerName
Wscript.Echo "User: " & objLatestEvent.TargetInstance.User
Wscript.echo "Text: " & objLatestEvent.TargetInstance.Message
Loop
List Tabular Output in a Command Window
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colServices = objWMIService.ExecQuery("Select * from Win32_Service")
For Each objService in colServices
intPadding = 50 - Len(objService.DisplayName)
intPadding2 = 17 - Len(objService.StartMode)
strDisplayName = objService.DisplayName & Space(intPadding)
strStartMode = objService.StartMode & Space(intPadding2)
Wscript.Echo strDisplayName & strStartMode & objService.State
Next
Sort WMI Data with Disconnected Record Set
Dim arrNames()
intSize = 0
strComputer = "."
strClass = "Win32_Process"
'Can use Win32_Service or Win32_Directory
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
Set colItems = objWMIService.ExecQuery("Select * from " & strClass)
For Each objItem in colItems
ReDim Preserve arrNames(intSize)
arrNames(intSize) = objItem.Name
intSize = intSize + 1
Next
Const adVarChar = 200
Set the data type to variant.
Const MaxCharacters = 200
Set DataList = CreateObject("ADOR.Recordset")
DataList.Fields.Append "Name", adVarChar, MaxCharacters
DataList.Open
For Each strName In arrNames
DataList.AddNew
DataList("Name") = strName
DataList.Update
Next
DataList.Sort = "Name"
DataList.MoveFirst
Do Until DataList.EOF
Wscript.Echo DataList.Fields.Item("Name")
DataList.MoveNext
Loop
DataList.Close
Sort Data with Bubble Sort
arrSample = Array(4, 6, 2, 7, 3, 5, 1)
WScript.Echo vbCrLf & "array before"
For Each intNumber In arrSample
WScript.Echo intNumber
Next
For i = LBound(arrSample) to UBound(arrSample)
For j = LBound(arrSample) to UBound(arrSample)
If j <> UBound(arrSample) Then
If arrSample(j) > arrSample(j + 1) Then
TempValue = arrSample(j + 1)
arrSample(j + 1) = arrSample(j)
arrSample(j) = TempValue
End If
End If
Next
Next
WScript.Echo vbCrLf & "array after"
For Each intNumber In arrSample
WScript.Echo intNumber
Next
Sort Data with Disconnected Record Set
Const adVarChar = 200
Set the data type to variant.
Const MaxCharacters = 10
arrSample = Array(4, 6, 2, 7, 3, 5, 1)
WScript.Echo vbCrLf & "array before"
For Each intNumber In arrSample
WScript.Echo intNumber
Next
Set DataList = CreateObject("ADOR.Recordset")
DataList.Fields.Append "Number", adVarChar, MaxCharacters
DataList.Open
For Each intNumber In arrSample
DataList.AddNew
DataList("Number") = intNumber
DataList.Update
Next
DataList.Sort = "Number"
DataList.MoveFirst
WScript.Echo vbCrLf & "array after"
Do Until DataList.EOF
Wscript.Echo DataList.Fields.Item("Number")
DataList.MoveNext
Loop
DataList.Close
Sort WMI Data with Bubble Sort
Dim arrNames()
intSize = 0
strComputer = "."
strClass = "Win32_Process"
'Can use Win32_Service or Win32_Directory
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
Set colItems = objWMIService.ExecQuery("Select * from " & strClass)
For Each objItem in colItems
ReDim Preserve arrNames(intSize)
arrNames(intSize) = objItem.Name
intSize = intSize + 1
Next
For i = (UBound(arrNames) - 1) to 0 Step -1
For j = 0 to i
If UCase(arrNames(j)) > UCase(arrNames(j + 1)) Then
strHolder = arrNames(j + 1)
arrNames(j + 1) = arrNames(j)
arrNames(j) = strHolder
End If
Next
Next
For Each strName in arrNames
Wscript.Echo strName
Next
Suppress Multiple Event Notifications
dtmStartTime = Now
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set objDiskDrives = objWMIService.ExecQuery _
("Select * from Win32_LogicalDisk")
For Each objDrive in objDiskDrives
If objDrive.FreeSpace < 10000000 Then
Wscript.Echo "Drive is low on disk space."
End If
Next
Do
Set objDiskDrives = objWMIService.ExecQuery _
("Select * from Win32_LogicalDisk")
For Each objDrive in objDiskDrives
If objDrive.FreeSpace < 10000000 Then
intElapsedHours = DateDiff("h", dtmStartTime, Now)
If intElapsedHours >= 1 Then
Wscript.Echo "Drive is low on disk space."
dtmStartTime = Now
End If
End If
Next
Wscript.Sleep 1000
Loop
Monitor process event
strComputer = "."
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
Set colMonitorProcess = objWMIService.ExecNotificationQuery _
("SELECT * FROM __InstanceOperationEvent WITHIN 1" & _
"WHERE TargetInstance ISA 'Win32_Process'")
WScript.Echo "Waiting for process change event ..."
Set objLatestEvent = colMonitorProcess.NextEvent
WScript.Echo VbCrLf & objLatestEvent.Path_.Class
Wscript.Echo "Process Name: " & objLatestEvent.TargetInstance.Name
Wscript.Echo "Process ID: " & objLatestEvent.TargetInstance.ProcessId
WScript.Echo "Time: " & Now
Monitor process creation event
strComputer = "."
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
Set colMonitorProcess = objWMIService.ExecNotificationQuery _
("SELECT * FROM __InstanceCreationEvent WITHIN 1" & _
"WHERE TargetInstance ISA 'Win32_Process'")
WScript.Echo "Waiting for process to be created ..."
Set objLatestEvent = colMonitorProcess.NextEvent
Wscript.Echo VbCrLf & "Process Name: " & objLatestEvent.TargetInstance.Name
Wscript.Echo "Process ID: " & objLatestEvent.TargetInstance.ProcessId
WScript.Echo "Time: " & Now
Monitor process modification event
strComputer = "."
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
Set colMonitorProcess = objWMIService.ExecNotificationQuery _
("SELECT * FROM __InstanceModificationEvent WITHIN 1" & _
"WHERE TargetInstance ISA 'Win32_Process'")
WScript.Echo "Waiting for process to be modified ..."
Set objLatestEvent = colMonitorProcess.NextEvent
Wscript.Echo VbCrLf & "Process Name: " & objLatestEvent.TargetInstance.Name
Wscript.Echo "Process ID: " & objLatestEvent.TargetInstance.ProcessId
WScript.Echo "Time: " & Now
Monitor process deletion event
strComputer = "."
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
Set colMonitorProcess = objWMIService.ExecNotificationQuery _
("SELECT * FROM __InstanceDeletionEvent WITHIN 1" & _
"WHERE TargetInstance ISA 'Win32_Process'")
WScript.Echo "Waiting for process to be terminated ..."
Set objLatestEvent = colMonitorProcess.NextEvent
Wscript.Echo VbCrLf & "Process Name: " & objLatestEvent.TargetInstance.Name
Wscript.Echo "Process ID: " & objLatestEvent.TargetInstance.ProcessId
WScript.Echo "Time: " & Now
Get start and stop times for process deletion events
strComputer = "."
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
Set colMonitorProcess = objWMIService.ExecNotificationQuery _
("SELECT * FROM __InstanceDeletionEvent " _
& " Within 1 WHERE TargetInstance ISA 'Win32_Process'")
WScript.Echo "Waiting for a process to stop ..."
Do
Set objLatestEvent = colMonitorProcess.NextEvent
WScript.Echo VbCrLf & objLatestEvent.Path_.Class
Wscript.Echo "Process Name: " & objLatestEvent.TargetInstance.Name
Wscript.Echo "Process ID: " & objLatestEvent.TargetInstance.ProcessId
Wscript.Echo "Time Created: " & _
objLatestEvent.TargetInstance.CreationDate
WScript.Echo "Time Deleted: " & Now
Loop
Get duration of processes from events
strComputer = "."
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
Set colMonitorProcess = objWMIService.ExecNotificationQuery _
("SELECT * FROM __InstanceDeletionEvent " _
& " WITHIN 1 WHERE TargetInstance ISA 'Win32_Process'")
WScript.Echo "Waiting for process to stop ..."
Do
Set objLatestEvent = colMonitorProcess.NextEvent
Wscript.Echo vbCrLf & "Process Name: " & objLatestEvent.TargetInstance.Name
Wscript.Echo "Process ID: " & objLatestEvent.TargetInstance.ProcessId
strDateTime = WMIDateToString(objLatestEvent.TargetInstance.CreationDate)
Wscript.Echo "Time created: " & strDateTime
WScript.Echo "Time deleted: " & Now
intSeconds = DateDiff("s", strDateTime, Now)
WScript.Echo "Duration: " & intSeconds & " seconds"
Loop
Function WMIDateToString(dtmDate)
WMIDateToString = CDate(Mid(dtmDate, 5, 2) & "/" & _
Mid(dtmDate, 7, 2) & "/" & _
Left(dtmDate, 4) & " " & _
Mid(dtmDate, 9, 2) & ":" & _
Mid(dtmDate, 11, 2) & ":" & _
Mid(dtmDate, 13, 2))
End Function
Get duration of processes from events (Windows XP & Windows Server 2003 only)
strComputer = "."
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
Set colMonitorProcess = objWMIService.ExecNotificationQuery _
("SELECT * FROM __InstanceDeletionEvent " _
& " WITHIN 1 WHERE TargetInstance ISA 'Win32_Process'")
WScript.Echo "Waiting for process to stop ..."
Do
Set objLatestEvent = colMonitorProcess.NextEvent
Set objDateTime = CreateObject("WbemScripting.SWbemDateTime")
Wscript.Echo vbCrLf & "Process Name: " & objLatestEvent.TargetInstance.Name
Wscript.Echo "Process ID: " & objLatestEvent.TargetInstance.ProcessId
objDateTime.Value = objLatestEvent.TargetInstance.CreationDate
Wscript.Echo "Time created: " & objDateTime.GetVarDate
WScript.Echo "Time deleted: " & Now
intSeconds = DateDiff("s", objDateTime.GetVarDate, Now)
WScript.Echo "Duration: " & intSeconds & " seconds"
Loop
Monitor process trace events
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colProcessTrace = objWMIService.ExecNotificationQuery _
("SELECT * FROM Win32_ProcessTrace")
WScript.Echo "Waiting for process event ..."
Do
Set objLatestEvent = colProcessTrace.NextEvent
WScript.Echo
Wscript.Echo "Process Name: " & objLatestEvent.ProcessName
Wscript.Echo "Process ID: " & objLatestEvent.ProcessId
Wscript.Echo "Time: " & objLatestEvent.TIME_CREATED
Loop
Monitor process start trace events.
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colProcessStartTrace = objWMIService.ExecNotificationQuery _
("SELECT * FROM Win32_ProcessStartTrace")
WScript.Echo "Waiting for process to start ..."
Do
Set objLatestEvent = colProcessStartTrace.NextEvent
WScript.Echo
Wscript.Echo "Process Name: " & objLatestEvent.ProcessName
Wscript.Echo "Process ID: " & objLatestEvent.ProcessId
Wscript.Echo "Time: " & objLatestEvent.TIME_CREATED
Loop
Monitor process stop trace events.
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colProcessStopTrace = objWMIService.ExecNotificationQuery _
("SELECT * FROM Win32_ProcessStopTrace")
WScript.Echo "Waiting for process to stop ..."
Do
Set objLatestEvent = colProcessStopTrace.NextEvent
WScript.Echo
Wscript.Echo "Process Name: " & objLatestEvent.ProcessName
Wscript.Echo "Process ID: " & objLatestEvent.ProcessId
Wscript.Echo "Time: " & objLatestEvent.TIME_CREATED
'Property is new for Windows Server 2003.
Wscript.Echo "Exit Code: " & objLatestEvent.ExitStatus
Loop
Monitor service modification events
strComputer = "."
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
Set colMonitorProcess = objWMIService.ExecNotificationQuery _
("SELECT * FROM __InstanceModificationEvent WITHIN 1" & _
"WHERE TargetInstance ISA 'Win32_Service'")
WScript.Echo "Waiting for service to be modified ..."
Set objLatestEvent = colMonitorProcess.NextEvent
Do
Set objLatestEvent = colMonitorProcess.NextEvent
Wscript.Echo VbCrLf & "Service Name: " & objLatestEvent.TargetInstance.Name
Wscript.Echo "Status: " & objLatestEvent.TargetInstance.State
Wscript.Echo "Startup Type: " & objLatestEvent.TargetInstance.StartMode
Wscript.Echo "Time: " & Now
Loop
Monitor creation event for specific process name
strComputer = "."
strProcName = "notepad.exe"
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
Set colMonitorProcess = objWMIService.ExecNotificationQuery _
("SELECT * FROM __InstanceCreationEvent WITHIN 1" & _
"WHERE TargetInstance ISA 'Win32_Process' AND TargetInstance.Name='" & _
strProcName & "'")
WScript.Echo "Waiting for " & strProcName & " process to be created ..."
Set objLatestEvent = colMonitorProcess.NextEvent
Wscript.Echo VbCrLf & "Process Name: " & objLatestEvent.TargetInstance.Name
Wscript.Echo "Process ID: " & objLatestEvent.TargetInstance.ProcessId
WScript.Echo "Time: " & Now
Asynchronously monitor process creation events.
strComputer = "."
Set SINK = WScript.CreateObject("WbemScripting.SWbemSink","SINK_")
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
objWMIService.ExecNotificationQueryAsync SINK, _
"SELECT * FROM __InstanceCreationEvent WITHIN 1 " & _
"WHERE TargetInstance ISA 'Win32_Process'"
WScript.Echo "Waiting for process to be created ..."
Do
WScript.Sleep 1000
Loop
Sub SINK_OnObjectReady(objLatestEvent, objAsyncContext)
Wscript.Echo VbCrLf & "Process Name: " & objLatestEvent.TargetInstance.Name
Wscript.Echo "Process ID: " & objLatestEvent.TargetInstance.ProcessID
Wscript.Echo "Time: " & Now
End Sub
Asynchronously monitor service modification events.
strComputer = "."
Set SINK = WScript.CreateObject("WbemScripting.SWbemSink","SINK_")
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
objWMIService.ExecNotificationQueryAsync SINK, _
"SELECT * FROM __InstanceModificationEvent WITHIN 1 " & _
"WHERE TargetInstance ISA 'Win32_Service'"
WScript.Echo "Waiting for service to be modified ..."
Do
WScript.Sleep 1000
Loop
Sub SINK_OnObjectReady(objLatestEvent, objAsyncContext)
Wscript.Echo VbCrLf & "Service Name: " & objLatestEvent.TargetInstance.Name
Wscript.Echo "Status: " & objLatestEvent.TargetInstance.State
Wscript.Echo "Startup Type: " & objLatestEvent.TargetInstance.StartMode
Wscript.Echo "Time: " & Now
End Sub
Asynchronously monitor process start trace events.
strComputer = "."
Set SINK = WScript.CreateObject("WbemScripting.SWbemSink","SINK_")
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
objWMIService.ExecNotificationQueryAsync SINK, _
"SELECT * FROM Win32_ProcessStartTrace"
WScript.Echo "Waiting for process to start ..."
Do
WScript.Sleep 1000
Loop
Sub SINK_OnObjectReady(objLatestEvent, objAsyncContext)
Wscript.Echo VbCrLf & "Process Name: " & objLatestEvent.ProcessName
Wscript.Echo "Process ID: " & objLatestEvent.ProcessId
Wscript.Echo "Time: " & Now
End Sub
Mask Command Line Passwords
Set objPassword = CreateObject("ScriptPW.Password")
WScript.StdOut.Write "Please enter your password:"
strPassword = objPassword.GetPassword()
Wscript.Echo
Wscript.Echo "Your password is: " & strPassword
Mask Passwords Using Internet Explorer
Set objExplorer = WScript.CreateObject _
("InternetExplorer.Application", "IE_")
objExplorer.Navigate "file:///c:\scripts\password.htm"
objExplorer.Visible = 1
objExplorer.ToolBar = 0
objExplorer.StatusBar = 0
objExplorer.Width=400
objExplorer.Height = 250
objExplorer.Left = 0
objExplorer.Top = 0
Do While (objExplorer.Document.Body.All.OKClicked.Value = "")
Wscript.Sleep 250
Loop
strPassword = objExplorer.Document.Body.All.PasswordBox.Value
objExplorer.Quit
Wscript.Sleep 250
Wscript.Echo strPassword
Match File Names in Directory Against Regular Expression
Set objFS = CreateObject("Scripting.FileSystemObject")
Set objShell = CreateObject("WScript.Shell")
strCurrentDirectory = objShell.CurrentDirectory
Set objFolder = objFS.GetFolder(strCurrentDirectory)
Set colFiles = objFolder.Files
Set objRE = New RegExp
objRE.Global = True
objRE.IgnoreCase = False
objRE.Pattern= WScript.Arguments(0)
For Each objFile In colFiles
bMatch = objRE.Test(objFile.Name)
If bMatch Then
WScript.Echo objFile.Name
End If
Next
Match Content in a File Against a Regular Expression
strFileName = "C:\scripts\test.txt"
Set objFS = CreateObject("Scripting.FileSystemObject")
Set objTS = objFS.OpenTextFile(strFileName)
strFileContents = objTS.ReadAll
WScript.Echo "Searching Within: "
WScript.Echo strFileContents
objTS.Close
Set objRE = New RegExp
objRE.Global = True
objRE.IgnoreCase = False
objRE.Pattern= WScript.Arguments(0)
Set colMatches = objRE.Execute(strFileContents)
WScript.Echo vbNewLine & "Resulting Matches:"
For Each objMatch In colMatches
WScript.Echo "At position " & objMatch.FirstIndex & " matched " & objMatch.Value
Next
Track Script Progress in a Command Window
Wscript.Echo "Processing information. This might take several minutes."
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colServices = objWMIService.ExecQuery("Select * from Win32_Service")
For Each objService in colServices
Wscript.StdOut.Write(".")
Next
Wscript.StdOut.WriteLine
Wscript.Echo "Service information processed."
Track Script Progress Using Internet Explorer
Set objExplorer = WScript.CreateObject("InternetExplorer.Application")
objExplorer.Navigate "about:blank"
objExplorer.ToolBar = 0
objExplorer.StatusBar = 0
objExplorer.Width=400
objExplorer.Height = 200
objExplorer.Left = 0
objExplorer.Top = 0
Do While (objExplorer.Busy)
Wscript.Sleep 200
Loop
objExplorer.Visible = 1
objExplorer.Document.Body.InnerHTML = "Retrieving service information. " _
& "This might take several minutes to complete."
strComputer = "."
Set colServices = GetObject("winmgmts:\\" & strComputer & "\root\cimv2"). _
ExecQuery("Select * from Win32_Service")
For Each objService in colServices
Wscript.Sleep 200
Next
objExplorer.Document.Body.InnerHTML = "Service information retrieved."
Wscript.Sleep 3000
objExplorer.Quit
Read Arguments from a Text File
Const ForReading = 1
Set objDictionary = CreateObject("Scripting.Dictionary")
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objTextFile = objFSO.OpenTextFile("c:\scripts\servers.txt", ForReading)
i = 0
Do Until objTextFile.AtEndOfStream
strNextLine = objTextFile.Readline
objDictionary.Add i, strNextLine
i = i + 1
Loop
For Each objItem in objDictionary
Set colServices = GetObject("winmgmts://" & _
objDictionary.Item(objItem) _
& "").ExecQuery("Select * from Win32_Service")
Wscript.Echo colServices.Count
Next
Read Arguments from an Active Directory Container
Set objDictionary = CreateObject("Scripting.Dictionary")
i = 0
Set objOU = GetObject("LDAP://CN=Computers, DC=fabrikam, DC=com")
objOU.Filter = Array("Computer")
For Each objComputer in objOU
objDictionary.Add i, objComputer.CN
i = i + 1
Next
For Each objItem in objDictionary
Set colServices = GetObject("winmgmts://" & _
objDictionary.Item(objItem) _
& "").ExecQuery("Select * from Win32_Service")
Wscript.Echo colServices.Count
Next
Use a TextFile as a Command Line Argument
Const ForReading = 1
Set objArgs = WScript.Arguments
Set objDictionary = CreateObject("Scripting.Dictionary")
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objTextFile = objFSO.OpenTextFile(objArgs(0), ForReading)
i = 0
Do While objTextFile.AtEndOfStream <> True
strNextLine = objTextFile.Readline
objDictionary.Add i, strNextLine
i = i + 1
Loop
For Each objItem in objDictionary
Set colServices = GetObject("winmgmts://" & objDictionary.Item(objItem) _
& "").ExecQuery("Select * from Win32_Service")
Wscript.Echo colServices.Count
Next
List the Contents of a Web Page
url="http://www.microsoft.com"
Set objHTTP = CreateObject("MSXML2.XMLHTTP")
Call objHTTP.Open("GET", url, FALSE)
objHTTP.Send
WScript.Echo(objHTTP.ResponseText)
Save an RSS Feed to a Text File
Const ForWriting = 2
strURL="http://blogs.msdn.com/gstemp/Rss.aspx"
Set objHTTP = CreateObject("MSXML2.XMLHTTP")
Call objHTTP.Open("GET", strURL, FALSE)
objHTTP.Send
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objFile = objFSO.CreateTextFile _
("C:\Scripts\scripting_guys.xml", ForWriting)
objFile.Write objHTTP.ResponseText
objFile.Close
'UploadFilestoan FTPServer
username="myusername"
pwd="mypassword"
ftpsite="ftp.mysite.com"
local_folder="c:\temp"
remote_folder="/www/"
currentdir=Left(WScript.ScriptFullName, InStrRev(WScript.ScriptFullName,"\")-1)
Setfso=CreateObject("Scripting.Filesystemobject")
Setfile=fso.CreateTextFile(currentdir&"\ftp.txt",1)
file.WriteLineusername
file.WriteLinepwd
file.WriteLine"Binary"
file.WriteLine"lcd"""&local_folder&""""
file.WriteLine"cd"&remote_folder
ForeachfilenameInfso.GetFolder(local_folder).Files
file.WriteLine"put"&filename.Name
Next
file.WriteLine"bye"
file.Close
SetWshShell=CreateObject("wscript.Shell")
WshShell.Run"cmd.exe/cftp.exe-i-s:"¤tdir&"\ftp.txt"&ftpsite&">"¤tdir&"\ftp.log2>&1",1,True
'StartGoogleChrome
SetWshShell=WScript.CreateObject("Wscript.Shell")
OnErrorResumeNext
chrome=wshshell.RegRead("HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\AppPaths\chrome.exe\")
IfErr.number<>0Then
chrome=wshshell.RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\AppPaths\chrome.exe\")
EndIf
Dimfso
Setfso=WScript.CreateObject("Scripting.Filesystemobject")
Iffso.FileExists(chrome)Then
wshshell.Run""""&chrome&"""",1,False
Else
WScript.Echo"couldnotlocateChrome."
EndIf
Add Specific Users to a Group
On Error Resume Next
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.CommandText = _
"SELECT ADsPath FROM 'LDAP://DC=fabrikam,DC=com' " _
& "WHERE objectCategory='User' AND Title='Accountant'"
objCommand.Properties("Page Size") = 1000
objCommand.Properties("Searchscope") = ADS_SCOPE_SUBTREE
Set objRecordSet = objCommand.Execute
Set objGroup = GetObject _
("LDAP://cn=Accountants,ou=NA,dc=fabrikam,dc=com")
objRecordSet.MoveFirst
Do Until objRecordSet.EOF
objGroup.Add(objRecordSet.Fields("ADsPath").Value)
objRecordSet.MoveNext
Loop
Create a Department Phone List
On Error Resume Next
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.CommandText = _
"SELECT givenName,SN,telephoneNumber FROM " & _
"'LDAP://DC=fabrikam,DC=com' " _
& "WHERE objectCategory='User' AND department='Finance'"
objCommand.Properties("Page Size") = 1000
objCommand.Properties("Searchscope") = ADS_SCOPE_SUBTREE
Set objRecordSet = objCommand.Execute
objRecordSet.MoveFirst
Do Until objRecordSet.EOF
Wscript.Echo objRecordSet.Fields("SN").Value & ", " & _
objRecordSet.Fields("givenName").Value & " " & _
objRecordSet.Fields("telephoneNumber").Value
objRecordSet.MoveNext
Loop
Perform a Search Using Alternate Credentials
On Error Resume Next
Const ADS_SCOPE_SUBTREE = 2
Set objConnection = CreateObject("ADODB.Connection")
Set objCommand = CreateObject("ADODB.Command")
objConnection.Provider = "ADsDSOObject"
objConnection.Properties("User ID") = "Administrator"
objConnection.Properties("Password") = "+77m5trgJo!"
objConnection.Properties("Encrypt Password") = TRUE
objConnection.Properties("ADSI Flag") = 1
objConnection.Open "Active Directory Provider"
Set objCommand.ActiveConnection = objConnection
objCommand.Properties("Page Size") = 1000
objCommand.Properties("Searchscope") = ADS_SCOPE_SUBTREE
objCommand.CommandText = _
"SELECT Name FROM 'LDAP://dc=fabrikam,dc=com' WHERE objectCategory='user'"
Set objRecordSet = objCommand.Execute
objRecordSet.MoveFirst
Do Until objRecordSet.EOF
Wscript.Echo objRecordSet.Fields("Name").Value
objRecordSet.MoveNext
Loop
Search for a SAM Account Name
On Error Resume Next
Const ADS_SCOPE_SUBTREE = 2
Set objConnection = CreateObject("ADODB.Connection")
Set objCommand = CreateObject("ADODB.Command")
objConnection.Provider = ("ADsDSOObject")
objConnection.Open "Active Directory Provider"
objCommand.ActiveConnection = objConnection
objCommand.CommandText = "SELECT samAccountName FROM " & _
"'LDAP://dc=fabrikam,dc=com' " & _
"WHERE samAccountName = 'kenmyer'"
objCommand.Properties("SearchScope") = ADS_SCOPE_SUBTREE
Set objRecordSet = objCommand.Execute
If objRecordSet.RecordCount = 0 Then
Wscript.Echo "The samAccount name is not being used."
Else
Wscript.Echo "The samAccount name is being used."
End If
Search for All Groups in Active Directory
On Error Resume Next
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='group'"
Set objRecordSet = objCommand.Execute
objRecordSet.MoveFirst
Do Until objRecordSet.EOF
Wscript.Echo objRecordSet.Fields("cn").Value
objRecordSet.MoveNext
Loop
Search for All Non-User Accounts
On Error Resume Next
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.CommandText = _
"<LDAP://dc=fabrikam,dc=com>;(!(objectCategory=User));Name;Subtree"
Set objRecordSet = objCommand.Execute
objRecordSet.MoveFirst
Do Until objRecordSet.EOF
Wscript.Echo objRecordSet.Fields("Name").Value
objRecordSet.MoveNext
Loop
Search for All Users in Active Directory
On Error Resume Next
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 Name FROM 'LDAP://dc=fabrikam,dc=com' WHERE objectCategory='user'"
Set objRecordSet = objCommand.Execute
objRecordSet.MoveFirst
Do Until objRecordSet.EOF
Wscript.Echo objRecordSet.Fields("Name").Value
objRecordSet.MoveNext
Loop
Search for All Users That Have a Phone Number
On Error Resume Next
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.CommandText = _
"<LDAP://dc=fabrikam,dc=com>;(&(objectCategory=User)" & _
"(telephoneNumber=*));Name;Subtree"
Set objRecordSet = objCommand.Execute
objRecordSet.MoveFirst
Do Until objRecordSet.EOF
Wscript.Echo objRecordSet.Fields("Name").Value
objRecordSet.MoveNext
Loop
Search for All Users Using an LDAP Query
On Error Resume Next
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.CommandText = _
"<LDAP://dc=fabrikam,dc=com>;(objectCategory=User);Name;Subtree"
Set objRecordSet = objCommand.Execute
objRecordSet.MoveFirst
Do Until objRecordSet.EOF
Wscript.Echo objRecordSet.Fields("Name").Value
objRecordSet.MoveNext
Loop
Search for Attributes in the Global Catalog
On Error Resume Next
Const IS_INDEXED = 1
Const ADS_SCOPE_SUBTREE = 2
Set objConnection = CreateObject("ADODB.Connection")
objConnection.Open "Provider=ADsDSOObject;"
Set objCommand = CreateObject("ADODB.Command")
objCommand.ActiveConnection = objConnection
objCommand.Properties("Searchscope") = ADS_SCOPE_SUBTREE
objCommand.CommandText = _
"SELECT lDAPDisplayName,isMemberOfPartialAttributeSet,searchFlags " _
& "FROM 'LDAP://CN=Schema,CN=Configuration,DC=fabrikam,DC=com'"_
& " WHERE objectClass='attributeSchema'"
Set objRecordSet = objCommand.Execute
Do Until objRecordSet.EOF
WScript.Echo objRecordset.Fields("lDAPDisplayName")
If objRecordset.Fields("isMemberOfPartialAttributeSet") Then
WScript.Echo "In the global catalog."
End If
If IS_INDEXED AND objRecordset.Fields("searchFlags") Then
WScript.Echo "Indexed."
End If
Wscript.Echo
objRecordSet.MoveNext
Loop
objConnection.Close
Search for Computers Running Windows 2003
On Error Resume Next
Const ADS_SCOPE_SUBTREE = 2
Set objConnection = CreateObject("ADODB.Connection")
Set objCommand = CreateObject("ADODB.Command")
objConnection.Provider = ("ADsDSOObject")
objConnection.Open "Active Directory Provider"
objCommand.ActiveConnection = objConnection
objCommand.Properties("Page Size") = 1000
objCommand.Properties("Searchscope") = ADS_SCOPE_SUBTREE
objCommand.CommandText = _
"SELECT Name, operatingSystemVersion FROM " _
& "'LDAP://DC=fabrikam,DC=com'" _
& " WHERE objectClass='computer' AND " _
&"operatingSystemVersion = '5.2 (3790)'"
Set objRecordSet = objCommand.Execute
objRecordSet.MoveFirst
Do Until objRecordSet.EOF
Wscript.Echo "Name: " & objRecordSet.Fields("Name").Value
objRecordSet.MoveNext
Loop
Search for Global Security Groups
On Error Resume Next
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='group' AND " _
& "groupType= -2147483646 "
Set objRecordSet = objCommand.Execute
objRecordSet.MoveFirst
Do Until objRecordSet.EOF
Wscript.Echo objRecordSet.Fields("cn").Value
objRecordSet.MoveNext
Loop
Search for Multiple Attributes
On Error Resume Next
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 AdsPath,givenName,SN,title,telephoneNumber " _
& "FROM 'LDAP://dc=fabrikam,dc=com' WHERE " _
& "objectCategory='user'"
Set objRecordSet = objCommand.Execute
objRecordSet.MoveFirst
Do Until objRecordSet.EOF
Wscript.Echo objRecordSet.Fields("ADsPath").Value
Wscript.Echo objRecordSet.Fields("givenName").Value
Wscript.Echo objRecordSet.Fields("SN").Value
Wscript.Echo objRecordSet.Fields("title").Value
Wscript.Echo _
objRecordSet.Fields("telephoneNumber").Value
objRecordSet.MoveNext
Loop
Search for User Accounts That Have Been Disabled
On Error Resume Next
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.CommandText = _
"<LDAP://dc=fabrikam,dc=com>;(&(objectCategory=User)" & _
"(userAccountControl:1.2.840.113556.1.4.803:=2));Name;Subtree"
Set objRecordSet = objCommand.Execute
objRecordSet.MoveFirst
Do Until objRecordSet.EOF
Wscript.Echo objRecordSet.Fields("Name").Value
objRecordSet.MoveNext
Loop
Search for User Phone Numbers Beginning with 425
On Error Resume Next
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.CommandText = _
"<LDAP://dc=fabrikam,dc=com>;(&(objectCategory=User)" & _
"(telephoneNumber=425*));Name;Subtree"
Set objRecordSet = objCommand.Execute
objRecordSet.MoveFirst
Do Until objRecordSet.EOF
Wscript.Echo objRecordSet.Fields("Name").Value
objRecordSet.MoveNext
Loop
Search for Users Accounts That are Locked Out
On Error Resume Next
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.CommandText = _
"<LDAP://dc=fabrikam,dc=com>;(&(objectCategory=User)" & _
"(userAccountControl:1.2.840.113556.1.4.803:=10));Name;Subtree"
Set objRecordSet = objCommand.Execute
objRecordSet.MoveFirst
Do Until objRecordSet.EOF
Wscript.Echo objRecordSet.Fields("Name").Value
objRecordSet.MoveNext
Loop
Search for Users in a Specific Department
On Error Resume Next
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.CommandText = _
"<LDAP://dc=fabrikam,dc=com>;(&(objectCategory=User)" & _
"(department=Finance));Name;Subtree"
Set objRecordSet = objCommand.Execute
objRecordSet.MoveFirst
Do Until objRecordSet.EOF
Wscript.Echo objRecordSet.Fields("Name").Value
objRecordSet.MoveNext
Loop
Search for Users in One of Two Departments
On Error Resume Next
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.CommandText = _
"<LDAP://dc=fabrikam,dc=com>;(|(department=Finance)" & _
"(department=Research));Name;Subtree"
Set objRecordSet = objCommand.Execute
objRecordSet.MoveFirst
Do Until objRecordSet.EOF
Wscript.Echo objRecordSet.Fields("Name").Value
objRecordSet.MoveNext
Loop
Search for Users Not in a Specific Department
On Error Resume Next
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.CommandText = _
"<LDAP://dc=fabrikam,dc=com>;(&(objectCategory=User)" & _
"(!(department=Finance)));Name;Subtree"
Set objRecordSet = objCommand.Execute
objRecordSet.MoveFirst
Do Until objRecordSet.EOF
Wscript.Echo objRecordSet.Fields("Name").Value
objRecordSet.MoveNext
Loop
Search For Users with Non-Expiring Passwords
On Error Resume Next
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.CommandText = _
"<LDAP://dc=fabrikam,dc=com>;(&(objectCategory=User)" & _
"(userAccountControl:1.2.840.113556.1.4.803:=65536));Name;Subtree"
Set objRecordSet = objCommand.Execute
objRecordSet.MoveFirst
Do Until objRecordSet.EOF
Wscript.Echo objRecordSet.Fields("Name").Value
objRecordSet.MoveNext
Loop
Search for Users Without a Phone Number
On Error Resume Next
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.CommandText = _
"<LDAP://dc=fabrikam,dc=com>;(&(objectCategory=User)" & _
"(!(telephoneNumber=*)));Name;Subtree"
Set objRecordSet = objCommand.Execute
objRecordSet.MoveFirst
Do Until objRecordSet.EOF
Wscript.Echo objRecordSet.Fields("Name").Value
objRecordSet.MoveNext
Loop
Sort a Recordset by User Name
On Error Resume Next
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.Properties("Sort on") = "Name"
objCommand.CommandText = _
"SELECT Name FROM 'LDAP://dc=fabrikam,dc=com' WHERE " _
& "objectCategory='user'"
Set objRecordSet = objCommand.Execute
objRecordSet.MoveFirst
Do Until objRecordSet.EOF
Wscript.Echo objRecordSet.Fields("Name").Value
objRecordSet.MoveNext
Loop
Use a Search to Modify Objects
On Error Resume Next
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 ADsPath FROM 'LDAP://dc=fabrikam,dc=com' WHERE " _
& "objectCategory='user' AND Department='Accounting'"
Set objRecordSet = objCommand.Execute
objRecordSet.MoveFirst
Do Until objRecordSet.EOF
strPath = objRecordSet.Fields("AdsPath").Value
Set objUser = GetObject(strPath)
objUser.Department = "Finance"
objUser.SetInfo
objRecordSet.MoveNext
Loop
Use a Wildcard in a SQL Query
On Error Resume Next
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='group' AND cn = 'HR*' "
Set objRecordSet = objCommand.Execute
objRecordSet.MoveFirst
Do Until objRecordSet.EOF
Wscript.Echo objRecordSet.Fields("cn").Value
objRecordSet.MoveNext
Loop
Use an LDAP OR Filter in a Search
On Error Resume Next
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.CommandText = _
"<LDAP://dc=fabrikam,dc=com>;(&(objectCategory=User)" & _
"(|(department=Finance)(department=Research)));Name;Subtree"
Set objRecordSet = objCommand.Execute
objRecordSet.MoveFirst
Do Until objRecordSet.EOF
Wscript.Echo objRecordSet.Fields("Name").Value
objRecordSet.MoveNext
Loop
'CreateorEditaShortcut(Shelllink.lnk)
SetShell=CreateObject("WScript.Shell")
DesktopPath=Shell.SpecialFolders("Desktop")
Setlink=Shell.CreateShortcut(DesktopPath&"\startnotepad.lnk")
link.Arguments="test.txt"
link.Description="notepadshortcut"
link.HotKey="CTRL+ALT+SHIFT+X"
link.IconLocation="c:\windows\system32\notepad.exe,0"
link.TargetPath="c:\windows\system32\notepad.exe"
link.WindowStyle=1
link.WorkingDirectory="c:\temp"
link.Save
Auto-Generate a File Name
Set objFSO = CreateObject("Scripting.FileSystemObject")
For i = 1 to 10
strTempFile = objFSO.GetTempName
Wscript.Echo strTempFile
Next
Create a Text File
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objFile = objFSO.CreateTextFile("C:\FSO\ScriptLog.txt")
Create and Auto-Name a Text File
Set objFSO = CreateObject("Scripting.FileSystemObject")
strPath = "C:\FSO"
strFileName = objFSO.GetTempName
strFullName = objFSO.BuildPath(strPath, strFileName)
Set objFile = objFSO.CreateTextFile(strFullName)
objFile.Close
objFSO.DeleteFile(strFullName)
'ConvertUTF-8filetoANSI
currentdir=Left(WScript.ScriptFullName,InStrRev(WScript.ScriptFullName,"\"))
source=currentdir&"source.txt"
dest=currentdir&"dest.txt"
charset="Windows-1252"
Setstream=CreateObject("ADODB.Stream")
stream.Open
stream.Type=1
stream.LoadFromFilesource
stream.Type=2
stream.Charset="utf-8"
Dimfso
Setfso=CreateObject("Scripting.Filesystemobject")
Setf=fso.CreateTextFile(dest,True)
DoUntilstream.EOS
strLine=stream.ReadText(10000)
Setoutput=CreateObject("ADODB.Stream")
output.Open
output.Type=2
output.Charset=charset
output.WriteTextstrLine
output.Position=0
str=output.ReadText(-1)
f.Writestr
Loop
f.Close
stream.Close
Modify the ODBC Default Value to Comma-Delimited When Reading Text Files
Const HKEY_LOCAL_MACHINE = &H80000002
strComputer = "."
Set objReg=GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & _
strComputer & "\root\default:StdRegProv")
strKeyPath = "SOFTWARE\Microsoft\Jet\4.0\Engines\Text"
strValueName = "Format"
strValue = "CSVDelimited"
objReg.SetStringValue _
HKEY_LOCAL_MACHINE,strKeyPath,strValueName,strValue
Modify the ODBC Default Value to Tab-Delimited When Reading Text Files
Const HKEY_LOCAL_MACHINE = &H80000002
strComputer = "."
Set objReg=GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & _
strComputer & "\root\default:StdRegProv")
strKeyPath = "SOFTWARE\Microsoft\Jet\4.0\Engines\Text"
strValueName = "Format"
strValue = "TabDelimited"
objReg.SetStringValue HKEY_LOCAL_MACHINE,strKeyPath,strValueName,strValue
Read a CSV File Using Database Techniques
On Error Resume Next
Const adOpenStatic = 3
Const adLockOptimistic = 3
Const adCmdText = &H0001
Set objConnection = CreateObject("ADODB.Connection")
Set objRecordSet = CreateObject("ADODB.Recordset")
strPathtoTextFile = "C:\Databases\"
objConnection.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=" & strPathtoTextFile & ";" & _
"Extended Properties=""text;HDR=YES;FMT=Delimited"""
objRecordset.Open "SELECT * FROM PhoneList.csv", _
objConnection, adOpenStatic, adLockOptimistic, adCmdText
Do Until objRecordset.EOF
Wscript.Echo "Name: " & objRecordset.Fields.Item("Name")
Wscript.Echo "Department: " & _
objRecordset.Fields.Item("Department")
Wscript.Echo "Extension: " & objRecordset.Fields.Item("Extension")
objRecordset.MoveNext
Loop
Read a Fixed-Width Text File Using Database Techniques
On Error Resume Next
Const adOpenStatic = 3
Const adLockOptimistic = 3
Const adCmdText = &H0001
Set objConnection = CreateObject("ADODB.Connection")
Set objRecordSet = CreateObject("ADODB.Recordset")
strPathtoTextFile = "C:\Databases\"
objConnection.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=" & strPathtoTextFile & ";" & _
"Extended Properties=""text;HDR=YES;FMT=FixedLength"""
objRecordset.Open "SELECT * FROM PhoneList.txt", _
objConnection, adOpenStatic, adLockOptimistic, adCmdText
Do Until objRecordset.EOF
Wscript.Echo "Name: " & objRecordset.Fields.Item("FirstName")
Wscript.Echo "Department: " & objRecordset.Fields.Item("LastName")
Wscript.Echo "Extension: " & objRecordset.Fields.Item("ID")
objRecordset.MoveNext
Loop
Read a Text File Character-by-Character
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objFile = objFSO.OpenTextFile("C:\FSO\New Text Document.txt", 1)
Do Until objFile.AtEndOfStream
strCharacters = objFile.Read(1)
Wscript.Echo strCharacters
Loop
Read a Text File from the Bottom Up
Dim arrFileLines()
i = 0
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objFile = objFSO.OpenTextFile("C:\FSO\ScriptLog.txt", 1)
Do Until objFile.AtEndOfStream
Redim Preserve arrFileLines(i)
arrFileLines(i) = objFile.ReadLine
i = i + 1
Loop
objFile.Close
For l = Ubound(arrFileLines) to LBound(arrFileLines) Step -1
Wscript.Echo arrFileLines(l)
Next
Read a Text File into an Array
Const ForReading = 1
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objTextFile = objFSO.OpenTextFile _
("c:\scripts\servers and services.txt", ForReading)
Do Until objTextFile.AtEndOfStream
strNextLine = objTextFile.Readline
arrServiceList = Split(strNextLine , ",")
Wscript.Echo "Server name: " & arrServiceList(0)
For i = 1 to Ubound(arrServiceList)
Wscript.Echo "Service: " & arrServiceList(i)
Next
Loop
'ReadanEntireTextFile
ConstForReading=1
SetobjFSO=CreateObject("Scripting.FileSystemObject")
SetobjTextFile=objFSO.OpenTextFile("c:\temp\myfile.txt",ForReading)
contents=objTextFile.ReadAll
objTextFile.Close
WScript.Echocontents
Verify the Size of a File Before Reading It
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objFile = objFSO.GetFile("C:\Windows\Netlogon.log")
If objFile.Size > 0 Then
Set objReadFile = objFSO.OpenTextFile("C:\Windows\Netlogon.log", 1)
strContents = objReadFile.ReadAll
Wscript.Echo strContents
objReadFile.Close
Else
Wscript.Echo "The file is empty."
End If
Writing Data to a Text File
Const ForAppending = 8
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objTextFile = objFSO.OpenTextFile _
("c:\scripts\service_status.txt", ForAppending, True)
Set objWMIService=GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & _
strComputer & "\root\cimv2")
Set colServices = objWMIService.ExecQuery("Select * from Win32_Service")
For Each objService in colServices
objTextFile.WriteLine(objService.DisplayName & vbTab & _
objService.State)
Next
objTextFile.Close
Writing String Content to End of Existing Text File
Const FOR_APPENDING = 8
strFileName = "C:\scripts\testfile.txt"
strContent= "sample string content"
Set objFS = CreateObject("Scripting.FileSystemObject")
Set objTS = objFS.OpenTextFile(strFileName,FOR_APPENDING)
objTS.Write strContent
Writing String Content to Beginning of Existing Text File
Const FOR_READING = 1
Const FOR_WRITING = 2
strFileName = "C:\scripts\test.txt"
strNewContent= "sample string content"
Set objFS = CreateObject("Scripting.FileSystemObject")
Set objTS = objFS.OpenTextFile(strFileName,FOR_READING)
strContents = objTS.ReadAll
objTS.Close
Set objTS = objFS.OpenTextFile(strFileName,FOR_WRITING)
objTS.WriteLine strNewContent
objTS.Write strContents
Writing String Content Following n-th Line of Existing Text File
Const FOR_READING = 1
Const FOR_WRITING = 2
strFileName = "C:\scripts\test.txt"
strNewContent = "sample string content"
iInsertAfterLineNumber = 3
Set objFS = CreateObject("Scripting.FileSystemObject")
Set objTS = objFS.OpenTextFile(strFileName,FOR_READING)
strContents = objTS.ReadAll
objTS.Close
Set objTS = objFS.OpenTextFile(strFileName,FOR_WRITING)
arrLines= Split(strContents, vbNewLine)
For i=0 To UBound(arrLines)
If i = iInsertAfterLineNumber Then
objTS.WriteLine strNewContent
End If
objTS.WriteLine arrLines(i)
Next
Deleting Files in a Directory with Names That Match a Regular Expression
strFolderName = "C:\scripts\textfiles\delete\"
strREPattern = "log\d\d_\d\d05\.txt"
Set objFS = CreateObject("Scripting.FileSystemObject")
Set objFolder = objFS.GetFolder(strFolderName)
Set objRE = new RegExp
objRE.Pattern= strREPattern
objRE.IgnoreCase = True
For Each objFile In objFolder.Files
If objRE.Test(objFile.Name) Then
objFS.DeleteFile(strFolderName & objFile.Name)
End If
Next
Read n-th Line of a Text File
Const FOR_READING = 1
strFilePath = "C:\scripts\test.txt"
iLineNumber = 5
Set objFS = CreateObject("Scripting.FileSystemObject")
Set objTS = objFS.OpenTextFile(strFilePath, FOR_READING)
For i=1 To (iLineNumber-1)
objTS.SkipLine
Next
WScript.Echo objTS.Readline
Delete n-th Line of a Text File
Const FOR_READING = 1
Const FOR_WRITING = 2
strFileName = "C:\scripts\test.txt"
iLineNumber = 3
Set objFS = CreateObject("Scripting.FileSystemObject")
Set objTS = objFS.OpenTextFile(strFileName, FOR_READING)
strContents = objTS.ReadAll
objTS.Close
Set objTS = objFS.OpenTextFile(strFileName, FOR_WRITING)
arrLines = Split(strContents,vbNewLine)
For i=0 To UBound(arrLines)
If i<> (iLineNumber-1) Then
objTS.WriteLine arrLines(i)
End If
Next
Delete First n Lines of a Text File
Const FOR_READING = 1
Const FOR_WRITING = 2
strFileName = "C:\scripts\test.txt"
iNumberOfLinesToDelete = 5
Set objFS = CreateObject("Scripting.FileSystemObject")
Set objTS = objFS.OpenTextFile(strFileName, FOR_READING)
strContents = objTS.ReadAll
objTS.Close
arrLines = Split(strContents, vbNewLine)
Set objTS = objFS.OpenTextFile(strFileName, FOR_WRITING)
For i=0 To UBound(arrLines)
If i > (iNumberOfLinesToDelete - 1) Then
objTS.WriteLine arrLines(i)
End If
Next
Delete Last n Lines of a Text File
Const FOR_READING = 1
Const FOR_WRITING = 2
strFileName = "C:\scripts\test.txt"
iNumberOfLinesToDelete = 5
Set objFS = CreateObject("Scripting.FileSystemObject")
Set objTS = objFS.OpenTextFile(strFileName, FOR_READING)
strContents = objTS.ReadAll
objTS.Close
arrLines = Split(strContents, vbNewLine)
Set objTS = objFS.OpenTextFile(strFileName, FOR_WRITING)
iIndexToDeleteFrom = UBound(arrLines)- iNumberOfLinesToDelete + 1
For i=0 To UBound(arrLines)
If i < iIndexToDeleteFrom Then
objTS.WriteLine arrLines(i)
End If
Next
Delete Line Range within a Text File
Const FOR_READING = 1
Const FOR_WRITING = 2
strFileName = "C:\scripts\test.txt"
iStartAtLineNumber = 3
iEndAtLineNumber = 7
Set objFS = CreateObject("Scripting.FileSystemObject")
Set objTS = objFS.OpenTextFile(strFileName, FOR_READING)
strContents = objTS.ReadAll
objTS.Close
arrLines = Split(strContents, vbNewLine)
Set objTS = objFS.OpenTextFile(strFileName, FOR_WRITING)
For i=0 To UBound(arrLines)
If i < (iStartAtLineNumber-1) OR i > (iEndAtLineNumber-1) Then
objTS.WriteLine arrLines(i)
End If
Next
Delete Lines of a Text File Beginning with a Specified String
Const FOR_READING = 1
Const FOR_WRITING = 2
strFileName = "C:\scripts\test.txt"
strCheckForString = UCase("july")
Set objFS = CreateObject("Scripting.FileSystemObject")
Set objTS = objFS.OpenTextFile(strFileName, FOR_READING)
strContents = objTS.ReadAll
objTS.Close
arrLines = Split(strContents, vbNewLine)
Set objTS = objFS.OpenTextFile(strFileName, FOR_WRITING)
For Each strLine In arrLines
If Not(Left(UCase(LTrim(strLine)),Len(strCheckForString)) = strCheckForString) Then
objTS.WriteLine strLine
End If
Next
Delete All Contents of a Text File
Const FOR_WRITING = 2
strFileName = "C:\scripts\test.txt"
Set objFS = CreateObject("Scripting.FileSystemObject")
Set objTS = objFS.OpenTextFile(strFileName, FOR_WRITING)
'RemoveUTF-8ByteOrderMark(BOM)fromatextfile
'UsingVbsedit'sfreeToolkit
Settoolkit=CreateObject("Vbsedit.Toolkit")
toolkit.RemoveBOM"C:\my_utf8_file.txt"
'AddUTF-8ByteOrderMark(BOM)toatextfile
'UsingVbsedit'sfreeToolkit
Settoolkit=CreateObject("Vbsedit.Toolkit")
toolkit.AddBOM"C:\my_utf8_file.txt"
'RemoveUTF-16ByteOrderMark(BOM)fromatextfile
'UsingVbsedit'sfreeToolkit
Settoolkit=CreateObject("Vbsedit.Toolkit")
toolkit.RemoveBOM"C:\my_utf8_file.txt"
'AddUTF-16ByteOrderMark(BOM)toatextfile
'UsingVbsedit'sfreeToolkit
Settoolkit=CreateObject("Vbsedit.Toolkit")
'ForUTF-16BigEndian-FEFF
toolkit.AddBOM"C:\my_utf8_file.txt",1
'ForUTF-16LittleEndian-FFFE
toolkit.AddBOM"C:\my_utf8_file.txt",2
'CheckwhetherafileisvalidUTF-8
WScript.EchoCheckValidUtf8("utf8.txt")
FunctionCheckValidUtf8(path)
limit=10000
SetStream=CreateObject("ADODB.Stream")
Stream.Type=1'Binary
Stream.Open
Stream.LoadFromFilepath
s=Stream.Read(limit)
Stream.Close
l=LenB(s)
ret=True
Fori=1Tol
a=AscB(MidB(s,i,1))
r0=aAnd&H80
r1=aAnd&HC0
r2=aAnd&HE0
r3=aAnd&HF0
r4=aAnd&HF8
Ifn>0Then
Ifr1=&H80Then
n=n-1
Else
ret=False
ExitFor
EndIf
Else
Ifr4=&HF0Then
n=3
ElseIfr3=&HE0Then
n=2
ElseIfr2=&HC0Then
n=1
ElseIfr0=0Then
n=0
Else
ret=False
ExitFor
EndIf
EndIf
Next
CheckValidUtf8=ret
EndFunction
'Modify the Value of a Text Area
Sub RunScript
BasicTextArea.Value = "This information will be placed in the " & _
"multi-line text box named BasicTextArea."
End Sub
Add a Button to a Web Page
<input id=runbuttonclass="button" type="button" value="Run Button" name="run_button"onClick="RunScript">
Add a Checkbox to a Web Page
<input type="checkbox"name="BasicCheckbox"value="1"> Option 1
Add a Hyperlink
<a href="/technet/scriptcenter" target="blank">Script Center</a>
Add a Listbox
<select size="3" name="Listbox1" onChange="RunScript">
<option value="1">Option 1</option>
<option value="2">Option 2</option>
<option value="3">Option 3</option>
<option value="4">Option 4</option>
</select>
Add a Multi-select Listbox
<select size="3" name="DropDown1" multiple>
<option value="1">Option 1</option>
<option value="2">Option 2</option>
<option value="3">Option 3</option>
<option value="4">Option 4</option>
</select>
Add a Password Box
<input type="password" name="PasswordArea" size="30">
Add a SPAN
<span id=DataArea>This is a span named DataArea.</span>
Add a Text Area
<textarea name="BasicTextArea" rows="5" cols="75"></textarea>
Add a Text Box
<input type="text" name="BasicTextBox" size="50">
Add a Tooltip to a Button
<input id=runbuttonclass="button" type="button" value="Run Button" name="run_button"onClick="RunScript" title="Click here to change the tool tip.">
Add Radio Buttons
<input type="radio" name="UserOption" value="1">Option 1<BR>
<input type="radio" name="UserOption" value="2">Option 2<BR>
<input type="radio" name="UserOption" value="3">Option 3<BR>
Copy Text to the Clipboard in HTML Applications (HTAs)
Sub RunScript
strCopy = BasicTextArea.Value
document.parentwindow.clipboardData.SetData "text", strCopy
End Sub
Create a Basic HTA
<html>
<head>
<title>HTA Helpomatic</title>
<HTA:APPLICATION
ID="objHTAHelpomatic"
APPLICATIONNAME="HTAHelpomatic"
SCROLL="yes"
SINGLEINSTANCE="yes"
WINDOWSTATE="maximize"
>
</head>
<SCRIPT Language="VBScript">
</SCRIPT>
<body>
</body>
</html>
Create a Disabled Control
<select size="3" name="Dropdown1" Disabled=True>
<option value="1">Option 1</option>
<option value="2">Option 2</option>
<option value="3">Option 3</option>
<option value="4">Option 4</option>
</select>
Create a Dropdown List
<select size="1" name="DropDown1" onChange="RunScript">
<option value="1">Option 1</option>
<option value="2">Option 2</option>
<option value="3">Option 3</option>
<option value="4">Option 4</option>
</select>
Create a Formatted Table
<table width="100%">
<tr bgcolor="white" align="center" valign="top">
<td>Row 1, Column 1</td>
<td>Row 1, Column 2</td>
</tr>
<tr bgcolor="yellow" align="right" valign="top">
<td>Row 1, Column 1</td>
<td>Row 1, Column 2</td>
</tr>
</table>
Create a Four-Column Table
<table width="100%" border>
<tr>
<td width="25%" valign="top">Row 1, Column 1</td>
<td width="25%" valign="top">Row 1, Column 2</td>
<td width="25%" valign="top">Row 1, Column 3</td>
<td width="25%" valign="top">Row 1, Column 4</td>
</tr>
</table>
Create a Three-Column Table
<table width="100%" border>
<tr>
<td width="33%" valign="top" border= "black">Row 1, Column 1</td>
<td width="33%" valign="top">Row 1, Column 2</td>
<td width="33%" valign="top">Row 1, Column 3</td>
</tr>
</table>
Create a Timer
Sub Window_OnLoad
iTimerID = window.setInterval("RunScript", 5000, "VBScript")
End Sub
Create a Two-Column Table
<table width="100%" border>
<tr>
<td width="50%" valign="top">Row 1, Column 1</td>
<td width="50%" valign="top">Row 1, Column 2</td>
</tr>
</table>
Create an Instance of Internet Explorer
Set objExplorer = WScript.CreateObject("InternetExplorer.Application")
objExplorer.Navigate "about:blank"
objExplorer.ToolBar = 0
objExplorer.StatusBar = 0
objExplorer.Width=300
objExplorer.Height = 150
objExplorer.Left = 0
objExplorer.Top = 0
objExplorer.Visible = 1
Disable a Control
Sub RunScript
DropDown1.Disabled = False
End Sub
Display a Confirmation Box
Sub RunScript
blnAnswer = window.confirm("Are you sure you want to continue?")
If blnAnswer Then
Msgbox "You clicked the OK button"
Else
Msgbox "You clicked the Cancel button."
End If
End Sub
Display a Message Box
Sub RunScript
Msgbox "Test"
End Sub
Display Data in a New Window
Sub RunScript
Set objIE = CreateObject("InternetExplorer.Application")
objIE.Navigate("about:blank")
objIE.ToolBar = 0
objIE.StatusBar = 0
Set objDoc = objIE.Document.Body
strHTML = "<B>This information is displayed in a separate window.</B>"
objDoc.InnerHTML = strHTML
objIE.Visible = True
End Sub
Display the Print Dialog Box
Sub RunScript
Window.Print()
End Sub
Format Fonts
<font color="red" face="Times New Roman" size="6">Your text goes here</font>
List Selected Items in a Multi-select Listbox
Sub RunScript
For i = 0 to (Dropdown1.Options.Length - 1)
If (Dropdown1.Options(i).Selected) Then
strComputer = strComputer & Dropdown1.Options(i).Value & vbcrlf
End If
Next
Msgbox strComputer
End Sub
List the Value of a Checkbox
Sub RunScript
If BasicCheckbox.Checked Then
Msgbox "The checkbox has been checked."
Else
Msgbox "The checkbox has not been checked."
End If
End Sub
List the Value of a Dropdown List
Sub RunScript
Msgbox DropDown1.Value
End Sub
List the Value of a Listbox
Sub RunScript
Msgbox Listbox1.Value
End Sub
List the Value of a Password Box
Sub RunScript
Msgbox PasswordArea.Value
End Sub
List the Value of a Text Box
Sub RunScript
Msgbox BasicTextBox.Value
End Sub
Modify the Cursor Type
Sub RunScript
document.body.style.cursor = "wait"
End Sub
Modify the Value of a SPAN
Sub RunScript
DataArea.InnerHTML = "<B>The computer did not respond when pinged.</B>"
End Sub
Modify the Value of a Tooltip
Sub RunScript
Run_Button.Title = "You successfully changed the tool tip."
End Sub
Paste Text from the Clipboard
Sub RunScript
DataArea.InnerHTML = document.parentwindow.clipboardData.GetData("text")
End Sub
Populate a Listbox Using the Contents of a Text File
Sub Window_Onload
ForReading = 1
strNewFile = "computers.txt"
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objFile = objFSO.OpenTextFile _
(strNewFile, ForReading)
Do Until objFile.AtEndOfStream
strLine = objFile.ReadLine
Set objOption = Document.createElement("OPTION")
objOption.Text = strLine
objOption.Value = strLine
AvailableComputers.Add(objOption)
Loop
objFile.Close
End Sub
Prompt a User for Input
Sub RunScript
strAnswer = window.prompt("Please enter the domain name.", "fabrikam.com")
If IsNull(strAnswer) Then
Msgbox "You clicked the Cancel button"
Else
Msgbox "You entered: " & strAnswer
End If
End Sub
Reload a Page
Sub RunScript
Location.Reload(True)
End Sub
Run a Script Each Time a Page Loads
Sub Window_Onload
Msgbox "The application has started."
End Sub
Save Data to an HTML File
Sub RunScript
Set objFSO = CreateObject("Scripting.FileSystemObject")
objFSO.CreateTextFile("test.htm")
Set objFile = objFSO.OpenTextFile("test.htm", 2)
objFile.WriteLine DataArea.InnerHTML
objFile.Close
End Sub
Verify That a Radio Button Has Been Selected
Sub RunScript
If UserOption(0).Checked Then
Msgbox "Option 1 was selected."
End If
If UserOption(1).Checked Then
Msgbox "Option 2 was selected."
End If
If UserOption(2).Checked Then
Msgbox "Option 3 was selected."
End If
End Sub
Monitor Baseline Performance
Const ForAppending = 8
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
set objRefresher = CreateObject("WbemScripting.Swbemrefresher")
Set objMemory = objRefresher.AddEnum _
(objWMIService, "Win32_PerfFormattedData_PerfOS_Memory").objectSet
Set objDiskSpace = objRefresher.AddEnum _
(objWMIService, "Win32_PerfFormattedData_PerfDisk_LogicalDisk").objectSet
Set objQueueLength = objRefresher.AddEnum _
(objWMIService, "Win32_PerfFormattedData_PerfNet_ServerWorkQueues").objectSet
objRefresher.Refresh
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objLogFile = objFSO.OpenTextFile _
("c:\scripts\performance.csv", ForAppending, True)
For i = 1 to 10
For Each intAvailableBytes in objMemory
objLogFile.Write(intAvailableBytes.AvailableMBytes) & ","
Next
For each intQueueLength in objDiskSpace
objLogFile.Write(intQueueLength.CurrentDiskQueueLength) & ","
Next
For each intServerQueueLength in objQueueLength
objLogFile.Write(intServerQueueLength.QueueLength) & ","
Next
objLogFile.Write VbCrLf
Wscript.Sleep 10000
objRefresher.Refresh
Next
objLogFile.Close
Create a Permanent Event Consumer
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\default")
Set objConsumerType = objWMIService.get("SMTPEventConsumer")
Set objConsumer = objConsumerType.SpawnInstance_
objConsumer.Name = "Service Monitor Consumer"
objConsumer.Message = "A service has changed state."
objConsumer.SMTPServer = "mailserver.fabrikam.com"
objConsumer.Subject = "Service state change"
objConsumer.ToLine = "administrator@fabrikam.com"
objConsumer.Put_
Create a Permanent Event Filter
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\default")
strFilterQuery = "Select * from __InstanceModificationEvent within 3 " & _
"where TargetInstance isa 'Win32_Service'"
Set objFilterClass = objWMIService.get("__EventFilter")
Set objFilter = objFilterClass.SpawnInstance_
objFilter.Name = "Service Monitor Filter"
objFilter.QueryLanguage = "wql"
objFilter.Query = strFilterQuery
objFilter.Put_
List All Abstract Classes in WMI
strComputer = "."
Set objWMIService=GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & _
strComputer & "\root\cimv2")
Set colClasses = objWMIService.SubclassesOf()
For Each objClass in colClasses
For Each objClassQualifier In objClass.Qualifiers_
If LCase(objClassQualifier.Name) = "abstract" Then
WScript.Echo objClass.Path_.Class & ": " & _
objClassQualifier.Name & "=" & _
objClassQualifier.Value
End If
Next
Next
List All Dynamic Classes in WMI
strComputer = "."
Set objWMIService=GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & _
strComputer & "\root\cimv2")
Set colClasses = objWMIService.SubclassesOf()
For Each objClass in colClasses
For Each objClassQualifier In objClass.Qualifiers_
If LCase(objClassQualifier.Name) = "dynamic" Then
WScript.Echo objClass.Path_.Class & ": " & _
objClassQualifier.Name & "=" & _
objClassQualifier.Value
End If
Next
Next
List All the Properties and Methods for a WMI Class
strComputer = "."
strNameSpace = "root\cimv2"
strClass = "Win32_Service"
Set objClass = GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & _
strComputer & "\" & strNameSpace & ":" & strClass)
WScript.Echo strClass & " Class Qualifiers"
WScript.Echo "------------------------------"
i = 1
For Each objClassQualifier In objClass.Qualifiers_
If VarType(objClassQualifier.Value) = (vbVariant + vbArray) Then
strQualifier = i & ". " & objClassQualifier.Name & " = " & _
Join(objClassQualifier.Value, ",")
Else
strQualifier = i & ". " & objClassQualifier.Name & " = " & _
objClassQualifier.Value
End If
WScript.Echo strQualifier
strQualifier = ""
i = i + 1
Next
WScript.Echo
WScript.Echo strClass & " Class Properties and Property Qualifiers"
WScript.Echo "------------------------------------------------------"
i = 1 : j = 1
For Each objClassProperty In objClass.Properties_
WScript.Echo i & ". " & objClassProperty.Name
For Each objPropertyQualifier In objClassProperty.Qualifiers_
If VarType(objPropertyQualifier.Value) = (vbVariant + vbArray) Then
strQualifier = i & "." & j & ". " & _
objPropertyQualifier.Name & " = " & _
Join(objPropertyQualifier.Value, ",")
Else
strQualifier = i & "." & j & ". " & _
objPropertyQualifier.Name & " = " & _
objPropertyQualifier.Value
End If
WScript.Echo strQualifier
strQualifier = ""
j = j + 1
Next
WScript.Echo
i = i + 1 : j = 1
Next
WScript.Echo
WScript.Echo strClass & " Class Methods and Method Qualifiers"
WScript.Echo "-------------------------------------------------"
i = 1 : j = 1
For Each objClassMethod In objClass.Methods_
WScript.Echo i & ". " & objClassMethod.Name
For Each objMethodQualifier In objClassMethod.Qualifiers_
If VarType(objMethodQualifier.Value) = (vbVariant + vbArray) Then
strQualifier = i & "." & j & ". " & _
objMethodQualifier.Name & " = " & _
Join(objMethodQualifier.Value, ",")
Else
strQualifier = i & "." & j & ". " & _
objMethodQualifier.Name & " = " & _
objMethodQualifier.Value
End If
WScript.Echo strQualifier
strQualifier = ""
j = j + 1
Next
WScript.Echo
i = i + 1 : j = 1
Next
List All the Properties and Methods of the Win32 Classes
strComputer = "."
Set objWMIService=GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & _
strComputer & "\root\cimv2")
For Each objclass in objWMIService.SubclassesOf()
intCounter=0
If Left(objClass.Path_.Class,5) = "Win32" Then
For Each Qualifier in objClass.Qualifiers_
If UCase(Trim(Qualifier.Name)) = "ASSOCIATION" Then
intCounter = 1
End If
Next
If x = 0 Then
strComputer = "."
Set objWMIService = GetObject _
("winmgmts:{impersonationLevel=impersonate}!\\" & _
strComputer & "\root\cimv2")
Set strClass = objWMIService.Get(objClass.Path_.Class)
Wscript.Echo "PROPERTIES:"
For each strItem in strClass.properties_
Wscript.Echo objClass.Path_.Class & vbTab & strItem.name
Next
Wscript.Echo "METHODS:"
For Each strItem in strClass.methods_
Wscript.Echo objClass.Path_.Class & vbTab & strItem.name
Next
End If
End If
Next
List All the Properties for a WMI Class
strComputer = "."
strNameSpace = "root\cimv2"
strClass = "Win32_Service"
Set objClass = GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & _
strComputer & "\" & strNameSpace & ":" & strClass)
WScript.Echo strClass & " Class Properties"
WScript.Echo "------------------------------"
For Each objClassProperty In objClass.Properties_
WScript.Echo objClassProperty.Name
Next
List All the Qualifiers for a WMI Class
strComputer = "."
strNameSpace = "root\cimv2"
strClass = "Win32_Service"
Set objClass = GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & _
strComputer & "\" & strNameSpace & ":" & strClass)
WScript.Echo strClass & " Class Qualifiers"
WScript.Echo "------------------------------"
For Each objClassQualifier In objClass.Qualifiers_
If VarType(objClassQualifier.Value) = (vbVariant + vbArray) Then
strQualifier = objClassQualifier.Name & " = " & _
Join(objClassQualifier.Value, ",")
Else
strQualifier = objClassQualifier.Name & " = " & _
objClassQualifier.Value
End If
WScript.Echo strQualifier
strQualifier = ""
Next
List All the WMI cimV2 Classes
strComputer = "."
Set objWMIService=GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & _
strComputer & "\root\cimv2")
For Each objclass in objWMIService.SubclassesOf()
Wscript.Echo objClass.Path_.Class
Next
List All the WMI Methods for a Class
strComputer = "."
strNameSpace = "root\cimv2"
strClass = "Win32_Service"
Set objClass = GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & _
strComputer & "\" & strNameSpace & ":" & strClass)
WScript.Echo strClass & " Class Methods"
WScript.Echo "---------------------------"
For Each objClassMethod In objClass.Methods_
WScript.Echo objClassMethod.Name
Next
List All the WMI Namespaces
strComputer = "."
Set objWMIService=GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & _
strComputer & "\root")
Set colNameSpaces = objWMIService.InstancesOf("__NAMESPACE")
For Each objNameSpace In colNameSpaces
WScript.Echo objNameSpace.Name
Next
List All the WMI Providers
strComputer = "."
Set objWMIService=GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & _
strComputer & "\root\cimv2")
Set colWin32Providers = objWMIService.InstancesOf("__Win32Provider")
For Each objWin32Provider In colWin32Providers
WScript.Echo objWin32Provider.Name
Next
List All the WMI Settings
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colWMISettings = objWMIService.ExecQuery _
("Select * from Win32_WMISetting")
For Each objWMISetting in colWMISettings
Wscript.Echo "Default namespace: " & _
objWMISetting.ASPScriptDefaultNamespace
Wscript.Echo "Backup interval: " & objWMISetting.BackupInterval
Wscript.Echo "Last backup: " & objWMISetting.BackupLastTime
Wscript.Echo "Build version: " & objWMISetting.BuildVersion
Wscript.Echo "Repository directory: " & _
objWMISetting.DatabaseDirectory
Wscript.Echo "Enable events: " & objWMISetting.EnableEvents
Wscript.Echo "High threshold on client objects: " & _
objWMISetting.HighThresholdOnClientObjects
Wscript.Echo "High threshold on events: " & _
objWMISetting.HighThresholdOnEvents
Wscript.Echo "Installation folder: " & _
objWMISetting.InstallationDirectory
Wscript.Echo "Logging folder: " & objWMISetting.LoggingDirectory
Wscript.Echo "Logging level: " & objWMISetting.LoggingLevel
Wscript.Echo "Low threshold on client objects: " & _
objWMISetting.LowThresholdOnClientObjects
Wscript.Echo "Low threshold on events: " & _
objWMISetting.LowThresholdOnEvents
Wscript.Echo "Maximum log file size: " & objWMISetting.MaxLogFileSize
Wscript.Echo "Maximum wait time on client objects: " & _
objWMISetting.MaxWaitOnClientObjects
Wscript.Echo "Maximum wait time on events: " & _
objWMISetting.MaxWaitOnEvents
Wscript.Echo "MOF Self-install folder: " & _
objWMISetting.MofSelfInstallDirectory
For i = 0 to Ubound(objWMISetting.AutorecoverMofs)
Wscript.Echo "Autorecover MOF: " & _
objWMISetting.AutorecoverMofs(i)
Next
Next
List All WMI Namespaces
strComputer = "."
Call EnumNameSpaces("root")
Sub EnumNameSpaces(strNameSpace)
WScript.Echo strNameSpace
Set objWMIService=GetObject _
("winmgmts:{impersonationLevel=impersonate}\\" & _
strComputer & "\" & strNameSpace)
Set colNameSpaces = objWMIService.InstancesOf("__NAMESPACE")
For Each objNameSpace In colNameSpaces
Call EnumNameSpaces(strNameSpace & "\" & objNameSpace.Name)
Next
End Sub
List Computer Hardware
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colMice = objWMIService.ExecQuery _
("Select * from Win32_PointingDevice")
For Each objMouse in colMice
Wscript.Echo "Hardware Type: " & objMouse.HardwareType
Wscript.Echo "Number of Buttons: " & objMouse.NumberOfButtons
Wscript.Echo "Status: " & objMouse.Status
Wscript.Echo "PNP Device ID: " & objMouse.PNPDeviceID
Next
List System Information
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colSettings = objWMIService.ExecQuery _
("Select * from Win32_OperatingSystem")
For Each objOperatingSystem in colSettings
Wscript.Echo "OS Name: " & objOperatingSystem.Name
Wscript.Echo "Version: " & objOperatingSystem.Version
Wscript.Echo "Service Pack: " & _
objOperatingSystem.ServicePackMajorVersion _
& "." & objOperatingSystem.ServicePackMinorVersion
Wscript.Echo "OS Manufacturer: " & objOperatingSystem.Manufacturer
Wscript.Echo "Windows Directory: " & _
objOperatingSystem.WindowsDirectory
Wscript.Echo "Locale: " & objOperatingSystem.Locale
Wscript.Echo "Available Physical Memory: " & _
objOperatingSystem.FreePhysicalMemory
Wscript.Echo "Total Virtual Memory: " & _
objOperatingSystem.TotalVirtualMemorySize
Wscript.Echo "Available Virtual Memory: " & _
objOperatingSystem.FreeVirtualMemory
Wscript.Echo "Size stored in paging files: " & _
objOperatingSystem.SizeStoredInPagingFiles
Next
Set colSettings = objWMIService.ExecQuery _
("Select * from Win32_ComputerSystem")
For Each objComputer in colSettings
Wscript.Echo "System Name: " & objComputer.Name
Wscript.Echo "System Manufacturer: " & objComputer.Manufacturer
Wscript.Echo "System Model: " & objComputer.Model
Wscript.Echo "Time Zone: " & objComputer.CurrentTimeZone
Wscript.Echo "Total Physical Memory: " & _
objComputer.TotalPhysicalMemory
Next
Set colSettings = objWMIService.ExecQuery _
("Select * from Win32_Processor")
For Each objProcessor in colSettings
Wscript.Echo "System Type: " & objProcessor.Architecture
Wscript.Echo "Processor: " & objProcessor.Description
Next
Set colSettings = objWMIService.ExecQuery _
("Select * from Win32_BIOS")
For Each objBIOS in colSettings
Wscript.Echo "BIOS Version: " & objBIOS.Version
Next
List the Default WMI Namespace
strComputer = "."
Set objWMIService=GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & _
strComputer & "\root\cimv2")
Set colWMISettings = objWMIService.InstancesOf("Win32_WMISetting")
For Each objWMISetting in colWMISettings
Wscript.Echo "Default namespace for scripting: " & _
objWMISetting.ASPScriptDefaultNamespace
Next
List the Definition of a WMI Class in MOF Format
strComputer = "."
strNameSpace = "root\cimv2"
strClass = "Win32_Service"
Const wbemFlagUseAmendedQualifiers = &h20000
Set objClass = GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & _
strComputer & "\" & strNameSpace)
Set objClass = objWMIService.Get(strClass, wbemFlagUseAmendedQualifiers)
strMOF = objClass.GetObjectText_
WScript.Echo strMOF
Modify the Default WMI Namespace
strComputer = "."
Set objWMIService=GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & _
strComputer & "\root\cimv2")
Set colWMISettings = objWMIService.InstancesOf("Win32_WMISetting")
For Each objWMISetting in colWMISettings
objWMISetting.ASPScriptDefaultNamespace = "root\cimv2"
objWMISetting.Put_
Next
Modify WMI Settings
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colWMISettings = objWMIService.ExecQuery _
("Select * from Win32_WMISetting")
For Each objWMISetting in colWMISettings
objWMISetting.BackupInterval = 60
objWMISetting.LoggingLevel = 2
objWMISetting.Put_
Next
'EnumerateTopLevelWindows
'usingVbsedit'sfreeToolkit
Settoolkit=CreateObject("Vbsedit.Toolkit")
ForEachwIntoolkit.TopLevelWindows
WScript.Echo"["&w.IsVisible&"]["&w.Handle&"]["&w.windowtitle&_
"]["&w.ClassName&"]["&w.X&":"&w.Y&":"&w.width&":"&w.height&"]"
Next
'EnumerateAllWindows
'usingVbsedit'sfreeToolkit
Settoolkit=CreateObject("Vbsedit.Toolkit")
ForEachwindowIntoolkit.TopLevelWindows
enumWindows window,""
Next
SubenumWindows(w,indent)
WScript.Echoindent&"["&w.Handle&"]["&w.windowtitle&"]["&w.ClassName&"]["&w.X&":"&w.Y&":"&w.width&":"&w.height&"]"
ForEachchildInw.ChildWindows
enumWindowschild,indent&""
next
EndSub
'Takeafull-screenscreenshot(capturescreen)andsaveittodisk
'usingVbsedit'sfreeToolkit
Settoolkit=CreateObject("Vbsedit.Toolkit")
toolkit.DesktopWindow.Screenshot"c:\desktop.png"
'Takeascreenshot(capturewindow)andsaveittodisk
'usingVbsedit'sfreeToolkit
Settoolkit=CreateObject("Vbsedit.Toolkit")
ForEachwindowIntoolkit.TopLevelWindows
IfInStr(1,window.WindowTitle,"vbsedit",vbTextCompare)>0Then
window.Screenshot"c:\vbsedit.png"
WScript.Quit
EndIf
Next
'SimulateMouseDouble-ClickOnYourDesktop
'usingVbsedit'sfreeToolkit
Settoolkit=CreateObject("Vbsedit.Toolkit")
toolkit.DesktopWindow.Click40,30
toolkit.DesktopWindow.Click40,30
'SimulateMouseClick
'usingVbsedit'sfreeToolkit
Settoolkit=CreateObject("Vbsedit.Toolkit")
ForEachwindowIntoolkit.TopLevelWindows
IfInStr(1,window.WindowTitle,"vbsedit",vbTextCompare)>0Then
window.Click50,62
WScript.Quit
EndIf
Next
'FindapositioninWindowbasedonImage
'usingVbsedit'sfreeToolkit
Settoolkit=CreateObject("Vbsedit.Toolkit")
ForEachwindowIntoolkit.TopLevelWindows
IfInStr(1,window.WindowTitle,"vbsedit",vbTextCompare)>0Then
window.Screenshot"c:\temp\vbsedit.png"
Setimage=CreateObject("Vbsedit.ImageProcessor")
image.Load"c:\temp\vbsedit.png"
Setposition=image.FindImage("c:\temp\icon.png")
WScript.Echoposition.X
WScript.Echoposition.Y
WScript.Quit
EndIf
Next
'SimulateMouseClickinWindowatImageposition
'usingVbsedit'sfreeToolkit
Settoolkit=CreateObject("Vbsedit.Toolkit")
ForEachwindowIntoolkit.TopLevelWindows
IfInStr(1,window.WindowTitle,"vbsedit",vbTextCompare)>0Then
window.Screenshot"c:\temp\vbsedit.png"
Setimage=CreateObject("Vbsedit.ImageProcessor")
image.Load"c:\temp\vbsedit.png"
Setposition=image.FindImage("c:\temp\icon.png")
window.Clickposition.X,position.Y
WScript.Quit
EndIf
Next
Add a New Record to a Table
Const adOpenStatic = 3
Const adLockOptimistic = 3
Set objConnection = CreateObject("ADODB.Connection")
Set objRecordSet = CreateObject("ADODB.Recordset")
objConnection.Open _
"Provider = Microsoft.Jet.OLEDB.4.0; " & _
"Data Source = inventory.mdb"
objRecordSet.Open "SELECT * FROM GeneralProperties" , _
objConnection, adOpenStatic, adLockOptimistic
objRecordSet.AddNew
objRecordSet("ComputerName") = "atl-ws-01"
objRecordSet("Department") = "Human Resources"
objRecordSet("OSName") = "Microsoft Windows XP Professional"
objRecordSet("OSVersion") = "5.1.2600"
objRecordSet("OSManufacturer") = "Microsoft Corporation"
objRecordSet.Update
objRecordSet.Close
objConnection.Close
Clear a Database Table
Const adOpenStatic = 3
Const adLockOptimistic = 3
Const adUseClient = 3
Set objConnection = CreateObject("ADODB.Connection")
Set objRecordset = CreateObject("ADODB.Recordset")
objConnection.Open "DSN=Inventory;"
objRecordset.CursorLocation = adUseClient
objRecordset.Open "Delete * FROM Hardware" , objConnection, _
adOpenStatic, adLockOptimistic
objConnection.Close
Connect to a SQL Server Database
Const adOpenStatic = 3
Const adLockOptimistic = 3
Set objConnection = CreateObject("ADODB.Connection")
Set objRecordSet = CreateObject("ADODB.Recordset")
objConnection.Open _
"Provider=SQLOLEDB;Data Source=atl-sql-01;" & _
"Trusted_Connection=Yes;Initial Catalog=Northwind;" & _
"User ID=fabrikam\kenmyer;Password=34DE6t4G!;"
objRecordSet.Open "SELECT * FROM Customers", _
objConnection, adOpenStatic, adLockOptimistic
objRecordSet.MoveFirst
Wscript.Echo objRecordSet.RecordCount
Connect to an ADO Database
Const adOpenStatic = 3
Const adLockOptimistic = 3
Const adUseClient = 3
Set objConnection = CreateObject("ADODB.Connection")
Set objRecordset = CreateObject("ADODB.Recordset")
objConnection.Open "DSN=Inventory;"
objRecordset.CursorLocation = adUseClient
objRecordset.Open "SELECT * FROM Hardware" , objConnection, _
adOpenStatic, adLockOptimistic
objRecordset.Close
objConnection.Close
Create a JET Database
Set objConnection = CreateObject("ADOX.Catalog")
objConnection.Create _
"Provider = Microsoft.Jet.OLEDB.4.0; " & _
"Data Source = new_db.mdb"
Create a Table in a JET Database
Set objConnection = CreateObject("ADODB.Connection")
objConnection.Open _
"Provider= Microsoft.Jet.OLEDB.4.0; " & _
"Data Source=new_db.mdb"
objConnection.Execute "CREATE TABLE EventTable(" & _
"EventKey COUNTER ," & _
"Category TEXT(50) ," & _
"ComputerName TEXT(50) ," & _
"EventCode INTEGER ," & _
"RecordNumber INTEGER ," & _
"SourceName TEXT(50) ," & _
"TimeWritten DATETIME ," & _
"UserName TEXT(50) ," & _
"EventType TEXT(50) ," & _
"Logfile TEXT(50) ," & _
"Message MEMO)"
objConnection.Close
Delete a Record from a Recordset
Const adOpenStatic = 3
Const adLockOptimistic = 3
Const adUseClient = 3
Set objConnection = CreateObject("ADODB.Connection")
Set objRecordset = CreateObject("ADODB.Recordset")
objConnection.Open "DSN=Inventory;"
objRecordset.CursorLocation = adUseClient
objRecordset.Open "SELECT * FROM Hardware" , objConnection, _
adOpenStatic, adLockOptimistic
strSearchCriteria = "ComputerName = 'WebServer'"
objRecordSet.Find strSearchCriteria
objRecordset.Delete
objRecordset.Close
objConnection.Close
Delete Multiple Records from a Table
Const adOpenStatic = 3
Const adLockOptimistic = 3
Set objConnection = CreateObject("ADODB.Connection")
Set objRecordSet = CreateObject("ADODB.Recordset")
objConnection.Open _
"Provider = Microsoft.Jet.OLEDB.4.0; " & _
"Data Source = inventory.mdb"
objRecordSet.Open "DELETE * FROM GeneralProperties WHERE " & _
"Department = 'Human Resources'", _
objConnection, adOpenStatic, adLockOptimistic
objConnection.Close
List Basic Statistics Derived from a Recordset
Const adOpenStatic = 3
Const adLockOptimistic = 3
Set objConnection = CreateObject("ADODB.Connection")
Set objRecordSet = CreateObject("ADODB.Recordset")
objConnection.Open _
"Provider = Microsoft.Jet.OLEDB.4.0; " & _
"Data Source = inventory.mdb"
objRecordSet.Open "SELECT OSName, Count(OSName) AS CountOfOSName" & _
" FROM GeneralProperties GROUP BY OSName ORDER BY Count(OSName) DESC", _
objConnection, adOpenStatic, adLockOptimistic
objRecordSet.MoveFirst
Do Until objRecordset.EOF
Wscript.Echo objRecordset.Fields.Item("OSName") & _
vbTab & objRecordset.Fields.Item("CountOfOSName")
objRecordset.MoveNext
Loop
objRecordSet.Close
objConnection.Close
List the Number of Records in a Recordset
Const adOpenStatic = 3
Const adLockOptimistic = 3
Set objConnection = CreateObject("ADODB.Connection")
Set objRecordSet = CreateObject("ADODB.Recordset")
objConnection.Open _
"Provider = Microsoft.Jet.OLEDB.4.0; " & _
"Data Source = eventlogs.mdb"
objRecordSet.Open "SELECT * FROM EventTable" , _
objConnection, adOpenStatic, adLockOptimistic
objRecordSet.MoveFirst
Wscript.Echo "Number of records: " & objRecordset.RecordCount
objRecordSet.Close
objConnection.Close
List the Top 25 Records in a Recordset
Const adOpenStatic = 3
Const adLockOptimistic = 3
Set objConnection = CreateObject("ADODB.Connection")
Set objRecordSet = CreateObject("ADODB.Recordset")
objConnection.Open _
"Provider = Microsoft.Jet.OLEDB.4.0; " & _
"Data Source = inventory.mdb"
objRecordSet.Open "SELECT TOP 25 * FROM GeneralProperties " & _
"ORDER BY TotalPhysicalMemory DESC", _
objConnection, adOpenStatic, adLockOptimistic
objRecordSet.MoveFirst
Do Until objRecordset.EOF
Wscript.Echo objRecordset.Fields.Item("ComputerName") & _
vbTab & objRecordset.Fields.Item("TotalPhysicalMemory")
objRecordset.MoveNext
Loop
objRecordSet.Close
objConnection.Close
List Unique Records in a Recordset
Const adOpenStatic = 3
Const adLockOptimistic = 3
Set objConnection = CreateObject("ADODB.Connection")
Set objRecordSet = CreateObject("ADODB.Recordset")
objConnection.Open _
"Provider = Microsoft.Jet.OLEDB.4.0; " & _
"Data Source = inventory.mdb"
objRecordSet.Open "SELECT DISTINCT OSName FROM " & _
"GeneralProperties ORDER BY OSName", _
objConnection, adOpenStatic, adLockOptimistic
objRecordSet.MoveFirst
Do Until objRecordset.EOF
Wscript.Echo objRecordset.Fields.Item("OSName")
objRecordset.MoveNext
Loop
objRecordSet.Close
objConnection.Close
Open a Database Using a DSN
Const adOpenStatic = 3
Const adLockOptimistic = 3
Set objConnection = CreateObject("ADODB.Connection")
Set objRecordSet = CreateObject("ADODB.Recordset")
objConnection.Open _
"Northwind;fabrikam\kenmyer;34ghfn&!j"
objRecordSet.Open "SELECT * FROM Customers", _
objConnection, adOpenStatic, adLockOptimistic
objRecordSet.MoveFirst
Wscript.Echo objRecordSet.RecordCount
Open Two Recordsets
Const adOpenStatic = 3
Const adLockOptimistic = 3
Set objConnection = CreateObject("ADODB.Connection")
Set objRecordSet = CreateObject("ADODB.Recordset")
Set objRecordSet2 = CreateObject("ADODB.Recordset")
objConnection.Open _
"Provider= Microsoft.Jet.OLEDB.4.0; " & _
"Data Source=inventory.mdb"
objRecordSet.Open "SELECT * FROM GeneralProperties Where ComputerName = 'Computer1'", _
objConnection, adOpenStatic, adLockOptimistic
objRecordSet.MoveFirst
objRecordSet2.Open "SELECT * FROM Storage Where ComputerName = 'Computer1'", _
objConnection, adOpenStatic, adLockOptimistic
objRecordSet2.MoveFirst
Do Until objRecordset.EOF
Wscript.Echo objRecordset.Fields.Item("ComputerName")
Wscript.Echo objRecordset.Fields.Item("OSName")
objRecordSet.MoveNext
Loop
Do Until objRecordset2.EOF
Wscript.Echo objRecordset2.Fields.Item("DriveName"), _
objRecordset2.Fields.Item("DriveDescription")
objRecordSet2.MoveNext
Loop
objRecordSet.Close
objRecordSet2.Close
objConnection.Close
Save a Recordset in XML format
Const adOpenStatic = 3
Const adLockOptimistic = 3
Const adPersistXML = 1
Set objConnection = CreateObject("ADODB.Connection")
Set objRecordSet = CreateObject("ADODB.Recordset")
objConnection.Open _
"Provider= Microsoft.Jet.OLEDB.4.0; " & _
"Data Source=eventlogs.mdb"
objRecordSet.Open "SELECT * FROM EventTable" , _
objConnection, adOpenStatic, adLockOptimistic
objRecordSet.MoveFirst
objRecordSet.Save "output.xml", adPersistXML
objRecordSet.Close
objConnection.Close
Search a Database Using a LIKE Query
Const adOpenStatic = 3
Const adLockOptimistic = 3
Set objConnection = CreateObject("ADODB.Connection")
Set objRecordSet = CreateObject("ADODB.Recordset")
objConnection.Open _
"Provider = Microsoft.Jet.OLEDB.4.0; " & _
"Data Source = eventlogs.mdb"
objRecordSet.Open "SELECT * FROM EventTable WHERE " & _
"Message Like '%PowerPoint%'", _
objConnection, adOpenStatic, adLockOptimistic
objRecordSet.MoveFirst
Wscript.Echo "Number of records: " & objRecordset.RecordCount
objRecordSet.Close
objConnection.Close
Search a Database Using Numeric Criteria
Const adOpenStatic = 3
Const adLockOptimistic = 3
Set objConnection = CreateObject("ADODB.Connection")
Set objRecordSet = CreateObject("ADODB.Recordset")
objConnection.Open _
"Provider = Microsoft.Jet.OLEDB.4.0; " & _
"Data Source = eventlogs.mdb"
objRecordSet.Open "SELECT * FROM EventTable " & _
"WHERE EventCode = 1054", _
objConnection, adOpenStatic, adLockOptimistic
objRecordSet.MoveFirst
Wscript.Echo "Number of records: " & objRecordset.RecordCount
objRecordSet.Close
objConnection.Close
Search a Database Using Variable Criteria
Const adOpenStatic = 3
Const adLockOptimistic = 3
Set objConnection = CreateObject("ADODB.Connection")
Set objRecordSet = CreateObject("ADODB.Recordset")
objConnection.Open _
"Provider= Microsoft.Jet.OLEDB.4.0; " & _
"Data Source=eventlogs.mdb"
dtmDate = "#1/7/2004#"
objRecordSet.Open "SELECT * FROM EventTable Where TimeWritten = " & dtmDate, objconnection, adOpenStatic, adLockOptimistic
objRecordSet.MoveFirst
Do Until objRecordSet.EOF
Wscript.Echo objRecordset.Fields.Item("EventCode") & vbTab _
& objRecordset.Fields.Item("Logfile")
objRecordSet.MoveNext
Loop
Search for a Record in a Recordset
Const adOpenStatic = 3
Const adLockOptimistic = 3
Const adUseClient = 3
Set objConnection = CreateObject("ADODB.Connection")
Set objRecordset = CreateObject("ADODB.Recordset")
objConnection.Open "DSN=Inventory;"
objRecordset.CursorLocation = adUseClient
objRecordset.Open "SELECT * FROM Hardware" , objConnection, _
adOpenStatic, adLockOptimistic
strSearchCriteria = "ComputerName = 'WebServer'"
objRecordSet.Find strSearchCriteria
If objRecordset.EOF Then
Wscript.Echo "Record cannot be found."
Else
Wscript.Echo "Record found."
End If
objRecordset.Close
objConnection.Close
Searching a Database Using String Criteria
Const adOpenStatic = 3
Const adLockOptimistic = 3
Set objConnection = CreateObject("ADODB.Connection")
Set objRecordSet = CreateObject("ADODB.Recordset")
objConnection.Open _
"Provider = Microsoft.Jet.OLEDB.4.0; " & _
"Data Source = eventlogs.mdb"
objRecordSet.Open "SELECT * FROM EventTable " & _
"WHERE Type = 'Error'", objConnection, adOpenStatic, _
adLockOptimistic
objRecordSet.MoveFirst
Wscript.Echo "Number of records: " & objRecordset.RecordCount
objRecordSet.Close
objConnection.Close
Sort a Recordset
Const adOpenStatic = 3
Const adLockOptimistic = 3
Set objConnection = CreateObject("ADODB.Connection")
Set objRecordSet = CreateObject("ADODB.Recordset")
objConnection.Open _
"Provider = Microsoft.Jet.OLEDB.4.0; " & _
"Data Source = eventlogs.mdb"
objRecordSet.Open "SELECT * FROM EventTable " & _
"ORDER BY EventCode ASC", _
objConnection, adOpenStatic, adLockOptimistic
objRecordSet.MoveFirst
Do Until objRecordSet.EOF
Wscript.Echo objRecordSet.Fields.Item("EventCode"), objRecordSet.Fields.Item("Logfile")
objRecordSet.MoveNext
Loop
objRecordSet.Close
objConnection.Close
Sort a Recordset on Multiple Fields
Const adOpenStatic = 3
Const adLockOptimistic = 3
Set objConnection = CreateObject("ADODB.Connection")
Set objRecordSet = CreateObject("ADODB.Recordset")
objConnection.Open _
"Provider = Microsoft.Jet.OLEDB.4.0; " & _
"Data Source = eventlogs.mdb"
objRecordSet.Open "SELECT * FROM EventTable " & _
"ORDER BY EventCode ASC, Logfile DESC", _
objConnection, adOpenStatic, adLockOptimistic
objRecordSet.MoveFirst
Do Until objRecordSet.EOF
Wscript.Echo objRecordSet.Fields.Item("EventCode"), objRecordSet.Fields.Item("Logfile")
objRecordSet.MoveNext
Loop
objRecordSet.Close
objConnection.Close
Update aRecord in a Recordset
Const adOpenStatic = 3
Const adLockOptimistic = 3
Const adUseClient = 3
Set objConnection = CreateObject("ADODB.Connection")
Set objRecordset = CreateObject("ADODB.Recordset")
objConnection.Open "DSN=Inventory;"
objRecordset.CursorLocation = adUseClient
objRecordset.Open "SELECT * FROM Hardware" , objConnection, _
adOpenStatic, adLockOptimistic
strSearchCriteria = "ComputerName = 'WebServer'"
objRecordSet.Find strSearchCriteria
Set colSoundCards = GetObject("winmgmts:").ExecQuery _
("Select * from Win32_SoundDevice")
For Each objSoundCard in colSoundCards
objRecordset("ComputerName") = objSoundCard.SystemName
objRecordset("Manufacturer") = objSoundCard.Manufacturer
objRecordset("ProductName") = objSoundCard.ProductName
objRecordset.Update
Next
objRecordset.Close
objConnection.Close
Update Multiple Records in a Recordset
Const adOpenStatic = 3
Const adLockOptimistic = 3
Set objConnection = CreateObject("ADODB.Connection")
Set objRecordSet = CreateObject("ADODB.Recordset")
objConnection.Open _
"Provider = Microsoft.Jet.OLEDB.4.0; " & _
"Data Source = inventory.mdb"
objRecordSet.Open "UPDATE GeneralProperties SET " & _
"Department = 'Accounting'", _
objConnection, adOpenStatic, adLockOptimistic
objConnection.Close
Read an Active Directory Security Descriptor
Const ADS_RIGHT_DELETE = &H10000
Const ADS_RIGHT_READ_CONTROL = &H20000
Const ADS_RIGHT_WRITE_DAC = &H40000
Const ADS_RIGHT_OWNER = &H80000
Const ADS_RIGHT_SYNCHRONIZE = &H100000
Const ADS_RIGHT_ACCESS_SYSTEM_SECURITY = &H1000000
Const ADS_RIGHT_GENERIC_READ = &H80000000
Const ADS_RIGHT_GENERIC_WRITE = &H40000000
Const ADS_RIGHT_GENERIC_EXECUTE = &H20000000
Const ADS_RIGHT_GENERIC_ALL = &H10000000
Const ADS_RIGHT_DS_CREATE_CHILD = &H1
Const ADS_RIGHT_DS_DELETE_CHILD = &H2
Const ADS_RIGHT_ACTRL_DS_LIST = &H4
Const ADS_RIGHT_DS_SELF = &H8
Const ADS_RIGHT_DS_READ_PROP = &H10
Const ADS_RIGHT_DS_WRITE_PROP = &H20
Const ADS_RIGHT_DS_DELETE_TREE = &H40
Const ADS_RIGHT_DS_LIST_OBJECT = &H80
Const ADS_RIGHT_DS_CONTROL_ACCESS = &H100
Const ADS_ACETYPE_ACCESS_ALLOWED = &H0
Const ADS_ACETYPE_ACCESS_DENIED = &H1
Const ADS_ACETYPE_SYSTEM_AUDIT = &H2
Const ADS_ACETYPE_ACCESS_ALLOWED_OBJECT = &H5
Const ADS_ACETYPE_ACCESS_DENIED_OBJECT = &H6
Const ADS_ACETYPE_SYSTEM_AUDIT_OBJECT = &H7
Set objSdUtil = GetObject("LDAP://OU=Finance,DC=fabrikam,DC=Com")
Set objSD = objSdUtil.Get("ntSecurityDescriptor")
Set objDACL = objSD.DiscretionaryACL
For Each objACE in objDACL
Wscript.Echo "Trustee: " & objACE.Trustee
If objACE.AceType = ADS_ACETYPE_ACCESS_ALLOWED Then
Wscript.Echo "Ace Type: Access Allowed"
ElseIf objACE.AceType = ADS_ACETYPE_ACCESS_DENIED Then
Wscript.Echo "Ace Type: Access Denied"
ElseIf objACE.AceType = ADS_ACETYPE_SYSTEM_AUDIT Then
Wscript.Echo "Ace Type: System Audit "
ElseIf objACE.AceType = ADS_ACETYPE_ACCESS_ALLOWED_OBJECT Then
Wscript.Echo "Ace Type: Access Allowed"
ElseIf objACE.AceType = ADS_ACETYPE_ACCESS_DENIED_OBJECT Then
Wscript.Echo "Ace Type: Access Denied"
ElseIf objACE.AceType = ADS_ACETYPE_SYSTEM_AUDIT_OBJECT Then
Wscript.Echo "Ace Type: System Audit"
Else
Wscript.Echo "Ace type could not be determined."
End If
If objACE.AccessMask And ADS_RIGHT_DELETE Then
Wscript.Echo vbTab & "Delete"
End If
If objACE.AccessMask And ADS_RIGHT_READ_CONTROL Then
Wscript.Echo vbTab & "Read from the security descriptor (not including the SACL)"
End If
If objACE.AccessMask And ADS_RIGHT_WRITE_DAC Then
Wscript.Echo vbTab & "Modify the DACL"
End If
If objACE.AccessMask And ADS_RIGHT_OWNER Then
Wscript.Echo vbTab & "Take ownership"
End If
If objACE.AccessMask And ADS_RIGHT_SYNCHRONIZE Then
Wscript.Echo vbTab & "Use the object for synchronization"
End If
If objACE.AccessMask And RIGHT_ACCESS_SYSTEM_SECURITY Then
Wscript.Echo vbTab & "Get or set the SACL"
End If
If objACE.AccessMask And ADS_RIGHT_GENERIC_READ Then
Wscript.Echo vbTab & "Read permissions and properties"
End If
If objACE.AccessMask And ADS_RIGHT_GENERIC_WRITE Then
Wscript.Echo vbTab & "Write permissions and properties"
End If
If objACE.AccessMask And ADS_RIGHT_GENERIC_EXECUTE Then
Wscript.Echo vbTab & "Read permissions on and list the contents of the container"
End If
If objACE.AccessMask And ADS_RIGHT_GENERIC_ALL Then
Wscript.Echo vbTab & "Create or delete child objects, delete a subtree, read and write " & _
"properties, examine child objects and the object itself, add and remove the " & _
"object from the directory, and read or write with an extended right"
End If
If objACE.AccessMask And ADS_RIGHT_DS_CREATE_CHILD Then
Wscript.Echo vbTab & "Create child objects"
End If
If objACE.AccessMask And ADS_RIGHT_DS_DELETE_CHILD Then
Wscript.Echo vbTab & "Delete child objects"
End If
If objACE.AccessMask And ADS_RIGHT_ACTRL_DS_LIST Then
Wscript.Echo vbTab & "List child objects"
End If
If objACE.AccessMask And ADS_RIGHT_DS_SELF Then
Wscript.Echo vbTab & "Perform an operation controlled by a validated write access right"
End If
If objACE.AccessMask And ADS_RIGHT_DS_READ_PROP Then
Wscript.Echo vbTab & "Read properties"
End If
If objACE.AccessMask And ADS_RIGHT_DS_WRITE_PROP Then
Wscript.Echo vbTab & "Write properties"
End If
If objACE.AccessMask And ADS_RIGHT_DS_DELETE_TREE Then
Wscript.Echo vbTab & "Delete all child objects"
End If
If objACE.AccessMask And ADS_RIGHT_DS_LIST_OBJECT Then
Wscript.Echo vbTab & "List the object"
End If
If objACE.AccessMask And ADS_RIGHT_DS_CONTROL_ACCESS Then
Wscript.Echo vbTab & "Perform an operation controlled by an extended access right"
End If
Wscript.Echo
Next
Remove an ACE from a Security Descriptor
Set objSdUtil = GetObject("LDAP://OU=Finance,DC=fabrikam,DC=Com")
Set objSD = objSdUtil.Get("ntSecurityDescriptor")
Set objDACL = objSD.DiscretionaryACL
For Each objACE in objDACL
If objACE.Trustee = "FABRIKAM\kmyer" Then
objDACL.RemoveAce objACE
End If
Next
objSD.DiscretionaryAcl = objDacl
objSDUtil.Put "ntSecurityDescriptor", Array(objSD)
objSDUtil.SetInfo
Delegate the Send As Extended Right for an Entire OU
Const ADS_ACETYPE_ACCESS_ALLOWED_OBJECT = &H5
Const ADS_FLAG_OBJECT_TYPE_PRESENT = &H1
Const ADS_FLAG_INHERITED_OBJECT_TYPE_PRESENT = &H2
Const ADS_RIGHT_DS_CONTROL_ACCESS = &H100
Const ADS_ACEFLAG_INHERIT_ACE = &H2
Set objSdUtil = GetObject("LDAP://OU=Finance, DC=fabrikam,DC=Com")
Set objSD = objSdUtil.Get("ntSecurityDescriptor")
Set objDACL = objSD.DiscretionaryACL
Set objAce = CreateObject("AccessControlEntry")
objAce.Trustee = "FABRIKAM\kmyer"
objAce.AceFlags = ADS_ACEFLAG_INHERIT_ACE
objAce.AceType = ADS_ACETYPE_ACCESS_ALLOWED_OBJECT
objAce.Flags = ADS_FLAG_OBJECT_TYPE_PRESENT OR ADS_FLAG_INHERITED_OBJECT_TYPE_PRESENT
objAce.ObjectType = "{ab721a54-1e2f-11d0-9819-00aa0040529b}"
objACE.InheritedObjectType = "{BF967ABA-0DE6-11D0-A285-00AA003049E2}"
objAce.AccessMask = ADS_RIGHT_DS_CONTROL_ACCESS
objDacl.AddAce objAce
objSD.DiscretionaryAcl = objDacl
objSDUtil.Put "ntSecurityDescriptor", Array(objSD)
objSDUtil.SetInfo
Delegate the Receive As Extended Right for an Entire OU
Const ADS_ACETYPE_ACCESS_ALLOWED_OBJECT = &H5
Const ADS_FLAG_OBJECT_TYPE_PRESENT = &H1
Const ADS_FLAG_INHERITED_OBJECT_TYPE_PRESENT = &H2
Const ADS_RIGHT_DS_CONTROL_ACCESS = &H100
Const ADS_ACEFLAG_INHERIT_ACE = &H2
Set objSdUtil = GetObject("LDAP://OU=Finance, DC=fabrikam,DC=Com")
Set objSD = objSdUtil.Get("ntSecurityDescriptor")
Set objDACL = objSD.DiscretionaryACL
Set objAce = CreateObject("AccessControlEntry")
objAce.Trustee = "FABRIKAM\kmyer"
objAce.AceFlags = ADS_ACEFLAG_INHERIT_ACE
objAce.AceType = ADS_ACETYPE_ACCESS_ALLOWED_OBJECT
objAce.Flags = ADS_FLAG_OBJECT_TYPE_PRESENT OR ADS_FLAG_INHERITED_OBJECT_TYPE_PRESENT
objAce.ObjectType = "{ab721a56-1e2f-11d0-9819-00aa0040529b}"
objACE.InheritedObjectType = "{BF967ABA-0DE6-11D0-A285-00AA003049E2}"
objAce.AccessMask = ADS_RIGHT_DS_CONTROL_ACCESS
objDacl.AddAce objAce
objSD.DiscretionaryAcl = objDacl
objSDUtil.Put "ntSecurityDescriptor", Array(objSD)
objSDUtil.SetInfo
Delegate the Reset Password Extended Right for an Entire OU
Const ADS_ACETYPE_ACCESS_ALLOWED_OBJECT = &H5
Const ADS_FLAG_OBJECT_TYPE_PRESENT = &H1
Const ADS_FLAG_INHERITED_OBJECT_TYPE_PRESENT = &H2
Const ADS_RIGHT_DS_CONTROL_ACCESS = &H100
Const ADS_ACEFLAG_INHERIT_ACE = &H2
Set objSdUtil = GetObject("LDAP://OU=Finance, DC=fabrikam,DC=Com")
Set objSD = objSdUtil.Get("ntSecurityDescriptor")
Set objDACL = objSD.DiscretionaryACL
Set objAce = CreateObject("AccessControlEntry")
objAce.Trustee = "FABRIKAM\kmyer"
objAce.AceFlags = ADS_ACEFLAG_INHERIT_ACE
objAce.AceType = ADS_ACETYPE_ACCESS_ALLOWED_OBJECT
objAce.Flags = ADS_FLAG_OBJECT_TYPE_PRESENT OR ADS_FLAG_INHERITED_OBJECT_TYPE_PRESENT
objAce.ObjectType = "{00299570-246d-11d0-a768-00aa006e0529}"
objACE.InheritedObjectType = "{BF967ABA-0DE6-11D0-A285-00AA003049E2}"
objAce.AccessMask = ADS_RIGHT_DS_CONTROL_ACCESS
objDacl.AddAce objAce
objSD.DiscretionaryAcl = objDacl
objSDUtil.Put "ntSecurityDescriptor", Array(objSD)
objSDUtil.SetInfo
Delegate the Change Password Extended Right for an Entire OU
Const ADS_ACETYPE_ACCESS_ALLOWED_OBJECT = &H5
Const ADS_FLAG_OBJECT_TYPE_PRESENT = &H1
Const ADS_FLAG_INHERITED_OBJECT_TYPE_PRESENT = &H2
Const ADS_RIGHT_DS_CONTROL_ACCESS = &H100
Const ADS_ACEFLAG_INHERIT_ACE = &H2
Set objSdUtil = GetObject("LDAP://OU=Finance, DC=fabrikam,DC=Com")
Set objSD = objSdUtil.Get("ntSecurityDescriptor")
Set objDACL = objSD.DiscretionaryACL
Set objAce = CreateObject("AccessControlEntry")
objAce.Trustee = "FABRIKAM\kmyer"
objAce.AceFlags = ADS_ACEFLAG_INHERIT_ACE
objAce.AceType = ADS_ACETYPE_ACCESS_ALLOWED_OBJECT
objAce.Flags = ADS_FLAG_OBJECT_TYPE_PRESENT OR ADS_FLAG_INHERITED_OBJECT_TYPE_PRESENT
objAce.ObjectType = "{ab721a53-1e2f-11d0-9819-00aa0040529b}"
objACE.InheritedObjectType = "{BF967ABA-0DE6-11D0-A285-00AA003049E2}"
objAce.AccessMask = ADS_RIGHT_DS_CONTROL_ACCESS
objDacl.AddAce objAce
objSD.DiscretionaryAcl = objDacl
objSDUtil.Put "ntSecurityDescriptor", Array(objSD)
objSDUtil.SetInfo
Delegate the Allowed to Authenticate Extended Right for an Entire OU
Const ADS_ACETYPE_ACCESS_ALLOWED_OBJECT = &H5
Const ADS_FLAG_OBJECT_TYPE_PRESENT = &H1
Const ADS_FLAG_INHERITED_OBJECT_TYPE_PRESENT = &H2
Const ADS_RIGHT_DS_CONTROL_ACCESS = &H100
Const ADS_ACEFLAG_INHERIT_ACE = &H2
Set objSdUtil = GetObject("LDAP://OU=Finance, DC=fabrikam,DC=Com")
Set objSD = objSdUtil.Get("ntSecurityDescriptor")
Set objDACL = objSD.DiscretionaryACL
Set objAce = CreateObject("AccessControlEntry")
objAce.Trustee = "FABRIKAM\kmyer"
objAce.AceFlags = ADS_ACEFLAG_INHERIT_ACE
objAce.AceType = ADS_ACETYPE_ACCESS_ALLOWED_OBJECT
objAce.Flags = ADS_FLAG_OBJECT_TYPE_PRESENT OR ADS_FLAG_INHERITED_OBJECT_TYPE_PRESENT
objAce.ObjectType = "{68b1d179-0d15-4d4f-ab71-46152e79a7bc}"
objACE.InheritedObjectType = "{BF967ABA-0DE6-11D0-A285-00AA003049E2}"
objAce.AccessMask = ADS_RIGHT_DS_CONTROL_ACCESS
objDacl.AddAce objAce
objSD.DiscretionaryAcl = objDacl
objSDUtil.Put "ntSecurityDescriptor", Array(objSD)
objSDUtil.SetInfo
Delegate the Send As Extended Right for a Single User
Const ADS_ACETYPE_ACCESS_ALLOWED_OBJECT = &H5
Const ADS_FLAG_OBJECT_TYPE_PRESENT = &H1
Const ADS_FLAG_INHERITED_OBJECT_TYPE_PRESENT = &H2
Const ADS_RIGHT_DS_CONTROL_ACCESS = &H100
Set objSdUtil = GetObject("LDAP://CN=Rob Young, OU=Finance, DC=fabrikam,DC=Com")
Set objSD = objSdUtil.Get("ntSecurityDescriptor")
Set objDACL = objSD.DiscretionaryACL
Set objAce = CreateObject("AccessControlEntry")
objAce.Trustee = "FABRIKAM\kmyer"
objAce.AceFlags = 0
objAce.AceType = ADS_ACETYPE_ACCESS_ALLOWED_OBJECT
objAce.Flags = ADS_FLAG_OBJECT_TYPE_PRESENT OR ADS_FLAG_INHERITED_OBJECT_TYPE_PRESENT
objAce.ObjectType = "{ab721a54-1e2f-11d0-9819-00aa0040529b}"
objAce.AccessMask = ADS_RIGHT_DS_CONTROL_ACCESS
objDacl.AddAce objAce
objSD.DiscretionaryAcl = objDacl
objSDUtil.Put "ntSecurityDescriptor", Array(objSD)
objSDUtil.SetInfo
Delegate the Receive As Extended Right for a Single User
Const ADS_ACETYPE_ACCESS_ALLOWED_OBJECT = &H5
Const ADS_FLAG_OBJECT_TYPE_PRESENT = &H1
Const ADS_FLAG_INHERITED_OBJECT_TYPE_PRESENT = &H2
Const ADS_RIGHT_DS_CONTROL_ACCESS = &H100
Set objSdUtil = GetObject("LDAP://CN=Rob Young, OU=Finance, DC=fabrikam,DC=Com")
Set objSD = objSdUtil.Get("ntSecurityDescriptor")
Set objDACL = objSD.DiscretionaryACL
Set objAce = CreateObject("AccessControlEntry")
objAce.Trustee = "FABRIKAM\kmyer"
objAce.AceFlags = 0
objAce.AceType = ADS_ACETYPE_ACCESS_ALLOWED_OBJECT
objAce.Flags = ADS_FLAG_OBJECT_TYPE_PRESENT OR ADS_FLAG_INHERITED_OBJECT_TYPE_PRESENT
objAce.ObjectType = "{ab721a56-1e2f-11d0-9819-00aa0040529b}"
objAce.AccessMask = ADS_RIGHT_DS_CONTROL_ACCESS
objDacl.AddAce objAce
objSD.DiscretionaryAcl = objDacl
objSDUtil.Put "ntSecurityDescriptor", Array(objSD)
objSDUtil.SetInfo
Delegate the Reset Password Extended Right for a Single User
Const ADS_ACETYPE_ACCESS_ALLOWED_OBJECT = &H5
Const ADS_FLAG_OBJECT_TYPE_PRESENT = &H1
Const ADS_FLAG_INHERITED_OBJECT_TYPE_PRESENT = &H2
Const ADS_RIGHT_DS_CONTROL_ACCESS = &H100
Set objSdUtil = GetObject("LDAP://CN=Rob Young, OU=Finance, DC=fabrikam,DC=Com")
Set objSD = objSdUtil.Get("ntSecurityDescriptor")
Set objDACL = objSD.DiscretionaryACL
Set objAce = CreateObject("AccessControlEntry")
objAce.Trustee = "FABRIKAM\kmyer"
objAce.AceFlags = 0
objAce.AceType = ADS_ACETYPE_ACCESS_ALLOWED_OBJECT
objAce.Flags = ADS_FLAG_OBJECT_TYPE_PRESENT OR ADS_FLAG_INHERITED_OBJECT_TYPE_PRESENT
objAce.ObjectType = "{00299570-246d-11d0-a768-00aa006e0529}"
objAce.AccessMask = ADS_RIGHT_DS_CONTROL_ACCESS
objDacl.AddAce objAce
objSD.DiscretionaryAcl = objDacl
objSDUtil.Put "ntSecurityDescriptor", Array(objSD)
objSDUtil.SetInfo
Delegate the Change Password Extended Right for a Single User
Const ADS_ACETYPE_ACCESS_ALLOWED_OBJECT = &H5
Const ADS_FLAG_OBJECT_TYPE_PRESENT = &H1
Const ADS_FLAG_INHERITED_OBJECT_TYPE_PRESENT = &H2
Const ADS_RIGHT_DS_CONTROL_ACCESS = &H100
Set objSdUtil = GetObject("LDAP://CN=Rob Young, OU=Finance, DC=fabrikam,DC=Com")
Set objSD = objSdUtil.Get("ntSecurityDescriptor")
Set objDACL = objSD.DiscretionaryACL
Set objAce = CreateObject("AccessControlEntry")
objAce.Trustee = "FABRIKAM\kmyer"
objAce.AceFlags = 0
objAce.AceType = ADS_ACETYPE_ACCESS_ALLOWED_OBJECT
objAce.Flags = ADS_FLAG_OBJECT_TYPE_PRESENT OR ADS_FLAG_INHERITED_OBJECT_TYPE_PRESENT
objAce.ObjectType = "{ab721a53-1e2f-11d0-9819-00aa0040529b}"
objAce.AccessMask = ADS_RIGHT_DS_CONTROL_ACCESS
objDacl.AddAce objAce
objSD.DiscretionaryAcl = objDacl
objSDUtil.Put "ntSecurityDescriptor", Array(objSD)
objSDUtil.SetInfo
Delegate the Allowed to Authenticate Extended Right for a Single User
Const ADS_ACETYPE_ACCESS_ALLOWED_OBJECT = &H5
Const ADS_FLAG_OBJECT_TYPE_PRESENT = &H1
Const ADS_FLAG_INHERITED_OBJECT_TYPE_PRESENT = &H2
Const ADS_RIGHT_DS_CONTROL_ACCESS = &H100
Set objSdUtil = GetObject("LDAP://CN=Rob Young, OU=Finance, DC=fabrikam,DC=Com")
Set objSD = objSdUtil.Get("ntSecurityDescriptor")
Set objDACL = objSD.DiscretionaryACL
Set objAce = CreateObject("AccessControlEntry")
'Receive As
objAce.Trustee = "FABRIKAM\kmyer"
objAce.AceFlags = 0
objAce.AceType = ADS_ACETYPE_ACCESS_ALLOWED_OBJECT
objAce.Flags = ADS_FLAG_OBJECT_TYPE_PRESENT OR ADS_FLAG_INHERITED_OBJECT_TYPE_PRESENT
objAce.ObjectType = "{68b1d179-0d15-4d4f-ab71-46152e79a7bc}"
objAce.AccessMask = ADS_RIGHT_DS_CONTROL_ACCESS
objDacl.AddAce objAce
objSD.DiscretionaryAcl = objDacl
objSDUtil.Put "ntSecurityDescriptor", Array(objSD)
objSDUtil.SetInfo
Read a File DACL
strFileName = "C:\scripts\center\test.txt"
SE_DACL_PRESENT = &h4
ACCESS_ALLOWED_ACE_TYPE = &h0
ACCESS_DENIED_ACE_TYPE= &h1
FILE_ALL_ACCESS = &h1f01ff
FILE_APPEND_DATA= &h000004
FILE_DELETE = &h010000
FILE_DELETE_CHILD = &h000040
FILE_EXECUTE= &h000020
FILE_READ_ATTRIBUTES= &h000080
FILE_READ_CONTROL = &h020000
FILE_READ_DATA= &h000001
FILE_READ_EA= &h000008
FILE_SYNCHRONIZE= &h100000
FILE_WRITE_ATTRIBUTES = &h000100
FILE_WRITE_DAC= &h040000
FILE_WRITE_DATA = &h000002
FILE_WRITE_EA = &h000010
FILE_WRITE_OWNER= &h080000
Set objWMIService = GetObject("winmgmts:")
Set objFileSecuritySettings = _
objWMIService.Get("Win32_LogicalFileSecuritySetting='" & strFileName & "'")
intRetVal = objFileSecuritySettings.GetSecurityDescriptor(objSD)
intControlFlags = objSD.ControlFlags
If intControlFlags AND SE_DACL_PRESENT Then
arrACEs = objSD.DACL
For Each objACE in arrACEs
WScript.Echo objACE.Trustee.Domain & "\" & objACE.Trustee.Name
If objACE.AceType = ACCESS_ALLOWED_ACE_TYPE Then
WScript.Echo vbTab & "Allowed:"
ElseIf objACE.AceType = ACCESS_DENIED_ACE_TYPE Then
WScript.Echo vbTab & "Denied:"
End If
If objACE.AccessMask AND FILE_ALL_ACCESS Then
WScript.Echo vbTab & vbTab & "FILE_ALL_ACCESS "
End If
If objACE.AccessMask AND FILE_APPEND_DATA Then
WScript.Echo vbTab & vbTab & "FILE_APPEND_DATA "
End If
If objACE.AccessMask AND FILE_DELETE Then
WScript.Echo vbTab & vbTab & "FILE_DELETE "
End If
If objACE.AccessMask AND FILE_DELETE_CHILD Then
WScript.Echo vbTab & vbTab & "FILE_DELETE_CHILD "
End If
If objACE.AccessMask AND FILE_EXECUTE Then
WScript.Echo vbTab & vbTab & "FILE_EXECUTE "
End If
If objACE.AccessMask AND FILE_READ_ATTRIBUTES Then
WScript.Echo vbTab & vbTab & "FILE_READ_ATTRIBUTES "
End If
If objACE.AccessMask AND FILE_READ_CONTROL Then
WScript.Echo vbTab & vbTab & "FILE_READ_CONTROL "
End If
If objACE.AccessMask AND FILE_READ_DATA Then
WScript.Echo vbTab & vbTab & "FILE_READ_DATA "
End If
If objACE.AccessMask AND FILE_READ_EA Then
WScript.Echo vbTab & vbTab & "FILE_READ_EA "
End If
If objACE.AccessMask AND FILE_SYNCHRONIZE Then
WScript.Echo vbTab & vbTab & "FILE_SYNCHRONIZE "
End If
If objACE.AccessMask AND FILE_WRITE_ATTRIBUTES Then
WScript.Echo vbTab & vbTab & "FILE_WRITE_ATTRIBUTES "
End If
If objACE.AccessMask AND FILE_WRITE_DAC Then
WScript.Echo vbTab & vbTab & "FILE_WRITE_DAC "
End If
If objACE.AccessMask AND FILE_WRITE_DATA Then
WScript.Echo vbTab & vbTab & "FILE_WRITE_DATA "
End If
If objACE.AccessMask AND FILE_WRITE_EA Then
WScript.Echo vbTab & vbTab & "FILE_WRITE_EA "
End If
If objACE.AccessMask AND FILE_WRITE_OWNER Then
WScript.Echo vbTab & vbTab & "FILE_WRITE_OWNER "
End If
Next
Else
WScript.Echo "No DACL present in security descriptor"
End If
Read a Folder DACL
strFolderName = "C:\scripts\sec_center"
SE_DACL_PRESENT = &h4
ACCESS_ALLOWED_ACE_TYPE = &h0
ACCESS_DENIED_ACE_TYPE= &h1
FILE_ALL_ACCESS = &h1f01ff
FOLDER_ADD_SUBDIRECTORY = &h000004
FILE_DELETE = &h010000
FILE_DELETE_CHILD = &h000040
FOLDER_TRAVERSE = &h000020
FILE_READ_ATTRIBUTES= &h000080
FILE_READ_CONTROL = &h020000
FOLDER_LIST_DIRECTORY = &h000001
FILE_READ_EA= &h000008
FILE_SYNCHRONIZE= &h100000
FILE_WRITE_ATTRIBUTES = &h000100
FILE_WRITE_DAC= &h040000
FOLDER_ADD_FILE = &h000002
FILE_WRITE_EA = &h000010
FILE_WRITE_OWNER= &h080000
Set objWMIService = GetObject("winmgmts:")
Set objFolderSecuritySettings = _
objWMIService.Get("Win32_LogicalFileSecuritySetting='" & strFolderName & "'")
intRetVal = objFolderSecuritySettings.GetSecurityDescriptor(objSD)
intControlFlags = objSD.ControlFlags
If intControlFlags AND SE_DACL_PRESENT Then
arrACEs = objSD.DACL
For Each objACE in arrACEs
WScript.Echo objACE.Trustee.Domain & "\" & objACE.Trustee.Name
If objACE.AceType = ACCESS_ALLOWED_ACE_TYPE Then
WScript.Echo vbTab & "Allowed:"
ElseIf objACE.AceType = ACCESS_DENIED_ACE_TYPE Then
WScript.Echo vbTab & "Denied:"
End If
If objACE.AccessMask AND FILE_ALL_ACCESS Then
WScript.Echo vbTab & vbTab & "FILE_ALL_ACCESS "
End If
If objACE.AccessMask AND FOLDER_ADD_SUBDIRECTORY Then
WScript.Echo vbTab & vbTab & " FOLDER_ADD_SUBDIRECTORY "
End If
If objACE.AccessMask AND FILE_DELETE Then
WScript.Echo vbTab & vbTab & "FILE_DELETE "
End If
If objACE.AccessMask AND FILE_DELETE_CHILD Then
WScript.Echo vbTab & vbTab & "FILE_DELETE_CHILD "
End If
If objACE.AccessMask AND FOLDER_TRAVERSE Then
WScript.Echo vbTab & vbTab & " FOLDER_TRAVERSE "
End If
If objACE.AccessMask AND FILE_READ_ATTRIBUTES Then
WScript.Echo vbTab & vbTab & "FILE_READ_ATTRIBUTES "
End If
If objACE.AccessMask AND FILE_READ_CONTROL Then
WScript.Echo vbTab & vbTab & "FILE_READ_CONTROL "
End If
If objACE.AccessMask AND FOLDER_LIST_DIRECTORY Then
WScript.Echo vbTab & vbTab & " FOLDER_LIST_DIRECTORY "
End If
If objACE.AccessMask AND FILE_READ_EA Then
WScript.Echo vbTab & vbTab & "FILE_READ_EA "
End If
If objACE.AccessMask AND FILE_SYNCHRONIZE Then
WScript.Echo vbTab & vbTab & "FILE_SYNCHRONIZE "
End If
If objACE.AccessMask AND FILE_WRITE_ATTRIBUTES Then
WScript.Echo vbTab & vbTab & "FILE_WRITE_ATTRIBUTES "
End If
If objACE.AccessMask AND FILE_WRITE_DAC Then
WScript.Echo vbTab & vbTab & "FILE_WRITE_DAC "
End If
If objACE.AccessMask AND FOLDER_ADD_FILE Then
WScript.Echo vbTab & vbTab & " FOLDER_ADD_FILE "
End If
If objACE.AccessMask AND FILE_WRITE_EA Then
WScript.Echo vbTab & vbTab & "FILE_WRITE_EA "
End If
If objACE.AccessMask AND FILE_WRITE_OWNER Then
WScript.Echo vbTab & vbTab & "FILE_WRITE_OWNER "
End If
Next
Else
WScript.Echo "No DACL present in security descriptor"
End If
Retrieve Owner of a File
strFileName = "C:\scripts\center\test.txt"
Set objWMIService = GetObject("winmgmts:")
Set objFileSecuritySettings = _
objWMIService.Get("Win32_LogicalFileSecuritySetting='" & strFileName & "'")
intRetVal = objFileSecuritySettings.GetSecurityDescriptor(objSD)
If intRetVal = 0 Then
WScript.Echo "Owner: " & objSD.Owner.Domain & "\" & objSD.Owner.Name
Else
WScript.Echo "Couldn't retrieve security descriptor."
End If
Retrieve Owner of a Folder
strFolderName = "C:\scripts\sec_center"
Set objWMIService = GetObject("winmgmts:")
Set objFolderSecuritySettings = _
objWMIService.Get("Win32_LogicalFileSecuritySetting='" & strFolderName & "'")
intRetVal = objFolderSecuritySettings.GetSecurityDescriptor(objSD)
If intRetVal = 0 Then
WScript.Echo "Owner: " & objSD.Owner.Domain & "\" & objSD.Owner.Name
Else
WScript.Echo "Couldn't retrieve security descriptor."
End If
Sign a Script Programmatically
Set objSigner = WScript.CreateObject("Scripting.Signer")
objSigner.SignFile "C:\Scripts\CreateUsers.vbs", "IT Department"
Sign All the Scripts in a Folder
Set objSigner = WScript.CreateObject("Scripting.Signer")
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objFolder = objFSO.GetFolder("c:\scripts")
Set colListOfFiles = objFolder.Files
For Each objFile in colListOfFiles
objSigner.SignFile objFile.Path, "IT Department"
Next
Verify a Script Signature
blnShowGUI = False
Set objSigner = WScript.CreateObject("Scripting.Signer")
blnIsSigned = objSigner.VerifyFile("C:\Scripts\CreateUser.vbs", blnShowGUI)
If blnIsSigned Then
WScript.Echo "Script has been signed."
Else
WScript.Echo " Script has not been signed."
End If
Verify Signatures for All the Scripts in a Folder
blnShowGUI = False
set objSigner = WScript.CreateObject("Scripting.Signer")
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objFolder = objFSO.GetFolder("C:\Scripts\")
Set colListOfFiles = objFolder.Files
For Each objFile in colListOfFiles
If Right(objFile.Name, 3) = "vbs" Then
blnIsSigned = objSigner.VerifyFile(objFile.Path, blnShowGUI)
If blnIsSigned then
WScript.Echo objFile.Name & " has been signed."
Else
WScript.Echo objFile.Name & " has not been signed."
End If
End If
Next
List SFU Component Information
On Error Resume Next
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\sfuadmin")
Set colItems = objWMIService.ExecQuery _
("Select * from SFU_Component")
For Each objItem in colItems
Wscript.Echo "Component: " & objItem.Component
Wscript.Echo "Key Name: " & objItem.KeyName
Wscript.Echo "Tab Number: " & objItem.TabNum
Wscript.Echo
Next
List SFU Domain Information
On Error Resume Next
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\sfuadmin")
Set colItems = objWMIService.ExecQuery _
("Select * from SFU_Domain")
For Each objItem in colItems
Wscript.Echo "DC: " & objItem.DC
Wscript.Echo "Default: " & objItem.Default
Wscript.Echo "Domain: " & objItem.Domain
Wscript.Echo "Key Name: " & objItem.KeyName
Wscript.Echo "Maps: " & objItem.Maps
Wscript.Echo
Next
List SFU Dummy Information
On Error Resume Next
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\sfuadmin")
Set colItems = objWMIService.ExecQuery _
("Select * from SFU_Dummy")
For Each objItem in colItems
Wscript.Echo "Dummy: " & objItem.Dummy
Wscript.Echo "Key Name: " & objItem.KeyName
Wscript.Echo
Next
List SFU Global Settings
On Error Resume Next
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\sfuadmin")
Set colItems = objWMIService.ExecQuery _
("Select * from GlobalSettings_Reg")
For Each objItem in colItems
Wscript.Echo "Dummy: " & objItem.Dummy
Wscript.Echo "Key Name: " & objItem.KeyName
For Each strServer in objItem.MappingServers
Wscript.Echo "Mapping Server: " & strServer
Next
Wscript.Echo
Next
List SFU Mapper Settings
On Error Resume Next
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\sfuadmin")
Set colItems = objWMIService.ExecQuery _
("Select * from Mapper_Settings")
For Each objItem in colItems
Wscript.Echo "Additional Map Definitions: " & _
objItem.AdditionalMapDefinitions
Wscript.Echo "Advanced Group Maps: " & _
objItem.AdvancedGroupMaps
Wscript.Echo "Advanced User Maps: " & _
objItem.AdvancedUserMaps
Wscript.Echo "Anonymous GID: " & objItem.AnonymousGid
Wscript.Echo "Anonymous UID: " & objItem.AnonymousUid
Wscript.Echo "Anonymous Unix User: " & _
objItem.AnonymousUnixUser
Wscript.Echo "Authentication Type: " & objItem.AuthType
Wscript.Echo "Backup File Name: " & objItem.BackupFileName
Wscript.Echo "Default: " & objItem.Default
Wscript.Echo "Group File Name: " & objItem.GroupFileName
Wscript.Echo "Key Name: " & objItem.KeyName
Wscript.Echo "Logging Level: " & objItem.LoggingLevel
Wscript.Echo "Map File Name: " & objItem.MapFileName
Wscript.Echo "NIS Domain: " & objItem.NisDomain
Wscript.Echo "NIS Server: " & objItem.NisServer
Wscript.Echo "NT Domain: " & objItem.NTDomain
Wscript.Echo "NT Domain2: " & objItem.NTDomain2
Wscript.Echo "Password File Name: " & objItem._
PasswdFileName
Wscript.Echo "Refresh Interval: " & _
objItem.RefreshInterval
Wscript.Echo "Restore File Name: " & _
objItem.RestoreFileName
Wscript.Echo "Security: " & objItem.Security
Wscript.Echo "Server Type: " & objItem.ServerType
Wscript.Echo "Write Block: " & objItem.WriteBlock
Wscript.Echo
Next
List SFU Mapping Server Settings
On Error Resume Next
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\sfuadmin")
Set colItems = objWMIService.ExecQuery _
("Select * from MapServer_Reg")
For Each objItem in colItems
Wscript.Echo "Default: " & objItem.Default
Wscript.Echo "KeyName: " & objItem.KeyName
Wscript.Echo "ReadConfig: " & objItem.ReadConfig
Wscript.Echo
Next
List SFU Remote Settings
On Error Resume Next
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\sfuadmin")
Set colItems = objWMIService.ExecQuery _
("Select * from SFU_Remote")
For Each objItem in colItems
Wscript.Echo "Key Name: " & objItem.KeyName
Wscript.Echo "Machine: " & objItem.Machine
Wscript.Echo "Path: " & objItem.Path
Wscript.Echo
Next
List SFU Version Information
On Error Resume Next
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\sfuadmin")
Set colItems = objWMIService.ExecQuery _
("Select * from version_info")
For Each objItem in colItems
Wscript.Echo "Current release: " & objItem.curRel
Wscript.Echo "Key Name: " & objItem.KeyName
Wscript.Echo "PUD: " & objItem.pid
Wscript.Echo "Version: " & objItem.Version
Wscript.Echo
Next
List the SFU Product Version
On Error Resume Next
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\sfuadmin")
Set colItems = objWMIService.ExecQuery("Select * from ProductVer")
For Each objItem in colItems
Wscript.Echo "KeyName: " & objItem.KeyName
Wscript.Echo "Operating System Version: " & objItem.OsVersion
Wscript.Echo "Software Type: " & objItem.SoftwareType
Wscript.Echo
Next
List the SFU Windows Directory
On Error Resume Next
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\sfuadmin")
Set colItems = objWMIService.ExecQuery _
("Select * from SFU_Windir")
For Each objItem in colItems
Wscript.Echo "Default: " & objItem.default
Wscript.Echo "Key Name: " & objItem.KeyName
Wscript.Echo "Windows directory: " & objItem.windir
Wscript.Echo
Next
Modify SFU Mapper Settings
On Error Resume Next
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\sfuadmin")
Set colItems = objWMIService.ExecQuery _
("Select * from Mapper_Settings Where KeyName = 'CurrentVersion'")
For Each objItem in colItems
objItem.LoggingLevel = 1
objItem.Put_
Next
List NFS Client Authentication Settings
On Error Resume Next
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\sfuadmin")
Set colItems = objWMIService.ExecQuery _
("Select * from NFSClient_Authenticate")
For Each objItem in colItems
Wscript.Echo "Authentication Type: " & objItem.AuthType
Wscript.Echo "Default: " & objItem.Default
Wscript.Echo "Key Name: " & objItem.KeyName
Wscript.Echo "NIS Domain: " & objItem.NISDomain
Wscript.Echo "NIS Server: " & objItem.NISServer
Wscript.Echo "NT Domain: " & objItem.NTDomain
Wscript.Echo "PC NFSD Server: " & objItem.PCNFSDServer
Wscript.Echo
Next
List NFS Client File Settings
On Error Resume Next
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\sfuadmin")
Set colItems = objWMIService.ExecQuery _
("Select * from NFSClient_Files")
For Each objItem in colItems
Wscript.Echo "Access: " & objItem.Access
Wscript.Echo "Default: " & objItem.Default
Wscript.Echo "Key Name: " & objItem.KeyName
Wscript.Echo
Next
List NFS Client Global Settings
On Error Resume Next
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\sfuadmin")
Set colItems = objWMIService.ExecQuery _
("Select * from NFSClient_Reg")
For Each objItem in colItems
Wscript.Echo "Key Name: " & objItem.KeyName
Wscript.Echo "Read Configuration: " & objItem.ReadConfig
Wscript.Echo
Next
List NFS Client Mapping Server Settings
On Error Resume Next
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\sfuadmin")
Set colItems = objWMIService.ExecQuery _
("Select * from NFSClient_MapSvr")
For Each objItem in colItems
Wscript.Echo "Key Name: " & objItem.KeyName
Wscript.Echo "Map Server: " & objItem.MapSvr
Wscript.Echo
Next
List NFS Client Performance Information
On Error Resume Next
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\sfuadmin")
Set colItems = objWMIService.ExecQuery _
("Select * from NFSClient_Perf")
For Each objItem in colItems
Wscript.Echo "AutoTuning: " & objItem.AutoTuning
Wscript.Echo "Default: " & objItem.Default
Wscript.Echo "Defaults: " & objItem.Defaults
Wscript.Echo "Key Name: " & objItem.KeyName
Wscript.Echo "Mount Type: " & objItem.MountType
Wscript.Echo "Prefer TCP: " & objItem.PreferTCP
Wscript.Echo "Read Buffer: " & objItem.ReadBuffer
Wscript.Echo "Retries: " & objItem.Retries
Wscript.Echo "Timeout: " & objItem.Timeout
Wscript.Echo "Write Buffer: " & objItem.WriteBuffer
Wscript.Echo
Next
List NFS Client Prefer TCP Settings
On Error Resume Next
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\sfuadmin")
Set colItems = objWMIService.ExecQuery _
("Select * from NFSClient_PreferTCP")
For Each objItem in colItems
Wscript.Echo "Default: " & objItem.Default
Wscript.Echo "Key Name: " & objItem.KeyName
Wscript.Echo "Prefer TCP: " & objItem.PreferTCP
Wscript.Echo
Next
List NFS Client Security Settings
On Error Resume Next
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\sfuadmin")
Set colItems = objWMIService.ExecQuery _
("Select * from NFSClient_Security")
For Each objItem in colItems
Wscript.Echo "Default: " & objItem.Default
Wscript.Echo "Key Name: " & objItem.KeyName
Wscript.Echo "Security: " & objItem.Security
Wscript.Echo
Next
List NFS Server Auditing Settings
On Error Resume Next
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\sfuadmin")
Set colItems = objWMIService.ExecQuery _
("Select * from NFSServer_Auditing")
For Each objItem in colItems
Wscript.Echo "Audit: " & objItem.Audit
Wscript.Echo "Audit Bits: " & objItem.AuditBits
Wscript.Echo "Check Space: " & objItem.CheckSpace
Wscript.Echo "Default: " & objItem.Default
Wscript.Echo "File Maximum Size: " & objItem.FileMaxSize
Wscript.Echo "Key Name: " & objItem.KeyName
Wscript.Echo "Log File: " & objItem.LogFile
Wscript.Echo "Minimum Space: " & objItem.MinSpace
Wscript.Echo
Next
List NFS Server Authentication Settings
On Error Resume Next
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\sfuadmin")
Set colItems = objWMIService.ExecQuery _
("Select * from NFSServer_Authenticate")
For Each objItem in colItems
Wscript.Echo "Authentication Type: " & objItem.AuthType
Wscript.Echo "Key Name: " & objItem.KeyName
Wscript.Echo "NIS Domain: " & objItem.NISDomain
Wscript.Echo "NIS Server: " & objItem.NISServer
Wscript.Echo "NT Domain: " & objItem.NTDomain
Wscript.Echo "PC NFSD Server: " & objItem.PCNFSDServer
Wscript.Echo
Next
List NFS Server Character Translation Settings
On Error Resume Next
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\sfuadmin")
Set colItems = objWMIService.ExecQuery _
("Select * from NFSServer_SvSet_CharTran")
For Each objItem in colItems
Wscript.Echo "Character Translation: " & objItem.CharacterTranslation
Wscript.Echo "Default: " & objItem.Default
Wscript.Echo "Key Name: " & objItem.KeyName
Wscript.Echo
Next
List NFS Server File Settings
On Error Resume Next
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\sfuadmin")
Set colItems = objWMIService.ExecQuery _
("Select * from NFSServer_Files")
For Each objItem in colItems
Wscript.Echo "Case: " & objItem.Case
Wscript.Echo "Default: " & objItem.Default
Wscript.Echo "Grace Period: " & objItem.GracePeriod
Wscript.Echo "Key Name: " & objItem.KeyName
Wscript.Echo "Timeout: " & objItem.Timeout
Wscript.Echo
Next
List NFS Server Global Settings
On Error Resume Next
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\sfuadmin")
Set colItems = objWMIService.ExecQuery _
("Select * from NFSServer_Reg")
For Each objItem in colItems
Wscript.Echo "Key Name: " & objItem.KeyName
Wscript.Echo "Read Configuration: " & objItem.ReadConfig
Wscript.Echo
Next
List NFS Server Mapping Server Settings
On Error Resume Next
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\sfuadmin")
Set colItems = objWMIService.ExecQuery _
("Select * from NFSServer_MapSvr")
For Each objItem in colItems
Wscript.Echo "Key Name: " & objItem.KeyName
Wscript.Echo "Map Server: " & objItem.MapSvr
Wscript.Echo
Next
List NFS Server Security Settings
On Error Resume Next
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\sfuadmin")
Set colItems = objWMIService.ExecQuery _
("Select * from NFSServer_Security")
For Each objItem in colItems
Wscript.Echo "Key Name: " & objItem.KeyName
Wscript.Echo "Security: " & objItem.Security
Wscript.Echo
Next
List NFS Server Settings
On Error Resume Next
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\sfuadmin")
Set colItems = objWMIService.ExecQuery _
("Select * from NFSServer_SvSet")
For Each objItem in colItems
Wscript.Echo "Case Sensitive: " & objItem.CaseSensitive
Wscript.Echo "CDFS Case: " & objItem.CdfsCase
Wscript.Echo "Default: " & objItem.Default
Wscript.Echo "Directory Cache Pages: " & _
objItem.DirectoryCachePages
Wscript.Echo "Dot Files Hidden: " & objItem.DotFilesHidden
Wscript.Echo "FAT Case: " & objItem.FatCase
Wscript.Echo "Key Name: " & objItem.KeyName
Wscript.Echo "Logon TimeOut: " & objItem.LogonTimeOut
Wscript.Echo "Maximum Handle Cache Size: " & _
objItem.MaxHandleCacheSize
Wscript.Echo "NTFS Case: " & objItem.NtfsCase
Wscript.Echo "RdWr Handle LifeTime: " & _
objItem.RdWrHandleLifeTime
Wscript.Echo "Register TCP: " & objItem.RegisterTcp
Wscript.Echo "Register Version 3: " & _
objItem.RegisterVersion3
Wscript.Echo
Next
List the NFS Server Version
On Error Resume Next
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\sfuadmin")
Set colItems = objWMIService.ExecQuery _
("Select * from NFSServer_CurrentVersion")
For Each objItem in colItems
Wscript.Echo "Default: " & objItem.Default
Wscript.Echo "Key Name: " & objItem.KeyName
Wscript.Echo "Path Name: " & objItem.PathName
Wscript.Echo
Next
Modify NFS Client Performance Settings
On Error Resume Next
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\sfuadmin")
Set colItems = objWMIService.ExecQuery _
("Select * from NFSClient_Perf Where KeyName = 'Defaults'")
For Each objItem in colItems
objItem.Retries = 2
objItem.Put_
Next
Modify NFS Server Auditing Settings
On Error Resume Next
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\sfuadmin")
Set colItems = objWMIService.ExecQuery _
("Select * from NFSServer_Auditing Where KeyName = 'Parameters'")
For Each objItem in colItems
objItem.Audit = 1
objItem.Put_
Next
Modify NFS Server Settings
On Error Resume Next
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\sfuadmin")
Set colItems = objWMIService.ExecQuery _
("Select * from NFSServer_SvSet Where KeyName = 'Parameters'")
For Each objItem in colItems
objItem.CaseSensitive = 0
objItem.Put_
Next
List Telnet Server Auditing Settings
On Error Resume Next
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\sfuadmin")
Set colItems = objWMIService.ExecQuery _
("Select * from Telnet_Auditing")
For Each objItem in colItems
Wscript.Echo "Default: " & objItem.Default
Wscript.Echo "Event Logging Enabled: " & _
objItem.EventLoggingEnabled
Wscript.Echo "Key Name: " & objItem.KeyName
Wscript.Echo "Log Administrator Attempts: " & _
objItem.LogAdminAttempts
Wscript.Echo "Log Events: " & objItem.LogEvents
Wscript.Echo "Log Failures: " & objItem.LogFailures
Wscript.Echo "Log File: " & objItem.LogFile
Wscript.Echo "Log File Size: " & objItem.LogFileSize
Wscript.Echo "Log To File: " & objItem.LogToFile
Wscript.Echo
Next
List Telnet Server Authentication Settings
On Error Resume Next
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\sfuadmin")
Set colItems = objWMIService.ExecQuery _
("Select * from Telnet_Authenticate")
For Each objItem in colItems
Wscript.Echo "Default: " & objItem.Default
Wscript.Echo "Key Name: " & objItem.KeyName
Wscript.Echo "Mechanism: " & objItem.Mechanism
Wscript.Echo
Next
List Telnet Server Information
On Error Resume Next
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\sfuadmin")
Set colItems = objWMIService.ExecQuery _
("Select * from Tlnt_Reg")
For Each objItem in colItems
Wscript.Echo "Key Name: " & objItem.KeyName
Wscript.Echo "Read Configuration: " & objItem.ReadConfig
Wscript.Echo
Next
List Telnet Server License Information
On Error Resume Next
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\sfuadmin")
Set colItems = objWMIService.ExecQuery _
("Select * from TelnetServer_Licences")
For Each objItem in colItems
Wscript.Echo "Key Name: " & objItem.KeyName
Wscript.Echo "Licenses: " & objItem.Licences
Wscript.Echo "Mode: " & objItem.Mode
Wscript.Echo
Next
List Telnet Server Settings
On Error Resume Next
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\sfuadmin")
Set colItems = objWMIService.ExecQuery _
("Select * from TelnetServer_Settings")
For Each objItem in colItems
Wscript.Echo "Alt Key Mapping: " & objItem.AltKeyMapping
Wscript.Echo "Default: " & objItem.Default
Wscript.Echo "Default Domain: " & objItem.DefaultDomain
Wscript.Echo "Idle Session Timeout: " & _
objItem.IdleSessionTimeout
Wscript.Echo "Idle Session Timeout Backup: " & _
objItem.IdleSessionTimeoutBkup
Wscript.Echo "Key Name: " & objItem.KeyName
Wscript.Echo "Kill All: " & objItem.KillAll
Wscript.Echo "Maximum Connections: " & objItem.MaxConnections
Wscript.Echo "Maximum Failed Logins: " & _
objItem.MaxFailedLogins
Wscript.Echo "Mode Operation: " & objItem.ModeOperation
Wscript.Echo "Telnet Port: " & objItem.TelnetPort
Wscript.Echo
Next
Modify Telnet Auditing Settings
On Error Resume Next
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\sfuadmin")
Set colItems = objWMIService.ExecQuery _
("Select * from Telnet_Auditing Where KeyName = 'Defaults'")
For Each objItem in colItems
objItem.LogEvents = 1
objItem.Put_
Next
Modify Telnet Server Settings
On Error Resume Next
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\sfuadmin")
Set colItems = objWMIService.ExecQuery _\
("Select * from TelnetServer_Settings Where KeyName = 'Defaults'")
For Each objItem in colItems
objItem.DefaultDomain = "fabrikam.com"
objItem.Put_
Next
Create a Discovery Data Record
Const ADDPPROP_NONE = &H0
Const ADDPROP_GUID = &H2
Const ADDPROP_KEY = &H8
Const ADDPROP_ARRAY = &H10
Dim DDR
Dim Computer
Dim SiteName
Dim FSO
Dim IPAddress(3), IPSubnet(3), MACAddress(3)
Computer="ComputerName"
SiteName="Acive Directory Site Name"
Set DDR=CreateObject("SMSResGen.SMSResGen.1")
DDR.DDRNew "System", "CustomAgent", "NES"
DDR.DDRAddString "Netbios Name", Computer, 64, ADDPROP_KEY
DDR.DDRAddString "AD Site Name", SiteName, 64, ADDPPROP_NONE
IPAddress(0)="123.234.12.23"
IPAddress(1)="123.234.12.32"
IPSubnet(0)="123.234.12.0"
IPSubnet(1)="123.234.12.0"
MACAddress(0)="00:02:A5:B1:11:68"
MACAddress(1)="00:02:A5:B1:11:69"
DDR.DDRAddStringArray "IP Addresses", Array(IPAddress(0),IPAddress(1)), 64, ADDPROP_ARRAY
DDR.DDRAddStringArray "MAC Addresses", Array(MACAddress(0),MACAddress(1)), 64, _
ADDPROP_ARRAY OR ADDPROP_KEY
DDR.DDRAddStringArray "IP Subnets", Array(IPSubnet(0),IPSubnet(1)), 64, ADDPROP_ARRAY
DDR.DDRWrite "MyDDR.DDR"
DDR.DDRSendtoSMS
Set FSO=CreateObject("Scripting.FileSystemObject")
FSO.GetFile("MyDDR.DDR").Delete
List the Size of the Advanced Client Cache
On Error Resume Next
Set oUIResManager = CreateObject("UIResource.UIResourceMgr")
Set oCache=oUIResManager.GetCacheInfo()
If oCache Is Nothing Then
Set oUIResManager=Nothing
Wscript.Echo "Could not get cache info - quitting"
Wscript.Quit
End If
Wscript.Echo "Total size:" & FormatNumber(oCache.TotalSize,0) + "MB"
Run Available Scripts on SMS Clients
On Error Resume Next
Dim oUIResource
Dim sProgramID
Dim sPackageID
Dim sPackageName
Dim oArgs
Dim objSWbemlocator
Dim objSWbemServices
Dim szNameSpacePath
Dim oProgramObjectSet
Dim oProgramObject
Dim sProgramObjectPath
szNameSpacePath = "root/microsoft/sms/client/swdist"
sPackageName = "PackageName"
sPackageID = "99999999"
sProgramID = "ProgramID"
'use the program name
Set objSWbemlocator = CreateObject("WbemScripting.SWbemLocator.1")
Set objSWbemServices = objSWbemlocator.ConnectServer(".",szNameSpacePath)
If Err.Number <> 0 Then
Trying to create UIResource - assuming Advanced Client
Set oUIResource = CreateObject ("UIResource.UIResourceMgr")
If oUIResource Is Nothing Then
Wscript.Quit(2)
End If
Run the program
oUIResource.ExecuteProgram sProgramID, sPackageID, TRUE
Wscript.Echo "Successfully executed program"
Wscript.Quit (0)
End If
Get the program index
Set oProgramObjectSet = _
oServices.ExecQuery _
("Select * from CLI_AvailableProgram where ProgramName=""" + _
sProgramID + """ and sPackageName=""" + sPackageName + """")
Run Each program in the objectset ... you might get more programs
'because key is package name and not package ID
For Each oProgramObject In oProgramObjectSet
sProgramObjectPath = oProgramObject.Path_.RelPath
Actually calling the WbemMethod to run the program now
oServices.ExecMethod sProgramObjectPath,"RunNow"
Start the SMS 2003 Hardware Inventory Cycle
On Error Resume Next
sActionName="Hardware Inventory Collection Cycle"
Create a CPAppletMgr instance
Dim oCPAppletMgr
Set oCPAppletMgr = CreateObject("CPApplet.CPAppletMgr")
Get the available ClientActions
Dim oClientActions
Set oClientActions = oCPAppletMgr.GetClientActions()
Loop through the available client actions
Dim oClientAction
For Each oClientAction In oClientActions
Is this the action we want to start?
If oClientAction.Name = sActionName Then
Start the action
oClientAction.PerformAction
End If
Next
Retrieve Updated User Policy
On Error Resume Next
Dim objCPAppletMgr
Dim objClientActions
Dim objClientAction
Dim strActionName
strActionName="Request & Evaluate User Policy"
'Get the Control Panel applet manager object
setobjCPAppletMgr = CreateObject("CPApplet.CPAppletMgr")
'Get a collection of client actions
set objClientActions=objCPAppletMgr.GetClientActions
'Loop through the available client actions
For Each objClientAction In objClientActions
If objClientAction.Name = strActionName Then
objClientAction.PerformAction
WScript.Echo "Action " + objClientAction.Name + " initiated"
End If
Next
Retrieve Updated Machine Policy
On Error Resume Next
Dim objCPAppletMgr
Dim objClientActions
Dim objClientAction
Dim strActionName
strActionName="Request & Evaluate Machine Policy"
'Get the Control Panel applet manager object
setobjCPAppletMgr = CreateObject("CPApplet.CPAppletMgr")
'Get a collection of client actions
set objClientActions=objCPAppletMgr.GetClientActions
'Loop through the available client actions
For Each objClientAction In objClientActions
If objClientAction.Name = strActionName Then
objClientAction.PerformAction
WScript.Echo "Action " + objClientAction.Name + " initiated"
End If
Next
Connect to an SMS Provider
Dim objSwbemLocator
Dim objSWbemServices
Dim ProviderLoc
Dim Location
set objSWbemLocator = CreateObject("WbemScripting.SWbemLocator")
set objSWbemServices= objSWbemLocator.ConnectServer _
(".", "root\sms")
Set ProviderLoc = objSWbemServices.InstancesOf("SMS_ProviderLocation")
For Each Location In ProviderLoc
If Location.ProviderForLocalSite = True Then
Set objSWbemServices = objSWbemLocator.ConnectServer _
(Location.Machine, "root\sms\site_" + Location.SiteCode)
End If
Next
Create an SMS Object
Dim objSWbemServices
Dim objSWbemLocator
Dim ProviderLoc
Dim Location
Dim objPackage
'Connect to local SMS Provider
set objSWbemLocator = CreateObject("WbemScripting.SWbemLocator")
set objSWbemServices= objSWbemLocator.ConnectServer _
(".", "root\sms")
Set ProviderLoc = objSWbemServices.InstancesOf("SMS_ProviderLocation")
For Each Location In ProviderLoc
If Location.ProviderForLocalSite = True Then
Set objSWbemServices = GetObject("winmgmts:{impersonationLevel=impersonate}!" & Location.NamespacePath)
Exit For
End If
Next
Set objPackage = objSWbemServices.Get("SMS_Package").SpawnInstance_()
objPackage.Name = "Test Package"
objPackage.Description = "Sample Package"
objPackage.PkgSourceFlag = 2
objPackage.PkgSourcePath = "C:\temp"
objPackage.Put_
Create an SMS Package and Program
On Error Resume Next
Dim objSWbemLocator
Dim objSWbemServices
Dim ProviderLoc
Dim Location
Dim PackageName
Dim ProgramName
Dim newPackage
Dim newProgram
Dim Package
Dim PackageID
Dim Path
PackageName="Package Name"
ProgramName="Program Name"
'connect to provider namespace for local computer
Set objSWbemLocator = CreateObject("WbemScripting.SWbemLocator")
Set objSWbemServices= objSWbemLocator.ConnectServer(".", "root\sms")
Set ProviderLoc = objSWbemServices.InstancesOf("SMS_ProviderLocation")
For Each Location In ProviderLoc
If Location.ProviderForLocalSite = True Then
Set objSWbemServices = objSWbemLocator.ConnectServer _
(Location.Machine, "root\sms\site_" + Location.SiteCode)
End If
Next
'create package
Set newPackage = objSWbemServices.Get("SMS_Package").SpawnInstance_()
newPackage.Name = PackageName
newPackage.Description = "created by sample script"
newPackage.PkgSourceFlag = 2
newPackage.PkgSourcePath = "C:\temp"
Path=newPackage.Put_
Wscript.Echo "Created packge " +PackageName
'and get the automatically assigned package ID
Set Package=objSWbemServices.Get(Path)
PackageID= Package.PackageID
Set newProgram = objSWbemServices.Get("SMS_Program").SpawnInstance_()
newProgram.ProgramName = ProgramName
newProgram.PackageID = PackageID
newProgram.Comment = "phone the helpdesk for support with this program"
newProgram.CommandLine = "Notepad.exe"
newProgram.Put_
Wscript.Echo "Created program " + ProgramName
Create an SMS Software Metering Rule
On Error Resume Next
Dim objSWbemLocator
Dim objSWbemServices
Dim objNewSWbemObject
Dim objSWbemObject
Dim ProviderLoc
Dim Location
Dim strClass
Dim strSiteCode
'Creates a Software Metering Rule
strClass="SMS_MeteredProductRule"
set objSWbemLocator = CreateObject("WbemScripting.SWbemLocator")
set objSWbemServices= objSWbemLocator.ConnectServer _
(".", "root\sms")
Set ProviderLoc = objSWbemServices.InstancesOf("SMS_ProviderLocation")
For Each Location In ProviderLoc
If Location.ProviderForLocalSite = True Then
Set objSWbemServices = objSWbemLocator.ConnectServer _
(Location.Machine, "root\sms\site_" + Location.SiteCode)
strSiteCode=Location.SiteCode
End If
Next
Set objSWbemObject = objSWbemServices.Get(strClass)
Set objNewSWbemObject = objSWbemObject.SpawnInstance_()
objNewSWbemObject.Properties_.Item("ProductName")="Character Mapper"
objNewSWbemObject.Properties_.Item("FileName")="charmap.exe"
objNewSWbemObject.Properties_.Item("OriginalFileName")="charmap.exe"
objNewSWbemObject.Properties_.Item("FileVersion")="*"
objNewSWbemObject.Properties_.Item("LanguageID")="1033"
objNewSWbemObject.Properties_.Item("SiteCode")= strSiteCode
objNewSWbemObject.Properties_.Item("ApplyToChildSites")="true"
objNewSWbemObject.Put_
Delete an SMS Object
Dim objAdvertisement
Set objAdvertisement = GetObject _
("WinMgmts:root\SMS\site_999:SMS_Advertisement.AdvertisementID='99920002'")
objAdvertisement.Delete_
List Health Summary for Local SMS Sites
On Error Resume Next
Dim objSWbemServices
Dim ProviderLoc
Dim Location
Dim strSummarizerSiteStatus
Dim colSummarizerSiteStatus
Dim objSiteSummary
strSummarizerSiteStatus="SMS_SummarizerSiteStatus"
Set ProviderLoc = GetObject _
("winmgmts:{impersonationLevel=impersonate}!root/sms:SMS_ProviderLocation")
If Err.Number<>0 Then
Wscript.Echo "Couldn't get SMS Provider"
Wscript.Quit
End If
For Each Location In ProviderLoc.Instances_
If Location.ProviderForLocalSite = True Then
Set objSWbemServices = GetObject("winmgmts:" & Location.NamespacePath)
Exit For
End If
Next
'Get SMS_SummarizerSiteStatus
Set colSummarizerSiteStatus=objSWbemServices.InstancesOf(strSummarizerSiteStatus)
If Err.Number<>0 Then
Wscript.Echo "Couldn't get Site Summary"
Wscript.Quit
End If
For Each objSiteSummary In colSUmmarizerSiteStatus
wscript.echo "Site code:" + objSiteSummary.SiteCode
If objSiteSummary.Status=0 Then
Wscript.Echo "Site is healthy"
End If
If objSiteSummary.Status=1 Then
Wscript.Echo "There are warnings for this site"
End If
If objSiteSummary.Status=2 Then
Wscript.Echo "The site health is critical"
End If
Next
Modify an SMS Object
Dim objAdvertisement
Set objAdvertisement = GetObject _
("WinMgmts:root\SMS\site_999:SMS_Advertisement.AdvertisementID='99920002'")
objAdvertisement.AssignedScheduleEnabled=True
objAdvertisement.Put_
View an SMS Collection
On Error Resume Next
Dim objSWbemServices
Dim ProviderLoc
Dim Location
Dim colQueryCollectionResults
Dim ObjResult
Dim objQuery
Dim colQueryResults
Set ProviderLoc = GetObject _
("winmgmts:{impersonationLevel=impersonate}!root/sms:SMS_ProviderLocation")
If Err.Number<>0 Then
Wscript.Echo "Couldn't get SMS Provider"
Wscript.Quit
End If
For Each Location In ProviderLoc.Instances_
If Location.ProviderForLocalSite = True Then
Set objSWbemServices = GetObject("winmgmts:" & Location.NamespacePath)
Exit For
End If
Next
'Query Collection
Set colQueryCollectionResults=objSWbemServices.ExecQuery _
("SELECT * FROM SMS_FullCollectionMembership WHERE CollectionID='SMS00001'" )
If Err.Number<>0 Then
Wscript.Echo "Couldn't get Collection"
Wscript.Quit
End If
'run query
Wscript.Echo "Collections"
Wscript.Echo "----------------------------------"
For Each objResult In colQueryCollectionResults
Wscript.Echo " " + objResult.Name
Next
If colQueryCollectionResults.Count=0 Then
Wscript.Echo "no query results"
End If
Create a Console Folder
Option Explicit
Dim objSWbemLocator
Dim objSWbemServices
Dim ProviderLoc
Dim Location
Dim objNewConsoleFolder
set objSWbemLocator = CreateObject("WbemScripting.SWbemLocator")
set objSWbemServices= objSWbemLocator.ConnectServer _
("COMPUTER NAME", "root\sms")
Set ProviderLoc = objSWbemServices.InstancesOf("SMS_ProviderLocation")
For Each Location In ProviderLoc
If Location.ProviderForLocalSite = True Then
Set objSWbemServices = objSWbemLocator.ConnectServer _
(Location.Machine, "root\sms\site_" + Location.SiteCode)
End If
Next
Set objNewConsoleFolder = objSWbemServices.Get("SMS_ObjectContainerNode").SpawnInstance_()
objNewConsoleFolder.Name = "Hardware - Disk"
objNewConsoleFolder.ObjectType=8
Report Node.
objNewConsoleFolder.ParentContainerNodeID = 0
'Create in root node.
objNewConsoleFolder.Put_
Move SMS Reports to a Console Folder
Option Explicit
Dim objSWbemLocator
Dim objSWbemServices
Dim ProviderLoc
Dim Location
Dim objNewConsoleFolderItem
Dim FolderIdentifier
Dim objFolder
Dim ObjReport
FolderIdentifier=0
set objSWbemLocator = CreateObject("WbemScripting.SWbemLocator")
set objSWbemServices= objSWbemLocator.ConnectServer _
("COMPUTER NAME", "root\sms")
Set ProviderLoc = objSWbemServices.InstancesOf("SMS_ProviderLocation")
For Each Location In ProviderLoc
If Location.ProviderForLocalSite = True Then
Set objSWbemServices = objSWbemLocator.ConnectServer _
(Location.Machine, "root\sms\site_" + Location.SiteCode)
End If
Next
For Each objFolder in objSWbemServices.InstancesOf("SMS_ObjectContainerNode")
if objFolder.Name="Hardware - Disk" Then FolderIdentifier=objFolder.ContainerNodeID
Next
If FolderIdentifier=0 Then
wscript.Echo "No Hardware - Disk folder found"
wscript.quit 2
End If
For Each objReport in objSWbemServices.InstancesOf("SMS_Report")
if objReport.Category="Hardware - Disk" Then
'Create the folder item.
Set objNewConsoleFolderItem = objSWbemServices.Get _
("SMS_ObjectContainerItem").SpawnInstance_()
objNewConsoleFolderItem.InstanceKey = ObjReport.SecurityKey
objNewConsoleFolderItem.ObjectType=8
Package Node.
objNewConsoleFolderItem.ContainerNodeID = FolderIdentifier
'Container
objNewConsoleFolderItem.Put_
End If
Next
Delete a Console Folder
Option Explicit
Dim objSWbemLocator
Dim objSWbemServices
Dim ProviderLoc
Dim Location
Dim objFolder
Set objSWbemLocator = CreateObject("WbemScripting.SWbemLocator")
Set objSWbemServices= objSWbemLocator.ConnectServer _
("COMPUTER NAME", "root\sms")
Set ProviderLoc = objSWbemServices.InstancesOf("SMS_ProviderLocation")
For Each Location In ProviderLoc
If Location.ProviderForLocalSite = True Then
Set objSWbemServices = objSWbemLocator.ConnectServer _
(Location.Machine, "root\sms\site_" + Location.SiteCode)
End If
Next
For Each objFolder in objSWbemServices.InstancesOf("SMS_ObjectContainerNode")
if objFolder.Name="Hardware - Disk" Then
objFolder.Delete_
Deletes the folder - the folder items are moved back to the root node.
End IF
Next
Update a Package
On Error Resume Next
Dim objSWbemLocator
Dim objSWbemServices
Dim ProviderLoc
Dim Location
Dim PackageID
Dim colPackages
Dim Package
'Enter the package ID of the package to be updated
PackageID = "PACKAGEID"
'To connect to the local SMS site's Provider by using SWbemLocator
Set objSWbemLocator = CreateObject("WbemScripting.SWbemLocator")
Set objSWbemServices= objSWbemLocator.ConnectServer(".", "root\sms")
Set ProviderLoc = objSWbemServices.InstancesOf("SMS_ProviderLocation")
For Each Location In ProviderLoc
If Location.ProviderForLocalSite = True Then
Set objSWbemServices = objSWbemLocator.ConnectServer _
(Location.Machine, "root\sms\site_" + Location.SiteCode)
End If
Next
'To find the package ID in the SMS_Packages class and use the RefreshPkgSource Method to initiate update.
Set colPackages = objSWbemServices.ExecQuery _
("Select * from SMS_Package where PackageID = '" & PackageID & "'")
If colPackages.count <> 0 Then
For Each Package In colPackages
Package.RefreshPkgSource( )
WScript.Echo "Package '" & PackageID & "' Updated!"
Next
Else
WScript.Echo "Package '" & PackageID & "' Not Found!"
End If
Retrieve User Instance Permissions
Const adVarChar = 200
Const MaxCharacters = 255
strUser="DOMAIN\USER"
On Error Resume next
Set DataList = CreateObject("ADOR.Recordset")
With DataList.Fields
.Append "InstanceKey", adVarChar, MaxCharacters
.Append "PermissionName", adVarChar, MaxCharacters
.Append "ObjectKeyName", adVarChar, MaxCharacters
End With
DataList.Open
Set ProviderLoc = GetObject("winmgmts:{impersonationLevel=impersonate}!root/sms:SMS_ProviderLocation")
If err.number<>0 Then
wscript.echo "Couldn't Get SMS Provider"
wscript.quit
End If
For Each Location In ProviderLoc.Instances_
If Location.ProviderForLocalSite = True Then
Set objSWbemServices = GetObject("winmgmts:" & Location.NamespacePath)
Exit For
End If
Next
Wscript.Echo "Instance permissions for " + UCase(strUser)
Set colClassPermissionNames=objSwbemServices.InstancesOf("SMS_UserClassPermissionNames")
For Each objClassPermissionName In colClassPermissionNames
If Ucase(objClassPermissionName.UserName)=Ucase(strUser) Then
strInstanceKey = "All Instances"
AddNewData strInstanceKey, objClassPermissionName.ObjectKey, _
objClassPermissionName.PermissionName
End If
Next
Set colInstancePermissionNames=objSwbemServices.InstancesOf("SMS_UserInstancePermissionNames")
For Each objInstancePermissionName In colInstancePermissionNames
If Ucase(objInstancePermissionName.UserName)=Ucase(strUser) Then
AddNewData objInstancePermissionName.InstanceKey, objInstancePermissionName.ObjectKey, _
objInstancePermissionName.PermissionName
End If
Next
DataList.Sort = "ObjectKeyName"
Do Until DataList.EOF
wscript.echo Datalist.Fields.Item("ObjectKeyName") & " - " & DataList.Fields.Item("InstanceKey")_
& " - " & DataList.Fields.Item("PermissionName")
DataList.MoveNext
Loop
Function AddNewData (InstanceKey, ObjectKey, Permission)
Datalist.AddNew
Datalist("InstanceKey") = InstanceKey
Datalist("PermissionName") = Permission
Select Case ObjectKey
Case 1 strObjectKeyName = "Collection"
Case 2 strObjectKeyName = "Package"
Case 3 strObjectKeyName = "Advertisement"
Case 4 strObjectKeyName = "Status Message"
Case 6 strObjectKeyName = "Site"
'ObjectKey #5 is unused
Case 7 strObjectKeyName = "Query"
Case 8 strObjectKeyName = "Report"
Case 9 strObjectKeyName = "Software Metering Rule"
Case 10 strObjectKeyName = "Software Updates"
End Select
Datalist("ObjectKeyName") = strObjectKeyName
End Function
Wscript.Quit
Retrieve Object Instance Permissions
Const adVarChar = 200
Const MaxCharacters = 255
strInstanceKey="SMS00001"
iObjectKey = 1
'1-Collection,2-Package,3-Advertisement,4-StatusMessage,6-Site,7-Query,8-Report,9-SoftwareMeteringRule
On Error Resume Next
Set DataList = CreateObject("ADOR.Recordset")
With DataList.Fields
.Append "UserName", adVarChar, MaxCharacters
.Append "PermissionName", adVarChar, MaxCharacters
End With
DataList.Open
Set ProviderLoc = GetObject("winmgmts:{impersonationLevel=impersonate}!root/sms:SMS_ProviderLocation")
If err.number<>0 Then
wscript.echo "Couldn't Get SMS Provider"
wscript.quit
End If
For Each Location In ProviderLoc.Instances_
If Location.ProviderForLocalSite = True Then
Set objSWbemServices = GetObject("winmgmts:" & Location.NamespacePath)
Exit For
End If
Next
Select Case iObjectKey
Case 1 strObjectKeyName = "Collection"
Case 2 strObjectKeyName = "Package"
Case 3 strObjectKeyName = "Advertisement"
Case 4 strObjectKeyName = "Status Message"
Case 6 strObjectKeyName = "Site"
'ObjectKey #5 is unused
Case 7 strObjectKeyName = "Query"
Case 8 strObjectKeyName = "Report"
Case 9 strObjectKeyName = "Software Metering Rule"
Case 10 strObjectKeyName = "Software Updates"
End Select
Wscript.Echo "Permissions for " & strObjectKeyName & ": " + UCase(strInstanceKey)
Set colInstancePermissionNames=objSwbemServices.InstancesOf("SMS_UserInstancePermissionNames")
For Each objInstancePermissionName In colInstancePermissionNames
If Ucase(objInstancePermissionName.InstanceKey)=Ucase(strInstanceKey) Then
AddNewData objInstancePermissionName.UserName, objInstancePermissionName.PermissionName
End If
Next
Set colClassPermissionNames=objSwbemServices.InstancesOf("SMS_UserClassPermissionNames")
For Each objClassPermissionName In colClassPermissionNames
If Ucase(objClassPermissionName.ObjectKey)=Ucase(iObjectKey) Then
AddNewData objClassPermissionName.UserName, objClassPermissionName.PermissionName
End If
Next
DataList.Sort = "PermissionName"
DataList.MoveFirst
Do Until DataList.EOF
wscript.echo DataList.Fields.Item("PermissionName")& " - " & DataList.Fields.Item("UserName")
DataList.MoveNext
Loop
Function AddNewData (UserName, Permission)
Datalist.AddNew
Datalist("UserName") = UserName
Datalist("PermissionName") = Permission
End Function
Wscript.Quit
Display the Settings Dialog Box
Set objAutoUpdate = CreateObject("Microsoft.Update.AutoUpdate")
objAutoUpdate.ShowSettingsDialog
Display the Software Update Service Wizard
Set objCollection = CreateObject("Microsoft.Update.UpdateColl")
Set objSearcher = CreateObject("Microsoft.Update.Searcher")
Set objResults = objSearcher.Search _
("UpdateID='ac94db3b-e1a8-4e92-9fd0-e86f355e6a44'")
Set colUpdates = objResults.Updates
objCollection.Add(colUpdates.Item(0))
Set objInstaller = CreateObject("Microsoft.Update.Installer")
objInstaller.Updates = objCollection
Set objResults = objInstaller.RunWizard
Install an Update
Set objCollection = CreateObject("Microsoft.Update.UpdateColl")
Set objSearcher = CreateObject("Microsoft.Update.Searcher")
Set objResults = objSearcher.Search _
("UpdateID='ac94db3b-e1a8-4e92-9fd0-e86f355e6a44'")
Set colUpdates = objResults.Updates
objCollection.Add(colUpdates.Item(0))
Set objInstaller = CreateObject("Microsoft.Update.Installer")
objInstaller.Updates = objCollection
Set objInstallResults = objInstaller.Install
Wscript.Echo objInstallResults.Exception
Wscript.Echo objInstallResults.RebootRequired
Wscript.Echo objInstallResults.ResultCode
List Client-Side Settings
Set objAutoUpdate = CreateObject("Microsoft.Update.AutoUpdate")
Wscript.Echo "Service enabled: " & objAutoUpdate.ServiceEnabled
Set objSettings = objAutoUpdate.Settings
Wscript.Echo "Notification level: " & objSettings.NotificationLevel
Wscript.Echo "Read-only: " & objSettings.ReadOnly
Wscript.Echo "Required: " & objSettings.Required
Wscript.Echo "Scheduled Installation Day: " & _
objSettings.ScheduledInstallationDay
Wscript.Echo "Scheduled Installation Time: " & _
objSettings.ScheduledInstallationTime
List Proxy Properties
Set objProxy = CreateObject("Microsoft.Update.WebProxy")
Wscript.Echo "Address: " & objProxy.Address
Wscript.Echo "Bypass proxy on local addresses: " & objProxy.BypassProxyOnLocal
Wscript.Echo "Read-only: " & objProxy.Readonly
Wscript.Echo "User name: " & objProxy.UserName
List Search Properties
Set objSearcher = CreateObject("Microsoft.Update.Searcher")
Wscript.Echo "Can automatically upgrade service: " & _
objSearcher.CanAutomaticallyUpgradeService
Wscript.Echo "Client application ID: " & objSearcher.ClientApplicationID
Wscript.Echo "Online: " & objSearcher.Online
Wscript.Echo "Server selection: " & objSearcher.ServerSelection
Wscript.Echo "Service ID: " & objSearcher.ServiceID
List Service Properties
Set objServiceManager = CreateObject("Microsoft.Update.ServiceManager")
Set colServices = objServiceManager.Services
For i = 0 to colServices.Count - 1
Wscript.Echo "Name: " & colServices.Item(i).Name
Wscript.Echo "Is managed: " & colServices.Item(i).IsManaged
Wscript.Echo "Is registered with Automatic Updates: " & _
colServices.Item(i).IsRegisteredWithAU
Wscript.Echo "Issue date: " & colServices.Item(i).IssueDate
Wscript.Echo "Offers Windows updates: " & _
colServices.Item(i).OffersWindowsUpdates
Wscript.Echo"Redirection URL: " &colServices.Item(i).RedirectURL
Wscript.Echo "Service ID: " & colServices.Item(i).ServiceID
Wscript.Echo "UI Plugin Class ID: " & colServices.Item(i).UIPluginClsid
Next
List System Information Properties
Set objSysInfo = CreateObject("Microsoft.Update.SystemInfo")
Wscript.Echo "OEM hardware support link: " & objSysInfo.OEMHardwareSupportLink
Wscript.Echo "Reboot required: " & objSysInfo.RebootRequired
List Update History
Set objSession = CreateObject("Microsoft.Update.Session")
Set objSearcher = objSession.CreateUpdateSearcher
intHistoryCount = objSearcher.GetTotalHistoryCount
Set colHistory = objSearcher.QueryHistory(1, intHistoryCount)
For Each objEntry in colHistory
Wscript.Echo "Operation: " & objEntry.Operation
Wscript.Echo "Result code: " & objEntry.ResultCode
Wscript.Echo "Exception: " & objEntry.Exception
Wscript.Echo "Date: " & objEntry.Date
Wscript.Echo "Title: " & objEntry.Title
Wscript.Echo "Description: " & objEntry.Description
Wscript.Echo "Unmapped exception: " & objEntry.UnmappedException
Wscript.Echo "Client application ID: " & objEntry.ClientApplicationID
Wscript.Echo "Server selection: " & objEntry.ServerSelection
Wscript.Echo "Service ID: " & objEntry.ServiceID
i = 1
For Each strStep in objEntry.UninstallationSteps
Wscript.Echo i & " -- " & strStep
i = i + 1
Next
Wscript.Echo "Uninstallation notes: " & objEntry.UninstallationNotes
Wscript.Echo "Support URL: " & objEntry.SupportURL
Wscript.Echo
Next
Modify the Update Schedule
Set objAutoUpdate = CreateObject("Microsoft.Update.AutoUpdate")
Set objSettings = objAutoUpdate.Settings
objSettings.ScheduledInstallationDay = 3
objSettings.ScheduledInstallationTime = 4
objSettings.Save
Search for Driver Updates
@Set objSearcher = CreateObject("Microsoft.Update.Searcher")
Set objResults = objSearcher.Search("Type='Driver'")
Set colUpdates = objResults.Updates
Wscript.Echo colUpdates.Count
For i = 0 to colUpdates.Count - 1
Wscript.Echo "Title: " & colUpdates.Item(i).Title
Wscript.Echo "Autoselect on Web sites: " & _
colUpdates.Item(i).AutoSelectOnWebSites
For Each strUpdate in colUpdates.Item(i).BundledUpdates
Wscript.Echo "Bundled update: " & strUpdate
Next
Wscript.Echo "Can require source: " & colUpdates.Item(i).CanRequireSource
Set objCategories = colUpdates.Item(i).Categories
For z = 0 to objCategories.Count - 1
Wscript.Echo "Category name: " & objCategories.Item(z).Name
Wscript.Echo "Category ID: " & objCategories.Item(z).CategoryID
For Each strChild in objCategories.Item(z).Children
Wscript.Echo "Child category: " & strChild
Next
Wscript.Echo "Category description: " & _
objCategories.Item(z).Description
Wscript.Echo "Category order: " & objCategories.Item(z).Order
Wscript.Echo "Category type: " & objCategories.Item(z).Type
Next
Wscript.Echo "Deadline: " & colUpdates.Item(i).Deadline
Wscript.Echo "Delta compressed content available: " & _
colUpdates.Item(i).DeltaCompressedContentAvailable
Wscript.Echo "Delta compressed content preferred: " & _
colUpdates.Item(i).DeltaCompressedContentPreferred
Wscript.Echo "Description: " & colUpdates.Item(i).Description
Wscript.Echo "EULA accepted: " & colUpdates.Item(i).EULAAccepted
Wscript.Echo "EULA text: " & colUpdates.Item(i).EULAText
Wscript.Echo "Handler ID: " & colUpdates.Item(i).HandlerID
Set objIdentity = colUpdates.Item(i).Identity
Wscript.Echo "Revision number: " & objIdentity.RevisionNumber
Wscript.Echo "Update ID: " & objIdentity.UpdateID
Set objInstallationBehavior = colUpdates.Item(i).InstallationBehavior
Wscript.Echo "Can request user input: " & _
objInstallationBehavior.CanRequestUserInput
Wscript.Echo "Impact: " & objInstallationBehavior.Impact
Wscript.Echo "Reboot behavior: " & objInstallationBehavior.RebootBehavior
Wscript.Echo "Requires network connectivity: " & _
objInstallationBehavior.RequiresNetworkConnectivity
Wscript.Echo "Is beta: " & colUpdates.Item(i).IsBeta
Wscript.Echo "Is hidden: " & colUpdates.Item(i).IsHidden
Wscript.Echo "Is installed: " & colUpdates.Item(i).IsInstalled
Wscript.Echo "Is mandatory: " & colUpdates.Item(i).IsMandatory
Wscript.Echo "Is uninstallable: " & colUpdates.Item(i).IsUninstallable
For Each strLanguage in colUpdates.Item(i).Languages
Wscript.Echo "Supported language: " & strLanguage
Next
Wscript.Echo "Last deployment change time: " & _
colUpdates.Item(i).LastDeploymentChangeTime
Wscript.Echo "Maximum download size: " & colUpdates.Item(i).MaxDownloadSize
Wscript.Echo "Minimum download size: " & colUpdates.Item(i).MinDownloadSize
Wscript.Echo "Microsoft Security Response Center severity: " & _
colUpdates.Item(i).MsrcSeverity
Wscript.Echo "Recommended CPU speed: " & _
colUpdates.Item(i).RecommendedCPUSpeed
Wscript.Echo "Recommended hard disk space: " & _
colUpdates.Item(i).RecommendedHardDiskSpace
Wscript.Echo "Recommended memory: " & colUpdates.Item(i).RecommendedMemory
Wscript.Echo "Release notes: " & colUpdates.Item(i).ReleaseNotes
Wscript.Echo "Support URL: " & colUpdates.Item(i).SupportURL
Wscript.Echo "Type: " & colUpdates.Item(i).Type
Wscript.Echo "Uninstallation notes: " & _
colUpdates.Item(i).UninstallationNotes
x = 1
For Each strStep in colUpdates.Item(i).UninstallationSteps
Wscript.Echo x & " -- " & strStep
x = x + 1
Next
For Each strArticle in colUpdates.Item(i).KBArticleIDs
Wscript.Echo "KB article: " & strArticle
Next
Wscript.Echo "Deployment action: " & colUpdates.Item(i).DeploymentAction
Wscript.Echo
Next
Search for Software Updates
Set objSearcher = CreateObject("Microsoft.Update.Searcher")
Set objResults = objSearcher.Search("Type='Software'")
Set colUpdates = objResults.Updates
For i = 0 to colUpdates.Count - 1
Wscript.Echo "Title: " & colUpdates.Item(i).Title
Wscript.Echo "Autoselect on Web sites: " & _
colUpdates.Item(i).AutoSelectOnWebSites
For Each strUpdate in colUpdates.Item(i).BundledUpdates
Wscript.Echo "Bundled update: " & strUpdate
Next
Wscript.Echo "Can require source: " & colUpdates.Item(i).CanRequireSource
Set objCategories = colUpdates.Item(i).Categories
For z = 0 to objCategories.Count - 1
Wscript.Echo "Category name: " & objCategories.Item(z).Name
Wscript.Echo "Category ID: " & objCategories.Item(z).CategoryID
For Each strChild in objCategories.Item(z).Children
Wscript.Echo "Child category: " & strChild
Next
Wscript.Echo "Category description: " & _
objCategories.Item(z).Description
Wscript.Echo "Category order: " & objCategories.Item(z).Order
Wscript.Echo "Category type: " & objCategories.Item(z).Type
Next
Wscript.Echo "Deadline: " & colUpdates.Item(i).Deadline
Wscript.Echo "Delta compressed content available: " & _
colUpdates.Item(i).DeltaCompressedContentAvailable
Wscript.Echo "Delta compressed content preferred: " & _
colUpdates.Item(i).DeltaCompressedContentPreferred
Wscript.Echo "Description: " & colUpdates.Item(i).Description
Wscript.Echo "EULA accepted: " & colUpdates.Item(i).EULAAccepted
Wscript.Echo "EULA text: " & colUpdates.Item(i).EULAText
Wscript.Echo "Handler ID: " & colUpdates.Item(i).HandlerID
Set objIdentity = colUpdates.Item(i).Identity
Wscript.Echo "Revision number: " & objIdentity.RevisionNumber
Wscript.Echo "Update ID: " & objIdentity.UpdateID
Set objInstallationBehavior = colUpdates.Item(i).InstallationBehavior
Wscript.Echo "Can request user input: " & _
objInstallationBehavior.CanRequestUserInput
Wscript.Echo "Impact: " & objInstallationBehavior.Impact
Wscript.Echo "Reboot behavior: " & objInstallationBehavior.RebootBehavior
Wscript.Echo "Requires network connectivity: " & _
objInstallationBehavior.RequiresNetworkConnectivity
Wscript.Echo "Is beta: " & colUpdates.Item(i).IsBeta
Wscript.Echo "Is hidden: " & colUpdates.Item(i).IsHidden
Wscript.Echo "Is installed: " & colUpdates.Item(i).IsInstalled
Wscript.Echo "Is mandatory: " & colUpdates.Item(i).IsMandatory
Wscript.Echo "Is uninstallable: " & colUpdates.Item(i).IsUninstallable
For Each strLanguage in colUpdates.Item(i).Languages
Wscript.Echo "Supported language: " & strLanguage
Next
Wscript.Echo "Last deployment change time: " & _
colUpdates.Item(i).LastDeploymentChangeTime
Wscript.Echo "Maximum download size: " & colUpdates.Item(i).MaxDownloadSize
Wscript.Echo "Minimum download size: " & colUpdates.Item(i).MinDownloadSize
Wscript.Echo "Microsoft Security Response Center severity: " & _
colUpdates.Item(i).MsrcSeverity
Wscript.Echo "Recommended CPU speed: " & _
colUpdates.Item(i).RecommendedCPUSpeed
Wscript.Echo "Recommended hard disk space: " & _
colUpdates.Item(i).RecommendedHardDiskSpace
Wscript.Echo "Recommended memory: " & colUpdates.Item(i).RecommendedMemory
Wscript.Echo "Release notes: " & colUpdates.Item(i).ReleaseNotes
Wscript.Echo "Support URL: " & colUpdates.Item(i).SupportURL
Wscript.Echo "Type: " & colUpdates.Item(i).Type
Wscript.Echo "Uninstallation notes: " & _
colUpdates.Item(i).UninstallationNotes
x = 1
For Each strStep in colUpdates.Item(i).UninstallationSteps
Wscript.Echo x & " -- " & strStep
x = x + 1
Next
For Each strArticle in colUpdates.Item(i).KBArticleIDs
Wscript.Echo "KB article: " & strArticle
Next
Wscript.Echo "Deployment action: " & colUpdates.Item(i).DeploymentAction
Wscript.Echo
Next
Uninstall an Update
Set objCollection = CreateObject("Microsoft.Update.UpdateColl")
Set objSearcher = CreateObject("Microsoft.Update.Searcher")
Set objResults = objSearcher.Search _
("UpdateID='ac94db3b-e1a8-4e92-9fd0-e86f355e6a44'")
Set colUpdates = objResults.Updates
Wscript.echo colUpdates.count
objCollection.Add(colUpdates.Item(0))
Wscript.echo objCollection.count
Set objInstaller = CreateObject("Microsoft.Update.Installer")
objInstaller.Updates = objCollection
Set objInstallResults = objInstaller.Uninstall
Wscript.Echo objInstallResults.Exception
Wscript.Echo objInstallResults.RebootRequired
Wscript.Echo objInstallResults.ResultCode
List All the Tables in a SQL Server Database
SQL Server 2000 : Yes
strDBServerName = "."
strDBName = "Northwind"
Set objSQLServer = CreateObject("SQLDMO.SQLServer")
objSQLServer.LoginSecure = True
objSQLServer.Connect strDBServerName
Set objDB = objSQLServer.Databases(strDBName)
Set colTables = objDB.Tables
For Each objTable In colTables
WScript.Echo "Table Name: "& objTable.Name
Next
Displays the total size of a SQL Server database
SQL Server 2000 : Yes
strDBServerName = "."
strDBName = "ScriptingGuysTestDB"
Set objSQLServer = CreateObject("SQLDMO.SQLServer")
objSQLServer.LoginSecure = True
objSQLServer.Connect strDBServerName
Set objDB = objSQLServer.Databases(strDBName)
WScript.Echo "Total Size of Data File + Transaction Log of DB " & strDBName & ": " & objDB.Size & "(MB)"
Display the free space for a SQL Server database.
SQL Server 2000 : Yes
strDBServerName = "."
strDBName = "ScriptingGuysTestDB"
Set objSQLServer = CreateObject("SQLDMO.SQLServer")
objSQLServer.LoginSecure = True
objSQLServer.Connect strDBServerName
Set objDB = objSQLServer.Databases(strDBName)
WScript.Echo "Space Left (Data File + Transaction Log) for DB " &_
strDBName & ": " & objDB.SpaceAvailableInMB & "(MB)"
Sample script that displays all of the users in a given SQL Server DB.
SQL Server 2000 : Yes
strDBServerName = "."
strDBName = "ScriptingGuysTestDB"
Set objSQLServer = CreateObject("SQLDMO.SQLServer")
objSQLServer.LoginSecure = True
objSQLServer.Connect strDBServerName
Set objDB = objSQLServer.Databases(strDBName)
Set colUsers = objDB.Users
For Each objUser In colUsers
WScript.Echo "User: "& objUser.Name
WScript.Echo "Login: " & objUser.Login
Next
Sample script that lists all the views in a given SQL Server DB.
SQL Server 2000 : Yes
strDBServerName = "."
strDBName = "Northwind"
Set objSQLServer = CreateObject("SQLDMO.SQLServer")
objSQLServer.LoginSecure = True
objSQLServer.Connect strDBServerName
Set colViews = objSQLServer.Databases(strDBName).Views
For Each objView In colViews
WScript.Echo objView.Name
Next
Sample script that deletes a SQL Server database.
SQL Server 2000 : Yes
strDBServerName = "."
strDBToDelete = "ScriptingGuysTestDB"
Set objSQLServer = CreateObject("SQLDMO.SQLServer")
objSQLServer.LoginSecure = True
objSQLServer.Connect strDBServerName
objSQLServer.KillDatabase strDBToDelete
Sample script that lists the roles within a SQL Server database.
SQL Server 2000 : Yes
strDBServerName = "."
strDBName = "Northwind"
Set objSQLServer = CreateObject("SQLDMO.SQLServer")
objSQLServer.LoginSecure = True
objSQLServer.Connect strDBServerName
Set objDB = objSQLServer.Databases(strDBName)
Set colRoles = objDB.DatabaseRoles
For Each objRole In colRoles
WScript.Echo "Role Name: "& objRole.Name
Next
Sample script that lists the rules within a SQL Server database.
SQL Server 2000 : Yes
strDBServerName = "."
strDBName = "Northwind"
Set objSQLServer = CreateObject("SQLDMO.SQLServer")
objSQLServer.LoginSecure = True
objSQLServer.Connect strDBServerName
Set objDB = objSQLServer.Databases(strDBName)
Set colRules = objDB.Rules
For Each objRule In colRules
WScript.Echo "Rule Name: "& objRule.Name
Next
Create a SQL Server database.
SQL Server 2000 : Yes
DB_SIZE_IN_MEGABYTES = 5
strDBServerName = "."
Set objSQLServer = CreateObject("SQLDMO.SQLServer")
objSQLServer.LoginSecure = True
objSQLServer.Connect strDBServerName
Set objDB = CreateObject("SQLDMO.Database")
Set objFG = CreateObject("SQLDMO.Filegroup")
Set objDBFile = CreateObject("SQLDMO.DBFile")
Set objLogFile = CreateObject("SQLDMO.LogFile")
objDB.Name = "ScriptingGuysTestDB"
objDBFile.Name = "ScriptingGuysTestDB_Data"
objDBFile.PhysicalName = "C:\Program Files\Microsoft SQL Server\MSSQL\data\ScriptingGuysTestDB_Data.MDF"
objDBFile.Size = DB_SIZE_IN_MEGABYTES
objDB.FileGroups("PRIMARY").DBFiles.Add(objDBFile)
objSQLServer.Databases.Add(objDB)
List the Stored Procedures in a SQL Server database.
SQL Server 2000 : Yes
strDBServerName = "."
strDBName = "Northwind"
Set objSQLServer = CreateObject("SQLDMO.SQLServer")
objSQLServer.LoginSecure = True
objSQLServer.Connect strDBServerName
Set objDB = objSQLServer.Databases(strDBName)
Set colStoredProcedures = objDB.StoredProcedures
For Each objStoredProcedure In colStoredProcedures
WScript.Echo "SP Name: "& objStoredProcedure.Name
Next
Display SQL Server Login Mode
SQL Server 2000 : Yes
SQLDMOSecurity_Integrated= 1
SQLDMOSecurity_Mixed = 2
SQLDMOSecurity_Normal = 0
SQLDMOSecurity_Unknown = 9
strDBServerName = "."
Set objSQLServer = CreateObject("SQLDMO.SQLServer")
Select Case objSQLServer.ServerLoginMode(strDBServerName)
Case SQLDMOSecurity_Integrated
WScript.Echo "Login Mode: Allow Windows Authentication only."
Case SQLDMOSecurity_Mixed
WScript.Echo "Login Mode: Allow Windows Authentication or SQL Server Authentication."
Case SQLDMOSecurity_Normal
WScript.Echo "Login Mode: Allow SQL Server Authentication only."
Case SQLDMOSecurity_Unknown
WScript.Echo "Login Mode: Security type unknown."
End Select
Display SQL Server Version Information
SQL Server 2000 : Yes
strDBServerName = "."
Set objSQLServer = CreateObject("SQLDMO.SQLServer")
objSQLServer.LoginSecure = True
objSQLServer.Connect strDBServerName
WScript.Echo "SQL Major Version: " & objSQLServer.VersionMajor
WScript.Echo "SQL Minor Version: " & objSQLServer.VersionMinor
WScript.Echo "SQL Version String: " & objSQLServer.VersionString
Start SQL Server
SQL Server 2000 : Yes
strDBServerName = "."
Set objSQLServer = CreateObject("SQLDMO.SQLServer")
objSQLServer.LoginSecure = True
objSQLServer.Name = strDBServerName
objSQLServer.Start False
Stop SQL Server
SQL Server 2000 : Yes
strDBServerName = "."
Set objSQLServer = CreateObject("SQLDMO.SQLServer")
objSQLServer.LoginSecure = True
objSQLServer.Connect strDBServerName
objSQLServer.Shutdown
List all the Databases on a SQL Server
SQL Server 2000 : Yes
strDBServerName = "."
Set objSQLServer = CreateObject("SQLDMO.SQLServer")
objSQLServer.LoginSecure = True
objSQLServer.Connect strDBServerName
Set colDatabases = objSQLServer.Databases
For Each objDatabase In colDatabases
WScript.Echo objDatabase.Name
Next
Create a Dfs Node
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set objDfsNode = objWMIService.Get("Win32_DfsNode")
errReturn = objDfsNode.Create _
("\\atl-dc-02\Scripts","\\atl-dc-02","Scripts", _
"New Dfs node for shared scripts.")
List Dfs Nodes
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colDfsNodes = objWMIService.ExecQuery _
("Select * from Win32_DFSNode")
For each objDfsNode in colDfsNodes
Wscript.Echo "Caption: " & objDfsNode.Caption
Wscript.Echo "Description: " & objDfsNode.Description
Wscript.Echo "Install Date: " & objDfsNode.InstallDate
Wscript.Echo "Name: " & objDfsNode.Name
Wscript.Echo "Root: " & objDfsNode.Root
Wscript.Echo "State: " & objDfsNode.State
Wscript.Echo "Status: " & objDfsNode.Status
Wscript.Echo "Timeout: " & objDfsNode.Timeout
Next
List Dfs Targets
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colDfsTargets = objWMIService.ExecQuery _
("Select * from Win32_DFSTarget")
For each objDfsTarget in colDfsTargets
Wscript.Echo "Caption: " & objDfsTarget.Caption
Wscript.Echo "Description: " & objDfsTarget.Description
Wscript.Echo "Install Date: " & objDfsTarget.InstallDate
Wscript.Echo "Link Name: " & objDfsTarget.LinkName
Wscript.Echo "Name: " & objDfsTarget.Name
Wscript.Echo "Server Name: " & objDfsTarget.ServerName
Wscript.Echo "Share Name: " & objDfsTarget.ShareName
Wscript.Echo "State: " & objDfsTarget.State
Wscript.Echo "Status: " & objDfsTarget.Status
Next
Add a Volume Mount Point
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colItems = objWMIService.ExecQuery _
("Select * From Win32_Volume Where Name = 'D:\\'")
For Each objItem in colItems
objItem.AddMountPoint("W:\\Scripts\\")
Next
Analyze Volume Defragmentation
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colVolumes = objWMIService.ExecQuery("Select * from Win32_Volume")
For Each objVolume in colVolumes
errResult = objVolume.DefragAnalysis(blnRecommended, objReport)
If errResult = 0 then
Wscript.Echo "Average file size: " & objReport.AverageFileSize
Wscript.Echo "Average fragments per file: " & _
objReport.AverageFragmentsPerFile
Wscript.Echo "Cluster size: " & objReport.ClusterSize
Wscript.Echo "Excess folder fragments: " & _
objReport.ExcessFolderFragments
Wscript.Echo "File percent fragmentation: " & _
objReport.FilePercentFragmentation
Wscript.Echo "Fragmented folders: " & objReport.FragmentedFolders
Wscript.Echo "Free soace: " & objReport.FreeSpace
Wscript.Echo "Free space percent: " & objReport.FreeSpacePercent
Wscript.Echo "Free space percent fragmentation: " & _
objReport.FreeSpacePercentFragmentation
Wscript.Echo "MFT percent in use: " & objReport.MFTPercentInUse
Wscript.Echo "MFT record count: " & objReport.MFTRecordCount
Wscript.Echo "Page file size: " & objReport.PageFileSize
Wscript.Echo "Total excess fragments: " & _
objReport.TotalExcessFragments
Wscript.Echo "Total files: " & objReport.TotalFiles
Wscript.Echo "Total folders: " & objReport.TotalFolders
Wscript.Echo "Total fragmented files: " & _
objReport.TotalFragmentedFiles
Wscript.Echo "Total MFT fragments: " & objReport.TotalMFTFragments
Wscript.Echo "Total MFT size: " & objReport.TotalMFTSize
Wscript.Echo "Total page file fragments: " & _
objReport.TotalPageFileFragments
Wscript.Echo "Total percent fragmentation: " & _
objReport.TotalPercentFragmentation
Wscript.Echo "Used space: " & objReport.UsedSpace
Wscript.Echo "Volume name: " & objReport.VolumeName
Wscript.Echo "Volume size: " & objReport.VolumeSize
If blnRecommended = True Then
Wscript.Echo "This volume should be defragged."
Else
Wscript.Echo "This volume does not need to be defragged."
End If
Wscript.Echo
End If
Next
Associate Disk Partitions with Physical Disk Drives
strComputer = "."
Set wmiServices = GetObject _
("winmgmts:{impersonationLevel=Impersonate}!//" & strComputer)
Set wmiDiskDrives = wmiServices.ExecQuery _
("SELECT Caption, DeviceID FROM Win32_DiskDrive")
For Each wmiDiskDrive In wmiDiskDrives
WScript.Echo wmiDiskDrive.Caption & " (" & wmiDiskDrive.DeviceID & ")"
strEscapedDeviceID = Replace _
(wmiDiskDrive.DeviceID, "\", "\\", 1, -1, vbTextCompare)
Set wmiDiskPartitions = wmiServices.ExecQuery _
("ASSOCIATORS OF {Win32_DiskDrive.DeviceID=""" & _
strEscapedDeviceID & """} WHERE AssocClass = " & _
"Win32_DiskDriveToDiskPartition")
For Each wmiDiskPartition In wmiDiskPartitions
WScript.Echo vbTab & wmiDiskPartition.DeviceID
Set wmiLogicalDisks = wmiServices.ExecQuery _
("ASSOCIATORS OF {Win32_DiskPartition.DeviceID=""" & _
wmiDiskPartition.DeviceID & """} WHERE AssocClass = " & _
"Win32_LogicalDiskToPartition")
For Each wmiLogicalDisk In wmiLogicalDisks
WScript.Echo vbTab & vbTab & wmiLogicalDisk.DeviceID
Next
Next
Next
Bind to a Specific Disk Drive
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objDrive = objFSO.GetDrive("C:")
Wscript.Echo "Available space: " & objDrive.AvailableSpace
Change the Drive Letter of a Volume
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colVolumes = objWMIService.ExecQuery _
("Select * from Win32_Volume Where Name = 'D:\\'")
For Each objVolume in colVolumes
objVolume.DriveLetter = "Q:"
objVolume.Put_
Next
Defragment a Volume
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colVolumes = objWMIService.ExecQuery _
("Select * from Win32_Volume Where Name = 'D:\\'")
For Each objVolume in colVolumes
errResult = objVolume.Defrag()
Next
Dismount a Volume
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colItems = objWMIService.ExecQuery _
("Select * From Win32_Volume Where Name = 'E:\\'")
For Each objItem in colItems
objItem.Dismount(True, True)
Next
Format a Volume
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colVolumes = objWMIService.ExecQuery _
("Select * from Win32_Volume Where Name = 'D:\\'")
For Each objVolume in colVolumes
errResult = objVolume.Format("NTFS")
Next
List All Disk Drives
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set colDrives = objFSO.Drives
For Each objDrive in colDrives
Wscript.Echo "Drive letter: " & objDrive.DriveLetter
Next
List Available Disk Space
Const HARD_DISK = 3
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colDisks = objWMIService.ExecQuery _
("Select * from Win32_LogicalDisk Where DriveType = " & HARD_DISK & "")
For Each objDisk in colDisks
Wscript.Echo "DeviceID: "& vbTab &objDisk.DeviceID
Wscript.Echo "Free Disk Space: "& vbTab & objDisk.FreeSpace
Next
List CD-ROM Properties
On Error Resume Next
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colItems = objWMIService.ExecQuery("Select * from Win32_CDROMDrive")
For Each objItem in colItems
Wscript.Echo "Availability: " & objItem.Availability
For Each strCapability in objItem.Capabilities
Wscript.Echo "Capability: "& strCapability
Next
Wscript.Echo "Caption: " & objItem.Caption
Wscript.Echo "Description: " & objItem.Description
Wscript.Echo "Device ID: " & objItem.DeviceID
Wscript.Echo "Drive: " & objItem.Drive
Wscript.Echo "Manufacturer: " & objItem.Manufacturer
Wscript.Echo "Media Loaded: " & objItem.MediaLoaded
Wscript.Echo "Media Type: " & objItem.MediaType
Wscript.Echo "Name: " & objItem.Name
Wscript.Echo "PNP Device ID: " & objItem.PNPDeviceID
Wscript.Echo "SCSI Bus: " & objItem.SCSIBus
Wscript.Echo "SCSI Logical Unit: " & objItem.SCSILogicalUnit
Wscript.Echo "SCSI Port: " & objItem.SCSIPort
Wscript.Echo "SCSI Target ID: " & objItem.SCSITargetId
Next
List Disk Drive Properties Using FSO
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set colDrives = objFSO.Drives
For Each objDrive in colDrives
Wscript.Echo "Available space: " & objDrive.AvailableSpace
Wscript.Echo "Drive letter: " & objDrive.DriveLetter
Wscript.Echo "Drive type: " & objDrive.DriveType
Wscript.Echo "File system: " & objDrive.FileSystem
Wscript.Echo "Free space: " & objDrive.FreeSpace
Wscript.Echo "Is ready: " & objDrive.IsReady
Wscript.Echo "Path: " & objDrive.Path
Wscript.Echo "Root folder: " & objDrive.RootFolder
Wscript.Echo "Serial number: " & objDrive.SerialNumber
Wscript.Echo "Share name: " & objDrive.ShareName
Wscript.Echo "Total size: " & objDrive.TotalSize
Wscript.Echo "Volume name: " & objDrive.VolumeName
Next
List Disk Partition Properties
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colDiskPartitions = objWMIService.ExecQuery _
("Select * from Win32_DiskPartition")
For each objPartition in colDiskPartitions
Wscript.Echo "Block Size: " & objPartition.BlockSize
Wscript.Echo "Bootable: " & objPartition.Bootable
Wscript.Echo "Boot Partition: " & objPartition.BootPartition
Wscript.Echo "Description: " & objPartition.Description
Wscript.Echo "Device ID: " & objPartition.DeviceID
Wscript.Echo "Disk Index: " & objPartition.DiskIndex
Wscript.Echo "Index: " & objPartition.Index
Wscript.Echo "Name: " & objPartition.Name
Wscript.Echo "Number Of Blocks: " & _
objPartition.NumberOfBlocks
Wscript.Echo "Primary Partition: " & _
objPartition.PrimaryPartition
Wscript.Echo "Size: " & objPartition.Size
Wscript.Echo "Starting Offset: " & _
objPartition.StartingOffset
Wscript.Echo "Type: " & objPartition.Type
Next
List Disk Space by User on the Local Computer
Set colDiskQuotas = CreateObject("Microsoft.DiskQuota.1")
colDiskQuotas.Initialize "C:\", True
For Each objUser in colDiskQuotas
Wscript.Echo "Logon name: " & objUser.LogonName
Wscript.Echo "Quota used: " & objUser.QuotaUsed
Next
List Drive Types
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colDisks = objWMIService.ExecQuery _
("Select * from Win32_LogicalDisk")
For Each objDisk in colDisks
Wscript.Echo "DeviceID: "& objDisk.DeviceID
Select Case objDisk.DriveType
Case 1
Wscript.Echo "No root directory. Drive type could not be " _
& "determined."
Case 2
Wscript.Echo "DriveType: "& "Removable drive."
Case 3
Wscript.Echo "DriveType: "& "Local hard disk."
Case 4
Wscript.Echo "DriveType: "& "Network disk."
Case 5
Wscript.Echo "DriveType: "& "Compact disk."
Case 6
Wscript.Echo "DriveType: "& "RAM disk."
Case Else
Wscript.Echo "Drive type could not be determined."
End Select
Next
List Floppy Drive Information
On Error Resume Next
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colItems = objWMIService.ExecQuery("Select * from Win32_FloppyDrive")
For Each objItem in colItems
Wscript.Echo "Availability: " & objItem.Availability
Wscript.Echo "Configuration Manager Error Code: " & _
objItem.ConfigManagerErrorCode
Wscript.Echo "Configuration Manager User Configuration: " & _
objItem.ConfigManagerUserConfig
Wscript.Echo "Device ID: " & objItem.DeviceID
Wscript.Echo "Manufacturer: " & objItem.Manufacturer
Wscript.Echo "Name: " & objItem.Name
Wscript.Echo "PNP Device ID: " & objItem.PNPDeviceID
Wscript.Echo
Next
List Logical Disk Drive Properties
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colDisks = objWMIService.ExecQuery _
("Select * from Win32_LogicalDisk")
For each objDisk in colDisks
Wscript.Echo "Compressed: " & objDisk.Compressed
Wscript.Echo "Description: " & objDisk.Description
Wscript.Echo "DeviceID: " & objDisk.DeviceID
Wscript.Echo "DriveType: " & objDisk.DriveType
Wscript.Echo "FileSystem: " & objDisk.FileSystem
Wscript.Echo "FreeSpace: " & objDisk.FreeSpace
Wscript.Echo "MediaType: " & objDisk.MediaType
Wscript.Echo "Name: " & objDisk.Name
Wscript.Echo "QuotasDisabled: " & objDisk.QuotasDisabled
Wscript.Echo "QuotasIncomplete: " & objDisk.QuotasIncomplete
Wscript.Echo "QuotasRebuilding: " & objDisk.QuotasRebuilding
Wscript.Echo "Size: " & objDisk.Size
Wscript.Echo "SupportsDiskQuotas: " & _
objDisk.SupportsDiskQuotas
Wscript.Echo "SupportsFileBasedCompression: " & _
objDisk.SupportsFileBasedCompression
Wscript.Echo "SystemName: " & objDisk.SystemName
Wscript.Echo "VolumeDirty: " & objDisk.VolumeDirty
Wscript.Echo "VolumeName: " & objDisk.VolumeName
Wscript.Echo "VolumeSerialNumber: " & _
objDisk.VolumeSerialNumber
Next
List Mapped Network Drives
On Error Resume Next
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colItems = objWMIService.ExecQuery("Select * from Win32_MappedLogicalDisk")
For Each objItem in colItems
Wscript.Echo "Compressed: " & objItem.Compressed
Wscript.Echo "Description: " & objItem.Description
Wscript.Echo "Device ID: " & objItem.DeviceID
Wscript.Echo "File System: " & objItem.FileSystem
Wscript.Echo "Free Space: " & objItem.FreeSpace
Wscript.Echo "Maximum Component Length: " & objItem.MaximumComponentLength
Wscript.Echo "Name: " & objItem.Name
Wscript.Echo "Provider Name: " & objItem.ProviderName
Wscript.Echo "Session ID: " & objItem.SessionID
Wscript.Echo "Size: " & objItem.Size
Wscript.Echo "Supports Disk Quotas: " & objItem.SupportsDiskQuotas
Wscript.Echo "Supports File-Based Compression: " & _
objItem.SupportsFileBasedCompression
Wscript.Echo "Volume Name: " & objItem.VolumeName
Wscript.Echo "Volume Serial Number: " & objItem.VolumeSerialNumber
Wscript.Echo
Next
List Physical Disk Properties
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colDiskDrives = objWMIService.ExecQuery _
("Select * from Win32_DiskDrive")
For each objDiskDrive in colDiskDrives
Wscript.Echo "Bytes Per Sector: " & vbTab &_
objDiskDrive.BytesPerSector
For i = Lbound(objDiskDrive.Capabilities) to _
Ubound(objDiskDrive.Capabilities)
Wscript.Echo "Capabilities: " & vbTab &_
objDiskDrive.Capabilities(i)
Next
Wscript.Echo "Caption: " & vbTab &objDiskDrive.Caption
Wscript.Echo "Device ID: " & vbTab &objDiskDrive.DeviceID
Wscript.Echo "Index: " & vbTab &objDiskDrive.Index
Wscript.Echo "Interface Type: " & vbTab & objDiskDrive.InterfaceType
Wscript.Echo "Manufacturer: " & vbTab & objDiskDrive.Manufacturer
Wscript.Echo "Media Loaded: " & vbTab& objDiskDrive.MediaLoaded
Wscript.Echo "Media Type: " & vbTab &objDiskDrive.MediaType
Wscript.Echo "Model: " & vbTab &objDiskDrive.Model
Wscript.Echo "Name: " & vbTab &objDiskDrive.Name
Wscript.Echo "Partitions: " & vbTab & objDiskDrive.Partitions
Wscript.Echo "PNP DeviceID: " & vbTab &objDiskDrive.PNPDeviceID
Wscript.Echo "SCSI Bus: " & vbTab &objDiskDrive.SCSIBus
Wscript.Echo "SCSI Logical Unit: " & vbTab &_
objDiskDrive.SCSILogicalUnit
Wscript.Echo "SCSI Port: " & vbTab &objDiskDrive.SCSIPort
Wscript.Echo "SCSI TargetId: " & vbTab &objDiskDrive.SCSITargetId
Wscript.Echo "Sectors Per Track: " & vbTab &_
objDiskDrive.SectorsPerTrack
Wscript.Echo "Signature: " & vbTab &objDiskDrive.Signature
Wscript.Echo "Size: " & vbTab &objDiskDrive.Size
Wscript.Echo "Status: " & vbTab &objDiskDrive.Status
Wscript.Echo "Total Cylinders: " & vbTab &_
objDiskDrive.TotalCylinders
Wscript.Echo "Total Heads: " & vbTab &objDiskDrive.TotalHeads
Wscript.Echo "Total Sectors: " & vbTab &objDiskDrive.TotalSectors
Wscript.Echo "Total Tracks: " & vbTab &objDiskDrive.TotalTracks
Wscript.Echo "Tracks Per Cylinder: " & vbTab &_
objDiskDrive.TracksPerCylinder
Next
List Volume Mount Points
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colItems = objWMIService.ExecQuery _
("SELECT * FROM Win32_MountPoint")
For Each objItem In colItems
WScript.Echo "Directory: " & objItem.Directory
WScript.Echo "Volume: " & objItem.Volume
WScript.Echo
Next
List Volume Properties
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colItems = objWMIService.ExecQuery("Select * from Win32_Volume")
For Each objItem In colItems
WScript.Echo "Automount: " & objItem.Automount
WScript.Echo "Block Size: " & objItem.BlockSize
WScript.Echo "Capacity: " & objItem.Capacity
WScript.Echo "Caption: " & objItem.Caption
WScript.Echo "Compressed: " & objItem.Compressed
WScript.Echo "Device ID: " & objItem.DeviceID
WScript.Echo "Dirty Bit Set: " & objItem.DirtyBitSet
WScript.Echo "Drive Letter: " & objItem.DriveLetter
WScript.Echo "Drive Type: " & objItem.DriveType
WScript.Echo "File System: " & objItem.FileSystem
WScript.Echo "Free Space: " & objItem.FreeSpace
WScript.Echo "Indexing Enabled: " & objItem.IndexingEnabled
WScript.Echo "Label: " & objItem.Label
WScript.Echo "Maximum File Name Length: " & objItem.MaximumFileNameLength
WScript.Echo "Name: " & objItem.Name
WScript.Echo "Quotas Enabled: " & objItem.QuotasEnabled
WScript.Echo "Quotas Incomplete: " & objItem.QuotasIncomplete
WScript.Echo "Quotas Rebuilding: " & objItem.QuotasRebuilding
WScript.Echo "Serial Number: " & objItem.SerialNumber
WScript.Echo "Supports Disk Quotas: " & objItem.SupportsDiskQuotas
WScript.Echo "Supports File-Based Compression: " & _
objItem.SupportsFileBasedCompression
WScript.Echo
Next
Modify the AutoChk Timeout Value
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colAutoChkSettings = objWMIService.ExecQuery _
("Select * from Win32_AutochkSetting")
For Each objAutoChkSetting in colAutoChkSettings
objAutoChkSetting.UserInputDelay = 30
objAutoChkSetting.Put_
Next
Mount a Volume
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colItems = objWMIService.ExecQuery _
("Select * From Win32_Volume Where Name = 'Z:\\'")
For Each objItem in colItems
objItem.Mount()
Next
Prevent AutoChk From Running
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set objDisk = objWMIService.Get("Win32_LogicalDisk")
errReturn = objDisk.ExcludeFromAutoChk(Array("C:"))
Rename a Volume
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colDrives = objWMIService.ExecQuery _
("Select * from Win32_LogicalDisk where DeviceID = 'C:'")
For Each objDrive in colDrives
objDrive.VolumeName = "Finance Volume"
objDrive.Put_
Next
Run ChkDsk
Const FIX_ERRORS = True
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set objDisk = objWMIService.Get("Win32_LogicalDisk.DeviceID='D:'")
errReturn = objDisk.ChkDsk(FIX_ERRORS)
Schedule AutoChk
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set objDisk = objWMIService.Get("Win32_LogicalDisk")
errReturn = objDisk.ScheduleAutoChk(Array("C:"))
Verify ChkDsk Volume Status
Const LOCAL_HARD_DISK = 3
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colDisks = objWMIService.ExecQuery _
("Select * from Win32_LogicalDisk Where DriveType = LOCAL_HARD_DISK ")
For Each objDisk in colDisks
Wscript.Echo "Device ID: "& vbTab &objDisk.DeviceID
Wscript.Echo "Drive Type: "& vbTab & objDisk.VolumeDirty
Next
Verify that All Drives are Ready
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set colDrives = objFSO.Drives
For Each objDrive in colDrives
If objDrive.IsReady = True Then
Wscript.Echo "Drive letter: " & objDrive.DriveLetter
Wscript.Echo "Free space: " & objDrive.FreeSpace
Else
Wscript.Echo "Drive letter: " & objDrive.DriveLetter
End If
Next
Add a Disk Quota Entry on the Local Computer
Set colDiskQuotas = CreateObject("Microsoft.DiskQuota.1")
colDiskQuotas.Initialize "C:\", True
Set objUser = colDiskQuotas.AddUser("kenmyer")
Set objUser = colDiskQuotas.FindUser("kenmyer")
objUser.QuotaLimit = 50000000
Create a New Quota Entry
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2"
Set objAccount = objWMIService.Get _
("Win32_Account.Domain='fabrikam',Name='bob'")
Set objDisk = objWMIService.Get _
("Win32_LogicalDisk.DeviceID='C:'")
Set objQuota = objWMIService.Get _
("Win32_DiskQuota").SpawnInstance_
objQuota.QuotaVolume = objDisk.Path_.RelPath
objQuota.User = objAccount.Path_.RelPath
objQuota.Limit = 10485760
objQuota.WarningLimit = 8388608
objQuota.Put_
Delete a Disk Quota Entry on the Local Computer
Set colDiskQuotas = CreateObject("Microsoft.DiskQuota.1")
colDiskQuotas.Initialize "C:\", True
set objUser = colDiskQuotas.FindUser("kenmyer")
colDiskQuotas.DeleteUser(objUser)
Delete an Existing Quota Entry
strDrive = "C:"
strDomain = "fabrikam"
strUser = "bob"
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set objQuota = objWMIService.Get _
("Win32_DiskQuota.QuotaVolume='Win32_LogicalDisk.DeviceID=""" " & _
" & strDrive & """
',User='Win32_Account.Domain=""" " & _
" & strDomain & """,Name=""" & strUser & """
'")
objQuota.Delete_
Enable Disk Quotas
Const ENFORCE_QUOTAS = 1
StrComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colDisks = objWMIService.ExecQuery _
("Select * from Win32_QuotaSetting Where VolumePath = 'C:\\'")
For Each objDisk in colDisks
objDisk.State = ENFORCE_QUOTAS
objDisk.Put_
Next
Enable Disk Quotas on the Local Computer
Const ENABLE_QUOTAS = 2
Set colDiskQuotas = CreateObject("Microsoft.DiskQuota.1")
colDiskQuotas.Initialize "C:\", True
colDiskQuotas.QuotaState = ENABLE_QUOTAS
List a Quota Entry
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set objQuota = objWMIService.Get _
("Win32_DiskQuota.QuotaVolume='Win32_LogicalDisk.DeviceID=""C:""'," & _
"User='Win32_Account.Domain=""fabrikam"",Name=""bob""'")
Wscript.Echo objQuota.Limit
List Disk Quota Entries
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colDiskQuotas = objWMIService.ExecQuery("Select * from Win32_DiskQuota")
For each objQuota in colDiskQuotas
Wscript.Echo "Disk Space Used: " & vbTab &objQuota.DiskSpaceUsed
Wscript.Echo "Limit: " & vbTab &objQuota.Limit
Wscript.Echo "Quota Volume: " & vbTab &objQuota.QuotaVolume
Wscript.Echo "Status: " & vbTab &objQuota.Status
Wscript.Echo "User: " & vbTab &objQuota.User
Wscript.Echo "Warning Limit: " & vbTab &objQuota.WarningLimit
Next
List Disk Quota Entries on the Local Computer
Set colDiskQuotas = CreateObject("Microsoft.DiskQuota.1")
colDiskQuotas.Initialize "C:\", True
For Each objUser in colDiskQuotas
Wscript.Echo "Logon name: " & objUser.LogonName
Wscript.Echo "Quota limit: " & objUser.QuotaLimit
Wscript.Echo "Quota threshold: " & objUser.QuotaThreshold
Wscript.Echo "Quota used: " & objUser.QuotaUsed
Next
List Disk Quota Settings
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colQuotaSettings = objWMIService.ExecQuery _
("Select * from Win32_QuotaSetting")
For Each objQuotaSetting in colQuotaSettings
Wscript.Echo "Default Limit: " & objQuotaSetting.DefaultLimit
Wscript.Echo "Default Warning Limit: " &_
objQuotaSetting.DefaultWarningLimit
Wscript.Echo "Exceeded Notification: " &_
objQuotaSetting.ExceededNotification
Wscript.Echo "State: " & objQuotaSetting.State
Wscript.Echo "Volume Path: " & objQuotaSetting.VolumePath
Wscript.Echo "Warning Exceeded Notification: " & _
objQuotaSetting.WarningExceededNotification
Next
List Disk Quota Settings on the Local Computer
Set colDiskQuotas = CreateObject("Microsoft.DiskQuota.1")
colDiskQuotas.Initialize "C:\", True
If colDiskQuotas.QuotaState = 2 Then
Wscript.Echo "Quota state: Enabled and enforced"
ElseIf colDiskQuotas.QuotaState = 1 Then
Wscript.Echo "Quota state: Enabled but not enforced"
Else
Wscript.Echo "Quota state: Disabled"
End If
Wscript.Echo "Default quota limit: " & colDiskQuotas.DefaultQuotaLimit
Wscript.Echo "Default warning limit: " & _
colDiskQuotas.DefaultQuotaThreshold
Wscript.Echo "Record quota violations in event log: " & _
colDiskQuotas.LogQuotaLimit
Wscript.Echo "Record warnings in event log: " & _
colDiskQuotas.LogQuotaThreshold
List Disk Space by User Using Disk Quotas
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colQuotas = objWMIService.ExecQuery("Select * from Win32_DiskQuota")
For Each objQuota in colQuotas
Wscript.Echo "Volume: "& objQuota.QuotaVolume
Wscript.Echo "User: "& objQuota.User
Wscript.Echo "Disk Space Used: "& objQuota.DiskSpaceUsed
Next
Locate A Quota Entry
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set objQuota = objWMIService.Get _
("Win32_DiskQuota.QuotaVolume='Win32_LogicalDisk.DeviceID=""C:""'," & _
"User='Win32_Account.Domain=""fabrikam"",Name=""bob""'")
Wscript.Echo objQuota.Limit
Modify a Disk Quota Entry on the Local Computer
Set colDiskQuotas = CreateObject("Microsoft.DiskQuota.1")
colDiskQuotas.Initialize "C:\", True
set objUser = colDiskQuotas.FindUser("kenmyer")
objUser.QuotaThreshold = 90000000
objUser.QuotaLimit = 100000000
Modify an Existing Quota Entry
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set objAccount = objWMIService.Get _
("Win32_Account.Domain='fabrikam',Name='bob'")
Set objDisk = objWMIService.Get("Win32_LogicalDisk.DeviceID='C:'")
Set objQuota = objWMIService.Get _
("Win32_DiskQuota.QuotaVolume= " & _
"'Win32_LogicalDisk.DeviceID=""C:""'," & _
"User='Win32_Account.Domain=""fabrikam"",Name=""bob""'")
objQuota.Limit = 11111111
objQuota.Put_
Modify Disk Quota Settings
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colQuotaSettings = objWMIService.ExecQuery _
("Select * from Win32_QuotaSetting")
For Each objQuotaSetting in colQuotaSettings
objQuotaSetting.DefaultLimit = 10000000
objQuotaSetting.DefaultWarningLimit = 9000000
objQuotaSetting.Put_
Next
List NTFS Properties
On Error Resume Next
Set objShell = WScript.CreateObject("WScript.Shell")
strRegKey =objShell.RegRead _
("HKLM\System\CurrentControlSet\Control\FileSystem\" _
& "NtfsDisable8dot3NameCreation")
If IsNull(strRegKey) Then
Wscript.Echo "No value set for disabling 8.3 file name creation."
ElseIf strRegKey = 1 Then
WScript.Echo "No 8.3 file names will be created for new files."
ElseIf strRegKey = 0 Then
Wscript.Echo "8.3 file names will be created for new files."
End If
strRegKey = Null
strRegKey =objShell.RegRead _
("HKLM\System\CurrentControlSet\Control\FileSystem\" _
& "NtfsAllowExtendedCharacterIn8Dot3Name")
If IsNull(strRegKey) Then
Wscript.Echo "No value set for allowing extended characters in " _
& " 8.3 file names."
ElseIf strRegKey = 1 Then
WScript.Echo "Extended characters are permitted in 8.3 file names."
ElseIf strRegKey = 0 Then
Wscript.Echo "Extended characters not permitted in 8.3 file names."
End If
strRegKey = Null
strRegKey =objShell.RegRead _
("HKLM\System\CurrentControlSet\Control\FileSystem\" _
& "NtfsMftZoneReservation")
If IsNull(strRegKey) Then
Wscript.Echo "No value set for reserving the MFT zone."
ElseIf strRegKey = 1 Then
WScript.Echo _
"One-eighth of the disk has been reserved for the MFT zone."
ElseIf strRegKey = 2 Then
Wscript.Echo "One-fourth of the disk reserved for the MFT zone."
ElseIf strRegKey = 3 Then
Wscript.Echo "Three-eighths of the disk reserved for the MFT zone."
ElseIf strRegKey = 4 Then
Wscript.Echo "One half of the disk reserved for the MFT zone."
End If
strRegKey = Null
strRegKey =objShell.RegRead _
("HKLM\System\CurrentControlSet\Control\FileSystem\" _
& "NtfsDisableLastAccessUpdate")
If IsNull(strRegKey) Then
Wscript.Echo "No value set for disabling the last access update " _
& "for files and folder."
ElseIf strRegKey = 1 Then
WScript.Echo "The last access timestamp will not be updated on files " _
& "and folders."
ElseIf strRegKey = 0 Then
Wscript.Echo "The last access timestamp updated on files and " _
& "folders."
End If
strRegKey = Null
strRegKey =objShell.RegRead _
("HKLM\System\CurrentControlSet\Control\FileSystem\Win31FileSystem")
If IsNull(strRegKey) Then
Wscript.Echo "No value set for using long file names and " _
& "timestamps."
ElseIf strRegKey = 1 Then
WScript.Echo "Long file names and extended timestamps are used."
ElseIf strRegKey = 0 Then
Wscript.Echo "Long file names and extended timestamps are not used."
End If
List the File System Type
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colDisks = objWMIService.ExecQuery("Select * from Win32_LogicalDisk")
For Each objDisk in colDisks
Wscript.Echo "Device ID: "& vbTab &objDisk.DeviceID
Wscript.Echo "File System: "& vbTab & objDisk.FileSystem
Next
Modify File System Properties
Set objShell = WScript.CreateObject("WScript.Shell")
strRegKey =objShell.RegWrite _
("HKLM\System\CurrentControlSet\Control\FileSystem\" _
& "NtfsDisableLastAccessUpdate" , 1, "REG_DWORD")
Monitor NTFS File Cache Performance
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
set objRefresher = CreateObject("WbemScripting.SWbemRefresher")
Set colCache = objRefresher.AddEnum _
(objWMIService, "win32_PerfFormattedData_PerfOS_Cache").ObjectSet
objRefresher.Refresh
For i = 1 to 100
For Each objCache in colCache
Wscript.Echo "Async Copy Reads Per Second" & _
objCache.AsyncCopyReadsPerSec
Wscript.Echo "Async Data Maps Per Second" & _
objCache.AsyncDataMapsPerSec
Wscript.Echo "AsyncFastReadsPerSecond" & _
objCache.AsyncFastReadsPerSec
Wscript.Echo "Async MDL Reads Per Second" & _
objCache.AsyncMDLReadsPerSec
Wscript.Echo "Async Pin Reads Per Second" & _
objCache.AsyncPinReadsPerSec
Wscript.Echo "Caption" & vbTab & objCache.Caption
Wscript.Echo "Copy Read Hits Percent " & _
objCache.CopyReadHitsPercent
Wscript.Echo "Copy Reads Per Second" & _
objCache.CopyReadsPerSec
Wscript.Echo "Data Flushes Per Second" & _
objCache.DataFlushesPerSec
Wscript.Echo "Data Flush Pages Per Second" & _
objCache.DataFlushPagesPerSec
Wscript.Echo "Data Map Hits Percent " & _
objCache.DataMapHitsPercent
Wscript.Echo "Data Map Pins Per Second" & _
objCache.DataMapPinsPerSec
Wscript.Echo "Data Maps Per Second" & _
objCache.DataMapsPerSec
Wscript.Echo "Description" & objCache.Description
Wscript.Echo "Fast Read Not Possibles Per Second" & _
objCache.FastReadNotPossiblesPerSec
Wscript.Echo "Fast Read Resource Misses Per Second" & _
objCache.FastReadResourceMissesPerSec
Wscript.Echo "Fast Reads Per Second" & _
objCache.FastReadsPerSec
Wscript.Echo "Lazy Write Flushes Per Second" & _
objCache.LazyWriteFlushesPerSec
Wscript.Echo "Lazy Write Pages Per Second" & _
objCache.LazyWritePagesPerSec
Wscript.Echo "MDL Read Hits Percent " & _
objCache.MDLReadHitsPercent
Wscript.Echo "MDL Reads Per Second" & _
objCache.MDLReadsPerSec
Wscript.Echo "Name" & vbTab & objCache.Name
Wscript.Echo "Pin Read Hits Percent" & _
objCache.PinReadHitsPercent
Wscript.Echo "Pin Reads Per Second" & _
objCache.PinReadsPerSec
Wscript.Echo "Read Aheads Per Second" & _
objCache.ReadAheadsPerSec
Wscript.Echo "Sync Copy Reads Per Second" & _
objCache.SyncCopyReadsPerSec
Wscript.Echo "Sync Data Maps Per Second" & _
objCache.SyncDataMapsPerSec
Wscript.Echo "Sync Fast Reads Per Second" & _
objCache.SyncFastReadsPerSec
Wscript.Echo "Sync MDL Reads Per Second" & _
objCache.SyncMDLReadsPerSec
Wscript.Echo "Sync Pin Reads Per Second" & _
objCache.SyncPinReadsPerSec
Wscript.Sleep 2000
objRefresher.Refresh
Next
Next
Copy a File
Const OverwriteExisting = TRUE
Set objFSO = CreateObject("Scripting.FileSystemObject")
objFSO.CopyFile "C:\FSO\ScriptLog.txt" , "D:\Archive\", OverwriteExisting
Copy a Set of Files
Const OverwriteExisting = TRUE
Set objFSO = CreateObject("Scripting.FileSystemObject")
objFSO.CopyFile "C:\FSO\*.txt" , "D:\Archive\" , OverwriteExisting
Create a Custom Document Property
Set objPropertyReader = CreateObject("DSOleFile.PropertyReader")
Set objDocument = objPropertyReader.GetDocumentProperties _
("C:\Scripts\Test.doc")
Set colCustomProperties = objDocument.CustomProperties
errReturn = ColCustomProperties.Add("TestProperty", "Test")
Delete a Custom Document Property
Set objPropertyReader = CreateObject("DSOleFile.PropertyReader")
Set objDocument = objPropertyReader.GetDocumentProperties_
("C:\Scripts\Test.doc")
Set colCustomProperties = objDocument.CustomProperties
For Each strProperty in colCustomProperties
If strProperty.Name = "TestProperty" Then
strProperty.Remove()
End If
Next
Delete a File
Set objFSO = CreateObject("Scripting.FileSystemObject")
objFSO.DeleteFile("C:\FSO\ScriptLog.txt")
Delete All Files in a Folder
Const DeleteReadOnly = TRUE
Set objFSO = CreateObject("Scripting.FileSystemObject")
objFSO.DeleteFile("C:\FSO\*.txt"), DeleteReadOnly
List a Specific Set of Files
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colFiles = objWMIService. _
ExecQuery("Select * from CIM_DataFile where FileSize > 1000000")
For Each objFile in colFiles
Wscript.Echo objFile.Name & " -- " & objFile.FileSize
Next
List All the Files in a Folder
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colFiles = objWMIService. _
ExecQuery("Select * from CIM_DataFile where Path = '\\Scripts\\'")
For Each objFile in colFiles
Wscript.Echo objFile.Name
Next
List All the Files on a Computer
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colFiles = objWMIService.ExecQuery("Select * from CIM_Datafile")
For Each objFile in colFiles
Wscript.Echo objFile.Name
Next
List Detailed Summary Information for a File
Set objShell = CreateObject ("Shell.Application")
Set objFolder = objShell.Namespace ("C:\Scripts")
Set objFSO = CreateObject("Scripting.FileSystemObject")
Dim arrHeaders(13)
For i = 0 to 13
arrHeaders(i) = objFolder.GetDetailsOf (objFolder.Items, i)
Next
For Each strFileName in objFolder.Items
For i = 0 to 13
If i <> 9 then
Wscript.echo arrHeaders(i) _
& ": " & objFolder.GetDetailsOf (strFileName, i)
End If
Next
Wscript.Echo
Next
List File Attributes
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objFile = objFSO.GetFile("C:\FSO\ScriptLog.txt")
If objFile.Attributes AND 0 Then
Wscript.Echo "No attributes set."
End If
If objFile.Attributes AND 1 Then
Wscript.Echo "Read-only."
End If
If objFile.Attributes AND 2 Then
Wscript.Echo "Hidden file."
End If
If objFile.Attributes AND 4 Then
Wscript.Echo "System file."
End If
If objFile.Attributes AND 32 Then
Wscript.Echo "Archive bit set."
End If
If objFile.Attributes AND 64 Then
Wscript.Echo "Link or shortcut."
End If
If objFile.Attributes AND 2048 Then
Wscript.Echo "Compressed file."
End If
List File Properties
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objFile = objFSO.GetFile("c:\windows\system32\scrrun.dll")
Wscript.Echo "Date created: " & objFile.DateCreated
Wscript.Echo "Date last accessed: " & objFile.DateLastAccessed
Wscript.Echo "Date last modified: " & objFile.DateLastModified
Wscript.Echo "Drive: " & objFile.Drive
Wscript.Echo "Name: " & objFile.Name
Wscript.Echo "Parent folder: " & objFile.ParentFolder
Wscript.Echo "Path: " & objFile.Path
Wscript.Echo "Short name: " & objFile.ShortName
Wscript.Echo "Short path: " & objFile.ShortPath
Wscript.Echo "Size: " & objFile.Size
Wscript.Echo "Type: " & objFile.Type
List File Properties
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colFiles = objWMIService.ExecQuery _
("Select * from CIM_Datafile Where name = 'c:\\Scripts\\Adsi.vbs'")
For Each objFile in colFiles
Wscript.Echo "Access mask: " & objFile.AccessMask
Wscript.Echo "Archive: " & objFile.Archive
Wscript.Echo "Compressed: " & objFile.Compressed
Wscript.Echo "Compression method: " & objFile.CompressionMethod
Wscript.Echo "Creation date: " & objFile.CreationDate
Wscript.Echo "Computer system name: " & objFile.CSName
Wscript.Echo "Drive: " & objFile.Drive
Wscript.Echo "8.3 file name: " & objFile.EightDotThreeFileName
Wscript.Echo "Encrypted: " & objFile.Encrypted
Wscript.Echo "Encryption method: " & objFile.EncryptionMethod
Wscript.Echo "Extension: " & objFile.Extension
Wscript.Echo "File name: " & objFile.FileName
Wscript.Echo "File size: " & objFile.FileSize
Wscript.Echo "File type: " & objFile.FileType
Wscript.Echo "File system name: " & objFile.FSName
Wscript.Echo "Hidden: " & objFile.Hidden
Wscript.Echo "Last accessed: " & objFile.LastAccessed
Wscript.Echo "Last modified: " & objFile.LastModified
Wscript.Echo "Manufacturer: " & objFile.Manufacturer
Wscript.Echo "Name: " & objFile.Name
Wscript.Echo "Path: " & objFile.Path
Wscript.Echo "Readable: " & objFile.Readable
Wscript.Echo "System: " & objFile.System
Wscript.Echo "Version: " & objFile.Version
Wscript.Echo "Writeable: " & objFile.Writeable
Next
List File Version Information
Set objFSO = CreateObject("Scripting.FileSystemObject")
Wscript.Echo objFSO.GetFileVersion("c:\windows\system32\scrrun.dll")
List Files Using an Asynchronous Query
Const POPUP_DURATION = 120
Const OK_BUTTON = 0
Set objWSHShell = Wscript.CreateObject("Wscript.Shell")
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set objSink = WScript.CreateObject("WbemScripting.SWbemSink","SINK_")
objWMIService.ExecQueryAsync objSink, "Select * from CIM_DataFile"
objPopup = objWshShell.Popup("Starting file retrieval", _
POPUP_DURATION, "File Retrieval", OK_BUTTON)
Sub SINK_OnObjectReady(objEvent, objAsyncContext)
Wscript.Echo objEvent.Name
End Sub
List Summary Information for a Set of Files
Const FILE_NAME = 0
Set objShell = CreateObject ("Shell.Application")
Set objFolder = objShell.Namespace ("C:\Scripts")
For Each strFileName in objFolder.Items
Wscript.Echo "File name: " & objFolder.GetDetailsOf _
(strFileName, FILE_NAME)
Next
Modify a Custom Document Property
Set objPropertyReader = CreateObject("DSOleFile.PropertyReader")
Set objDocument = objPropertyReader.GetDocumentProperties _
("C:\Scripts\Test.doc")
Set colCustomProperties = objDocument.CustomProperties
For Each strProperty in colCustomProperties
If strProperty.Name = "TestProperty" Then
strProperty.Value = "New value"
End If
Next
Modify Document Property Information
Set objPropertyReader = CreateObject("DSOleFile.PropertyReader")
Set objDocument = objPropertyReader.GetDocumentProperties _
("C:\Scripts\Test.doc")
objDocument.Category = "Scripting Documents"
Modify File Attributes
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objFile = objFSO.GetFile("C:\FSO\TestScript.vbs")
If objFile.Attributes = objFile.Attributes AND 1 Then
objFile.Attributes = objFile.Attributes XOR 1
End If
Modify File Extensions
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set FileList = objWMIService.ExecQuery _
("ASSOCIATORS OF {Win32_Directory.Name='c:\Scripts'} Where " _
& "ResultClass = CIM_DataFile")
For Each objFile In FileList
If objFile.Extension = "log" Then
strNewName = objFile.Drive & objFile.Path & _
objFile.FileName & "." & "txt"
errResult = objFile.Rename(strNewName)
End If
Next
Monitor File Creation
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & _
strComputer & "\root\cimv2")
Set colMonitoredEvents = objWMIService.ExecNotificationQuery _
("SELECT * FROM __InstanceCreationEvent WITHIN 10 WHERE " _
& "Targetinstance ISA 'CIM_DirectoryContainsFile' and " _
& "TargetInstance.GroupComponent= " _
& "'Win32_Directory.Name=""c:\\\\scripts""'")
Do
Set objLatestEvent = colMonitoredEvents.NextEvent
Wscript.Echo objLatestEvent.TargetInstance.PartComponent
Loop
Monitor File Deletion
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & _
strComputer & "\root\cimv2")
Set colMonitoredEvents = objWMIService.ExecNotificationQuery _
("SELECT * FROM __InstanceDeletionEvent WITHIN 10 WHERE " _
& "Targetinstance ISA 'CIM_DirectoryContainsFile' and " _
& "TargetInstance.GroupComponent= " _
& "'Win32_Directory.Name=""c:\\\\scripts""'")
Do
Set objLatestEvent = colMonitoredEvents.NextEvent
Wscript.Echo objLatestEvent.TargetInstance.PartComponent
Loop
Monitor File Modification
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & _
strComputer & "\root\cimv2")
Set colMonitoredEvents = objWMIService.ExecNotificationQuery _
("SELECT * FROM __InstanceModificationEvent WITHIN 10 WHERE " _
& "TargetInstance ISA 'CIM_DataFile' and " _
& "TargetInstance.Name='c:\\scripts\\index.vbs'")
Do
Set objLatestEvent = colMonitoredEvents.NextEvent
Wscript.Echo "File: " & objLatestEvent.TargetInstance.Name
Wscript.Echo "New size: " & objLatestEvent.TargetInstance.FileSize
Wscript.Echo "Old size: " & objLatestEvent.PreviousInstance.FileSize
Loop
Move a File
Set objFSO = CreateObject("Scripting.FileSystemObject")
objFSO.MoveFile "C:\FSO\ScriptLog.log" , "D:\Archive"
Move a Set of Files
Set objFSO = CreateObject("Scripting.FileSystemObject")
objFSO.MoveFile "C:\FSO\*.txt" , "D:\Archive\"
Move Files
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colFiles = objWMIService. _
ExecQuery("Select * from CIM_DataFile where Extension = 'wma'")
For Each objFile in colFiles
strCopy = "C:\Media Archive\" & objFile.FileName _
& "." & objFile.Extension
objFile.Copy(strCopy)
objFile.Delete
Next
Parse a Path Name
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objFile = objFSO.GetFile("ScriptLog.txt")
Wscript.Echo "Absolute path: " & objFSO.GetAbsolutePathName(objFile)
Wscript.Echo "Parent folder: " & objFSO.GetParentFolderName(objFile)
Wscript.Echo "File name: " & objFSO.GetFileName(objFile)
Wscript.Echo "Base name: " & objFSO.GetBaseName(objFile)
Wscript.Echo "Extension name: " & objFSO.GetExtensionName(objFile)
Perform Actions on Files
TargetFolder = "C:\Logs"
Set objShell = CreateObject("Shell.Application")
Set objFolder = objShell.Namespace(TargetFolder)
Set colItems = objFolder.Items
For i = 0 to colItems.Count - 1
colItems.Item(i).InvokeVerbEx("Print")
Next
Rename a File
Set objFSO = CreateObject("Scripting.FileSystemObject")
objFSO.MoveFile "C:\FSO\ScriptLog.txt" , "C:\FSO\BackupLog.txt"
Rename Files
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}\\" & strComputer & "\root\cimv2")
Set colFiles = objWMIService.ExecQuery _
("Select * from Cim_Datafile where Name = " _
& "'c:\\scripts\\toggle_service.vbs'")
For Each objFile in colFiles
errResult = objFile.Rename("c:\scripts\toggle_service.old")
Wscript.Echo errResult
Next
Retrieving Document Property Information
Set objPropertyReader = CreateObject("DSOleFile.PropertyReader")
Set objDocument = objPropertyReader.GetDocumentProperties _
("C:\Scripts\Test.doc")
Wscript.Echo "Application name: " & objDocument.AppName
Wscript.Echo "Author: " & objDocument.Author
Wscript.Echo "Byte count: " & objDocument.ByteCount
Wscript.Echo "Category: " & objDocument.Category
Wscript.Echo "Character count: " & objDocument.CharacterCount
Wscript.Echo "Character count with spaces: " & _
objDocument.CharacterCountWithSpaces
Wscript.Echo "CLSID: " & objDocument.CLSID
Wscript.Echo "Comments: " & objDocument.Comments
Wscript.Echo "Company: " & objDocument.Company
Set colCustomProperties = objDocument.CustomProperties
For Each strProperty in colCustomProperties
Wscript.Echo vbTab & strProperty.Name & ": " & strProperty.Value
Next
Wscript.Echo "Date created: " & objDocument.DateCreated
Wscript.Echo "Date last printed: " & objDocument.DateLastPrinted
Wscript.Echo "Date last saved: " & objDocument.DateLastSaved
Wscript.Echo "Has macros: " & objDocument.HasMacros
Wscript.Echo "Hidden slides: " & objDocument.HiddenSlides
Wscript.Echo "Icon: " & objDocument.Icon
Wscript.Echo "Is read only: " & objDocument.IsReadOnly
Wscript.Echo "Keywords" & objDocument.Keywords
Wscript.Echo "Last edited by: " & objDocument.LastEditedBy
Wscript.Echo "Line count: " & objDocument.LineCount
Wscript.Echo "Location: " & objDocument.Location
Wscript.Echo "Manager: " & objDocument.Manager
Wscript.Echo "Multimedia clips: " & objDocument.MultimediaClips
Wscript.Echo "Name: " & objDocument.Name
Wscript.Echo "Page count: " & objDocument.PageCount
Wscript.Echo "Paragraph count: " & objDocument.ParagraphCount
Wscript.Echo "Presentation format: " & objDocument.PresentationFormat
Wscript.Echo "Presentation notes: " & objDocument.PresentationNotes
Wscript.Echo "ProgID: " & objDocument.ProgID
Wscript.Echo "Revision number: " & objDocument.RevisionNumber
Wscript.Echo "Slide count: " & objDocument.SlideCount
Wscript.Echo "Subject: " & objDocument.Subject
Wscript.Echo "Template: " & objDocument.Template
Wscript.Echo "Thumbnail: " & objDocument.Thumbnail
Wscript.Echo "Title: " & objDocument.Title
Wscript.Echo "Version: " & objDocument.Version
Wscript.Echo "Word count: " & objDocument.WordCount
Retrieving Extended File Properties
Dim arrHeaders(34)
Set objShell = CreateObject("Shell.Application")
Set objFolder = objShell.Namespace("C:\Scripts")
For i = 0 to 33
arrHeaders(i) = objFolder.GetDetailsOf(objFolder.Items, i)
Next
For Each strFileName in objFolder.Items
For i = 0 to 33
Wscript.Echo i & vbtab & arrHeaders(i) _
& ": " & objFolder.GetDetailsOf(strFileName, i)
Next
Next
Search for Files Using a Wildcard Query
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}\\" & strComputer & "\root\cimv2")
Set colFiles = objWMIService.ExecQuery _
("Select * from CIM_DataFile where FileName Like '%~%'")
For Each objFile in colFiles
Wscript.Echo objFile.Name
Next
'SearchforfilesinFolderandSubfolders
folder="c:\temp"
extensions=Array("txt","csv")
nameContains="test"
searchContents=True
contains="test"
useModifiedDate=True
modifiedDateStart=Now-1000
modifiedDateEnd=Now
Setfso=CreateObject("Scripting.Filesystemobject")
Searchfso.GetFolder(folder)
SubSearch(myfolder)
ForEachfileInmyfolder.Files
match=False
IfuseModifiedDate=FalseOr_
(useModifiedDateAndfile.DateLastModified>=modifiedDateStart_
Andfile.DateLastModified<=modifiedDateEnd)Then
ext=LCase(Mid(file.Name,InStrRev(file.Name,".")+1))
ForEachextensionInextensions
IfStrComp(extension,ext,vbTextCompare)=0Then
IfInStr(1,file.Name,nameContains,vbTextCompare)>0Then
IfsearchContentsThen
Setf=fso.OpenTextFile(file.Path,1)
contents=f.ReadAll
f.Close
IfInStr(1,contents,contains,vbTextCompare)>0Then
match=True
EndIf
Else
match=True
EndIf
EndIf
IfmatchThen
WScript.Echofile.path
EndIf
ExitFor
EndIf
Next
EndIf
Next
ForEachsubfolderInmyfolder.SubFolders
Searchsubfolder
Next
EndSub
'Touchafile-ChangetheLast-ModifiedDateofaFile
path="c:\test.txt"
Setfso=CreateObject("Scripting.Filesystemobject")
Setfile=fso.GetFile(path)
SetobjShell=CreateObject("Shell.Application")
SetobjFolder=objShell.NameSpace(file.ParentFolder.Path)
objFolder.Items.Item(file.Name).ModifyDate=Now
Verify that a File Exists
Set objFSO = CreateObject("Scripting.FileSystemObject")
If objFSO.FileExists("C:\FSO\ScriptLog.txt") Then
Set objFolder = objFSO.GetFile("C:\FSO\ScriptLog.txt")
Else
Wscript.Echo "File does not exist."
End If
Bind to a Folder Using the Browse for Folder Dialog Box
Const WINDOW_HANDLE = 0
Const NO_OPTIONS = 0
Set objShell = CreateObject("Shell.Application")
Set objFolder = objShell.BrowseForFolder _
(WINDOW_HANDLE, "Select a folder:", NO_OPTIONS, "C:\Scripts")
Set objFolderItem = objFolder.Self
objPath = objFolderItem.Path
objPath = Replace(objPath, "\", "\\")
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}\\" & strComputer & "\root\cimv2")
Set colFiles = objWMIService.ExecQuery _
("Select * from Win32_Directory where name = '" & objPath & "'")
For Each objFile in colFiles
Wscript.Echo "Readable: " & objFile.Readable
Next
Compress a Folder
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colFolders = objWMIService.ExecQuery _
("Select * from Win32_Directory where name = 'c:\\Scripts'")
For Each objFolder in colFolders
errResults = objFolder.Compress
Next
Copy a Folder
Const OverWriteFiles = TRUE
Set objFSO = CreateObject("Scripting.FileSystemObject")
objFSO.CopyFolder "C:\Scripts" , "C:\FSO" , OverWriteFiles
Copy a Folder Using the Shell Object
Const FOF_CREATEPROGRESSDLG = &H0&
ParentFolder = "D:\Archive"
Set objShell = CreateObject("Shell.Application")
Set objFolder = objShell.NameSpace(ParentFolder)
objFolder.CopyHere "C:\Scripts", FOF_CREATEPROGRESSDLG
Copy a Folder Using WMI
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colFolders = objWMIService.ExecQuery( _
"Select * from Win32_Directory where Name = 'c:\\Scripts'")
For Each objFolder in colFolders
errResults= objFolder.Copy("D:\Archive")
Next
Create aFolder Using the Shell Object
ParentFolder = "C:\"
set objShell = CreateObject("Shell.Application")
set objFolder = objShell.NameSpace(ParentFolder)
objFolder.NewFolder "Archive"
Create a Folder
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objFolder = objFSO.CreateFolder("C:\FSO")
Delete a Folder
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colFolders = objWMIService.ExecQuery _
("Select * from Win32_Directory where Name = 'c:\\Scripts'")
For Each objFolder in colFolders
errResults = objFolder.Delete
Next
Delete a Folder on the Local Computer
Set objFSO = CreateObject("Scripting.FileSystemObject")
objFSO.DeleteFolder("C:\FSO")
Enumerate Subfolders Using Recursion
Set FSO = CreateObject("Scripting.FileSystemObject")
ShowSubfolders FSO.GetFolder("C:\Scripts")
Sub ShowSubFolders(Folder)
For Each Subfolder in Folder.SubFolders
Wscript.Echo Subfolder.Path
ShowSubFolders Subfolder
Next
End Sub
'GetTheSizesofFolderandSubfoldersrecursively
folder="c:\temp"
Setfso=CreateObject("Scripting.Filesystemobject")
result=""
Browsefso.GetFolder(folder),""
arr=Split(result,vbCrLf)
Fori=UBound(arr)to0Step-1
WScript.Echoarr(i)
Next
FunctionBrowse(myfolder,indent)
Dimsize
size=0
ForEachfileInmyfolder.Files
size=size+file.Size
Next
ForEachsubfolderInmyfolder.SubFolders
size=size+Browse(subfolder,indent&"")
Next
result=result&indent&myfolder.Name&"["&size&"]"&vbCrLf
Browse=size
EndFunction
List a Specific Set of Folders
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colFiles = objWMIService.ExecQuery _
("Select * from Win32_Directory Where Hidden = True")
For Each objFile in colFiles
Wscript.Echo objFile.Name
Next
List All the Folders on a Computer
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colFolders = objWMIService.ExecQuery("Select * from Win32_Directory")
For Each objFolder in colFolders
Wscript.Echo objFolder.Name
Next
List Folder Attributes
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objFolder = objFSO.GetFolder("C:\FSO")
If objFolder.Attributes AND 2 Then
Wscript.Echo "Hidden folder."
End If
If objFolder.Attributes AND 4 Then
Wscript.Echo "System folder."
End If
If objFolder.Attributes AND 16 Then
Wscript.Echo "Folder."
End If
If objFolder.Attributes AND 32 Then
Wscript.Echo "Archive bit set."
End If
If objFolder.Attributes AND 2048 Then
Wscript.Echo "Compressed folder."
End If
List Folder Properties
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colFolders = objWMIService. _
ExecQuery("Select * from Win32_Directory where name = 'c:\\Scripts'")
For Each objFolder in colFolders
Wscript.Echo "Archive: " & objFolder.Archive
Wscript.Echo "Caption: " & objFolder.Caption
Wscript.Echo "Compressed: " & objFolder.Compressed
Wscript.Echo "Compression method: " & objFolder.CompressionMethod
Wscript.Echo "Creation date: " & objFolder.CreationDate
Wscript.Echo "Encrypted: " & objFolder.Encrypted
Wscript.Echo "Encryption method: " & objFolder.EncryptionMethod
Wscript.Echo "Hidden: " & objFolder.Hidden
Wscript.Echo "In use count: " & objFolder.InUseCount
Wscript.Echo "Last accessed: " & objFolder.LastAccessed
Wscript.Echo "Last modified: " & objFolder.LastModified
Wscript.Echo "Name: " & objFolder.Name
Wscript.Echo "Path: " & objFolder.Path
Wscript.Echo "Readable: " & objFolder.Readable
Wscript.Echo "System: " & objFolder.System
Wscript.Echo "Writeable: " & objFolder.Writeable
Next
List Folder Properties
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objFolder = objFSO.GetFolder("C:\Scripts")
Wscript.Echo "Date created: " & objFolder.DateCreated
Wscript.Echo "Date last accessed: " & objFolder.DateLastAccessed
Wscript.Echo "Date last modified: " & objFolder.DateLastModified
Wscript.Echo "Drive: " & objFolder.Drive
Wscript.Echo "Is root folder: " & objFolder.IsRootFolder
Wscript.Echo "Name: " & objFolder.Name
Wscript.Echo "Parent folder: " & objFolder.ParentFolder
Wscript.Echo "Path: " & objFolder.Path
Wscript.Echo "Short name: " & objFolder.ShortName
Wscript.Echo "Short path: " & objFolder.ShortPath
Wscript.Echo "Size: " & objFolder.Size
Wscript.Echo "Type: " & objFolder.Type
List Folders Based on Creation Date
Const LOCAL_TIME = TRUE
Set dtmTargetDate = CreateObject("WbemScripting.SWbemDateTime")
Set dtmConvertedDate = CreateObject("WbemScripting.SWbemDateTime")
dtmTargetDate.SetVarDate "3/1/2004", LOCAL_TIME
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}\\" & strComputer & "\root\cimv2")
Set colFolders = objWMIService.ExecQuery _
("Select * from Win32_Directory Where " _
& "CreationDate > '" & dtmTargetDate & "'")
For each objFolder in colFolders
dtmConvertedDate.Value = objFolder.CreationDate
Wscript.Echo objFolder.Name & VbTab & _
dtmConvertedDate.GetVarDate(LOCAL_TIME)
Next
List Shell Object Verbs
Const RECYCLE_BIN = &Ha&
Set objShell = CreateObject("Shell.Application")
Set objFolder = objShell.NameSpace(RECYCLE_BIN)
Set objFolderItem = objFolder.Self
Set colVerbs = objFolderItem.Verbs
For i = 0 to colVerbs.Count - 1
Wscript.Echo colVerbs.Item(i)
Next
List the Subfolders of a Folder
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colSubfolders = objWMIService.ExecQuery _
("Associators of {Win32_Directory.Name='c:\scripts'} " _
& "Where AssocClass = Win32_Subdirectory " _
& "ResultRole = PartComponent")
For Each objFolder in colSubfolders
Wscript.Echo objFolder.Name
Next
List the Subfolders of a Folder on the Local Computer
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objFolder = objFSO.GetFolder("C:\FSO")
Set colSubfolders = objFolder.Subfolders
For Each objSubfolder in colSubfolders
Wscript.Echo objSubfolder.Name, objSubfolder.Size
Next
Modify Folder Attributes
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objFolder = objFSO.GetFolder("C:\FSO")
If objFolder.Attributes = objFolder.Attributes AND 2 Then
objFolder.Attributes = objFolder.Attributes XOR 2
End If
Move a Folder
Set objFSO = CreateObject("Scripting.FileSystemObject")
objFSO.MoveFolder "C:\Scripts" , "M:\helpdesk\management"
Move a Folder Using the Shell Object
Const FOF_CREATEPROGRESSDLG = &H0&
TargetFolder = "D:\Archive"
Set objShell = CreateObject("Shell.Application")
Set objFolder = objShell.NameSpace(TargetFolder)
objFolder.MoveHere "C:\Scripts", FOF_CREATEPROGRESSDLG
Move a Folder Using WMI
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colFolders = objWMIService.ExecQuery _
("Select * from Win32_Directory where name = 'c:\\Scripts'")
For Each objFolder in colFolders
errResults = objFolder.Rename("C:\Admins\Documents\Archive\VBScript")
Next
Rename a Folder
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colFolders = objWMIService.ExecQuery _
("Select * from Win32_Directory where name = 'c:\\Scripts'")
For Each objFolder in colFolders
errResults = objFolder.Rename("C:\Script Repository")
Next
Rename a Folder on the Local Computer
Set objFSO = CreateObject("Scripting.FileSystemObject")
objFSO.MoveFolder "C:\FSO\Samples" , "C:\FSO\Scripts"
Search for Folders by Date
On Error Resume Next
dtmTargetDate = "20020301000000.000000-420"
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}\\" & strComputer & "\root\cimv2")
Set colFolders = objWMIService.ExecQuery _
("Select * from Win32_Directory Where CreationDate > '" & _
dtmtargetDate & "'")
For Each objFolder in colFolders
Wscript.Echo objFolder.Name
Next
Search for Folders Using Wildcards
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colFolders = objWMIService.ExecQuery _
("Select * from Win32_Directory where Name Like '%c:\\S%'")
For Each objFolder in colFolders
Wscript.Echo "Name: " & objFolder.Name
Next
Uncompress a Folder
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colFolders = objWMIService.ExecQuery _
("Select * from Win32_Directory where name = 'c:\\Scripts'")
For Each objFolder in colFolders
errResults = objFolder.Uncompress
Next
Verify that a Folder Exists
Set objFSO = CreateObject("Scripting.FileSystemObject")
If objFSO.FolderExists("C:\FSO") Then
Set objFolder = objFSO.GetFolder("C:\FSO")
Else
Wscript.Echo "Folder does not exist."
End If
Create a Network Share
Const FILE_SHARE = 0
Const MAXIMUM_CONNECTIONS = 25
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set objNewShare = objWMIService.Get("Win32_Share")
errReturn = objNewShare.Create _
("C:\Finance", "FinanceShare", FILE_SHARE, _
MAXIMUM_CONNECTIONS, "Public share for the Finance group.")
Delete a Network Share
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colShares = objWMIService.ExecQuery _
("Select * from Win32_Share Where Name = 'FinanceShare'")
For Each objShare in colShares
objShare.Delete
Next
Delete a Published Folder
Set objContainer = GetObject("LDAP://CN=FinanceShare, " _
& "OU=Finance, DC=fabrikam, DC=com")
objContainer.DeleteObject (0)
List Network Shares
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colShares = objWMIService.ExecQuery("Select * from Win32_Share")
For each objShare in colShares
Wscript.Echo "Allow Maximum: " & objShare.AllowMaximum
Wscript.Echo "Caption: " & objShare.Caption
Wscript.Echo "Maximum Allowed: " & objShare.MaximumAllowed
Wscript.Echo "Name: " & objShare.Name
Wscript.Echo "Path: " & objShare.Path
Wscript.Echo "Type: " & objShare.Type
Next
List Shared Folders Published in Active Directory
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.CommandText = "Select Name, unCName, ManagedBy from " _
& "'LDAP://DC=Fabrikam,DC=com' where objectClass='volume'"
objCommand.Properties("Searchscope") = ADS_SCOPE_SUBTREE
Set objRecordSet = objCommand.Execute
objRecordSet.MoveFirst
Do Until objRecordSet.EOF
Wscript.Echo "Share Name: " & objRecordSet.Fields("Name").Value
Wscript.Echo "UNC Name: " & objRecordSet.Fields("uNCName").Value
Wscript.Echo "Managed By: " & objRecordSet.Fields("ManagedBy").Value
objRecordSet.MoveNext
Loop
Map a Network Share to a Local Folder
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colShares = objWMIService.ExecQuery _
("Associators of {Win32_Share.Name='Scripts'} Where " _
& "AssocClass=Win32_ShareToDirectory")
For Each objFolder in colShares
Wscript.Echo objFolder.Name
Next
Map All Network Shares to Local Folders
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colShares = objWMIService.ExecQuery("Select * From Win32_Share")
For Each objShare in colShares
Set colAssociations = objWMIService.ExecQuery _
("Associators of {Win32_Share.Name='" & objShare.Name & "'} " _
& " Where AssocClass=Win32_ShareToDirectory")
For Each objFolder in colAssociations
Wscript.Echo objShare.Name & vbTab & objFolder.Name
Next
Next
Modify a Network Share
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colShares = objWMIService.ExecQuery _
("Select * from Win32_Share Where Name = 'FinanceShare'")
For Each objShare in colShares
errReturn = objShare.SetShareInfo(50, _
"Public share for HR administrators and the Finance Group.")
Next
Publish a Shared Folder in Active Directory
Set objComputer = GetObject _
("LDAP://OU=Finance, DC=fabrikam, DC=com")
Set objShare = objComputer.Create("volume", "CN=FinanceShare")
objShare.Put "uNCName", "\\atl-dc-02\FinanceShare"
objShare.Put "Description", "Public share for users in the Finance group."
objShare.Put "Keywords", Array("finance", "fiscal", "monetary")
objShare.SetInfo
Search for Specific Published Folders in Active Directory
On Error Resume Next
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.CommandText = "Select Name, unCName, ManagedBy from "
& "'LDAP://DC=Reskit,DC=com'" _
& " where objectClass='volume' and Keywords = 'finance*'"
objCommand.Properties("Searchscope") = ADS_SCOPE_SUBTREE
Set objRecordSet = objCommand.Execute
objRecordSet.MoveFirst
Do Until objRecordSet.EOF
Wscript.Echo "Share Name: " & objRecordSet.Fields("Name").Value
Wscript.Echo "UNC Name: " & objRecordSet.Fields("uNCName").Value
Wscript.Echo "Managed By: " & objRecordSet.Fields("ManagedBy").Value
objRecordSet.MoveNext
Loop
Add a Terminal Services Direct Connect License Server
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}\\" & strComputer & "\root\cimv2")
Set colItems = objWMIService.ExecQuery _
("Select * from Win32_TerminalServiceSetting")
For Each objItem in colItems
errResult = objItem.AddDirectConnectLicenseServer("atl-ts-01")
Next
Assign a Terminal Services Initial Program
Const STARTUP_PROGRAM = "c:\accounting\invoice.exe"
Const STARTUP_FOLDER = "c:\accounting\fy_2003"
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}\\" & strComputer & "\root\cimv2")
Set colItems = objWMIService.ExecQuery _
("Select * from Win32_TSEnvironmentSetting")
For Each objItem in colItems
errResult = objItem.InitialProgram(STARTUP_PROGRAM, STARTUP_FOLDER)
Next
Delete a Terminal Service Direct Connect License Server
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}\\" & strComputer & "\root\cimv2")
Set colItems = objWMIService.ExecQuery _
("Select * from Win32_TerminalServiceSetting")
For Each objItem in colItems
errResult = objItem.DeleteDirectConnectLicenseServer("atl-ts-01")
Next
Enable Forcible Terminal Services Logoff
Const ENABLE_LOGOFF = 0
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}\\" & strComputer & "\root\cimv2")
Set colItems = objWMIService.ExecQuery _
("Select * from Win32_TerminalServiceSetting")
For Each objItem in colItems
errResult = objItem.SetDisableForcibleLogoff(ENABLE_LOGOFF)
Next
Enable Single Session Terminal Service Sessions
Const ENABLE = 1
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}\\" & strComputer & "\root\cimv2")
Set colItems = objWMIService.ExecQuery _
("Select * from Win32_TerminalServiceSetting")
For Each objItem in colItems
errResult = objItem.SetSingleSession(ENABLE)
Next
Enable Terminal Service Connections
Const ENABLE_CONNECTIONS = 1
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}\\" & strComputer & "\root\cimv2")
Set colItems = objWMIService.ExecQuery _
("Select * from Win32_TerminalServiceSetting")
For Each objItem in colItems
errResult = objItem.SetAllowTSConnections(ENABLE_CONNECTIONS)
Next
Enable Terminal Services
Const ENABLE = 1
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}\\" & strComputer & "\root\cimv2")
Set colItems = objWMIService.ExecQuery _
("Select * from Win32_Terminal Where TerminalName = 'Accounting'")
For Each objItem in colItems
errResult = objItem.Enable(ENABLE)
Next
Enable Terminal Services Active Desktop
Const ENABLED = 1
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}\\" & strComputer & "\root\cimv2")
Set colItems = objWMIService.ExecQuery _
("Select * from Win32_TerminalServiceSetting")
For Each objItem in colItems
objItem.ActiveDesktop = ENABLED
objItem.Put_
Next
Enable Terminal Services Password Prompt
Const ENABLE = 1
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}\\" & strComputer & "\root\cimv2")
Set colItems = objWMIService.ExecQuery _
("Select * from Win32_TSLogonSetting")
For Each objItem in colItems
errResult = objItem.SetPromptForPassword(ENABLE)
Next
Enable Terminal Services Session Directory
Const ENABLE_SESSION_DIRECTORY = 1
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}\\" & strComputer & "\root\cimv2")
Set colItems = objWMIService.ExecQuery _
("Select * from Win32_TSSessionDirectory")
For Each objItem in colItems
errResult = objItem.SetSessionDirectoryActive(ENABLE_SESSION_DIRECTORY)
Next
Expose the Terminal Services Session Directory Server IP Address
Const ENABLE = 1
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}\\" & strComputer & "\root\cimv2")
Set colItems = objWMIService.ExecQuery _
("Select * from Win32_TSSessionDirectory")
For Each objItem in colItems
errResult = objItem.SetSessionDirectoryExposeServerIP(ENABLE)
Next
Modify Terminal Service Audit Permissions
Const WINSTATION_QUERY = 0
strComputer = "."
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
Set colItems = objWMIService.ExecQuery _
("Select * from Win32_TSAccount Where AccountName = 'fabrikam\\bob' AND " _
& "TerminalName = 'Accounting'")
For Each objItem in colItems
errResult = objItem.ModifyAuditPermissions(WINSTATION_QUERY, False)
ext
Modify Terminal Service Permissions
CONST WINSTATION_CONNECT = 8
strComputer = "."
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
Set colItems = objWMIService.ExecQuery _
("Select * from Win32_TSAccount Where AccountName = 'fabrikam\\bob' " & _
"AND TerminalName = 'Accounting'")
For Each objItem in colItems
errResult = objItem.ModifyPermissions(WINSTATION_CONNECT,True)
Next
Modify Terminal Service Remote Control Settings
Const ENABLE_NO_INPUT_NO_NOTIFY = 4
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}\\" & strComputer & "\root\cimv2")
Set colItems = objWMIService.ExecQuery _
("Select * from Win32_TSRemoteControlSetting Where " & _
"TerminalName = 'Accounting'")
For Each objItem in colItems
errResult = objItem.RemoteControl(ENABLE_NO_INPUT_NO_NOTIFY)
Next
Modify Terminal Services Broken Connection Policy
Const PER_USER = 1
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}\\" & strComputer & "\root\cimv2")
Set colItems = objWMIService.ExecQuery("Select * from Win32_TSSessionSetting")
For Each objItem in colItems
objItem.BrokenConnectionPolicy = PER_USER
objItem.Put_
Next
Modify Terminal Services Broken Connection Settings
Const DISCONNECT_USER = 1
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}\\" & strComputer & "\root\cimv2")
Set colItems = objWMIService.ExecQuery("Select * from Win32_TSSessionSetting")
For Each objItem in colItems
errResult = objItem.BrokenConnection(DISCONNECT_USER)
Next
Modify Terminal Services Client Connection Settings
Const CONNECT_CLIENT_DRIVES = 1
Const CONNECT_PRINTER = 1
Const USE_CLIENT_PRINTER = 1
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}\\" & strComputer & "\root\cimv2")
Set colItems = objWMIService.ExecQuery("Select * from Win32_TSClientSetting")
For Each objItem in colItems
errResult = objItem.ConnectionSettings _
(CONNECT_CLIENT_DRIVES, CONNECT_PRINTER, USE_CLIENT_PRINTER)
Next
Modify Terminal Services Client Logon Settings
Const PER_USER = 1
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}\\" & strComputer & "\root\cimv2")
Set colItems = objWMIService.ExecQuery("Select * from Win32_TSLogonSetting")
For Each objItem in colItems
objItem.ClientLogonInfoPolicy = PER_USER
objItem.Put_
Next
Modify Terminal Services Client Settings
Const DISABLE = 0
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}\\" & strComputer & "\root\cimv2")
Set colItems = objWMIService.ExecQuery("Select * from Win32_TSClientSetting")
For Each objItem in colItems
errResult = objItem.SetClientProperty("AudioMapping", DISABLE)
Next
Modify Terminal Services Client Wallpaper Settings
Const NO_WALLPAPER = 0
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}\\" & strComputer & "\root\cimv2")
Set colItems = objWMIService.ExecQuery _
("Select * from Win32_TSEnvironmentSetting")
For Each objItem in colItems
errResult = objItem.SetClientWallpaper(NO_WALLPAPER)
Next
Modify Terminal Services Color Depth
Const SIXTEEN_BIT_COLOR = 3
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}\\" & strComputer & "\root\cimv2")
Set colItems = objWMIService.ExecQuery("Select * from Win32_TSClientSetting")
For Each objItem in colItems
errResult = objItem.SetColorDepth(SIXTEEN_BIT_COLOR)
Next
Modify Terminal Services Color Depth Policy
Const ENABLE = 1
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}\\" & strComputer & "\root\cimv2")
Set colItems = objWMIService.ExecQuery("Select * from Win32_TSClientSetting")
For Each objItem in colItems
errResult = objItem.SetColorDepthPolicy(ENABLE)
Next
Modify Terminal Services Connection Policy
Const PER_USER = 1
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}\\" & strComputer & "\root\cimv2")
Set colItems = objWMIService.ExecQuery("Select * from Win32_TSClientSetting")
For Each objItem in colItems
objItem.ConnectionPolicy = PER_USER
objItem.Put_
Next
Modify Terminal Services Encryption Level
Const HIGH_ENCRYPTION = 3
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}\\" & strComputer & "\root\cimv2")
Set colItems = objWMIService.ExecQuery("Select * from Win32_TSGeneralSetting")
For Each objItem in colItems
errResult = objItem.SetEncryptionLevel(HIGH_ENCRYPTION)
Next
Modify Terminal Services Home Directory
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}\\" & strComputer & "\root\cimv2")
Set colItems = objWMIService.ExecQuery _
("Select * from Win32_TerminalServiceSetting")
For Each objItem in colItems
errResult = objItem.SetHomeDirectory("c:\tsusers")
Next
Modify Terminal Services Initial Program Policy
CONST PER_USER = 1
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}\\" & strComputer & "\root\cimv2")
Set colItems = objWMIService.ExecQuery _
("Select * from Win32_TSEnvironmentSetting")
For Each objItem in colItems
objItem.InitialProgramPolicy = PER_USER
objItem.Put_
Next
Modify Terminal Services Logon Policy
Const NEW_SESSIONS_ALLOWED = 1
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}\\" & strComputer & "\root\cimv2")
Set colItems = objWMIService.ExecQuery _
("Select * from Win32_TerminalServiceSetting")
For Each objItem in colItems
objItem.Logons = NEW_SESSIONS_ALLOWED
objItem.Put_
Next
Modify Terminal Services Maximum Connections
Const MAXIMUM_CONNECTIONS = 100
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}\\" & strComputer & "\root\cimv2")
Set colItems = objWMIService.ExecQuery _
("Select * from Win32_TSNetworkAdapterSetting")
For Each objItem in colItems
objItem.MaximumConnections = MAXIMUM_CONNECTIONS
objItem.Put_
Next
Modify Terminal Services Mode
Const PER_SESSION = 4
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colItems = objWMIService.ExecQuery _
("Select * from Win32_TerminalServiceSetting")
For Each objItem in colItems
errResult = objItem.ChangeMode(PER_SESSION)
Next
Modify Terminal Services Policy Property
Const DISABLE_POLICY = 0
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colItems = objWMIService.ExecQuery _
("Select * from Win32_TerminalServiceSetting")
For Each objItem in colItems
errResult = objItem.SetPolicyPropertyName("UseTempFolders", DISABLE_POLICY)
Next
Modify Terminal Services Profile Path
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colItems = objWMIService.ExecQuery _
("Select * from Win32_TerminalServiceSetting")
For Each objItem in colItems
errResult = objItem.SetProfilePath("c:\tsprofiles")
Next
Modify Terminal Services Reconnection Policy
Const PREVIOUS_CLIENT = 0
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colItems = objWMIService.ExecQuery("Select * from Win32_TSSessionSetting")
For Each objItem in colItems
objItem.ReconnectionPolicy = PREVIOUS_CLIENT
objItem.Put_
Next
Modify Terminal Services Remote Control Policy
Const PER_USER = 1
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colItems = objWMIService.ExecQuery _
("Select * from Win32_TSRemoteControlSetting")
For Each objItem in colItems
objItem.RemoteControlPolicy = PER_USER
objItem.Put_
Next
Modify Terminal Services Session Directory IP Address
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colItems = objWMIService.ExecQuery _
("Select * from Win32_TSSessionDirectory")
For Each objItem in colItems
objItem.SessionDirectoryIPAddress = "192.168.1.3"
objItem.Put_
Next
Modify Terminal Services Session Directory Location
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colItems = objWMIService.ExecQuery _
("Select * from Win32_TSSessionDirectory")
For Each objItem in colItems
errResult = objItem.SetSessionDirectoryProperty _
("SessionDirectoryLocation", "192.168.1.3")
Next
Modify Terminal Services Session Time Limit
Const NO_SESSION_LIMIT = 0
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colItems = objWMIService.ExecQuery("Select * from Win32_TSSessionSetting")
For Each objItem in colItems
errResult = objItem.TimeLimit("ActiveSessionLimit", NO_SESSION_LIMIT)
Next
Modify Terminal Services Time Limit Policy
Const PER_USER = 1
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colItems = objWMIService.ExecQuery("Select * from Win32_TSSessionSetting")
For Each objItem in colItems
objItem.TimeLimitPolicy = PER_USER
objItem.Put_
Next
Modify Terminal Services Time Zone Redirection
Const DISABLE = 0
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colItems = objWMIService.ExecQuery _
("Select * from Win32_TerminalServiceSetting")
For Each objItem in colItems
errResult = objItem.SetTimeZoneRedirection(DISABLE)
Next
Modify Terminal Services User Permissions
Const ENABLED = 1
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colItems = objWMIService.ExecQuery _
("Select * from Win32_TerminalServiceSetting")
For Each objItem in colItems
objItem.UserPermission = ENABLED
objItem.Put_
Next
Modify Terminal Services Windows Authentication Setting
Const STANDARD_AUTHENTICATION = 1
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colItems = objWMIService.ExecQuery("Select * from Win32_TSGeneralSetting")
For Each objItem in colItems
objItem.WindowsAuthentication = STANDARD_AUTHENTICATION
objItem.Put_
Next
Modify the Terminal Services Comment
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colItems = objWMIService.ExecQuery("Select * from Win32_TSGeneralSetting")
For Each objItem in colItems
objItem.Comment = "Accounting session."
objItem.Put_
Next
Modify the Terminal Services Logon
Const TS_USER = "tsuser"
CONST TS_DOMAIN = "fabrikam"
CONST TS_PASSWORD = "password"
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colItems = objWMIService.ExecQuery("Select * from Win32_TSLogonSetting")
For Each objItem in colItems
errResult = objItem.ExplicitLogon(TS_USER, TS_DOMAIN, TS_PASSWORD)
Next
Rename a Terminal Service Terminal
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colItems = objWMIService.ExecQuery _
("Select * from Win32_Terminal Where TerminalName = 'RDP-tcp'")
For Each objItem in colItems
errResult = objItem.Rename("Accounting")
Next
Restore the Default Terminal Service Permissions
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colItems = objWMIService.ExecQuery _
("Select * from Win32_TSPermissionsSetting")
For Each objItem in colItems
errResult = objItem.RestoreDefaults()
Next
Publish License Server Across Trusted AD Sites
Const ADS_PROPERTY_APPEND = 3
Set objRootDSE = GetObject("LDAP://RootDSE")
strConfigContainer = objRootDSE.Get("configurationNamingContext")
Set objSysInfo = CreateObject("ADSystemInfo")
strSite = objSysInfo.SiteName
strComputerName = objSysInfo.ComputerName
Set adsLS = GetObject("LDAP://CN=TS-Enterprise-License-Server,CN=" & strSite &_
",CN=sites," & strConfigContainer)
Set adsContainer = GetObject("LDAP://CN=" & strSite & ",CN=sites," & strConfigContainer)
Set adsLS = adsContainer.Create("LicensingSiteSettings" , "CN=TS-Enterprise-License-Server")
adsLS.PutEx ADS_PROPERTY_APPEND, "siteServer", Array(strComputerName)
adsLS.SetInfo
Monitor Terminal Service Session Performance
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
set objRefresher = CreateObject("WbemScripting.SWbemRefresher")
Set colItems = objRefresher.AddEnum _
(objWMIService, "Win32_PerfFormattedData_Perf_TermService_TerminalServiceSession").objectSet
objRefresher.Refresh
For i = 1 to 5
For Each objItem in colItems
Wscript.Echo "Caption: " & objItem.Caption
Wscript.Echo "Description: " & objItem.Description
Wscript.Echo "Handle Count: " & objItem.HandleCount
Wscript.Echo "Input Asynchronous Frame Error: " & _
objItem.InputAsyncFrameError
Wscript.Echo "Input Asynchronous Overflow: " & _
objItem.InputAsyncOverflow
Wscript.Echo "Input Asynchronous Overrun: " & objItem.InputAsyncOverrun
Wscript.Echo "Input Asynchronous Parity Error: " & _
objItem.InputAsyncParityError
Wscript.Echo "Input Bytes: " & objItem.InputBytes
Wscript.Echo "Input Compressed Bytes: " & objItem.InputCompressedBytes
Wscript.Echo "Input Compress Flushes: " & objItem.InputCompressFlushes
Wscript.Echo "Input Compression Ratio: " & _
objItem.InputCompressionRatio
Wscript.Echo "Input Errors: " & objItem.InputErrors
Wscript.Echo "Input Frames: " & objItem.InputFrames
Wscript.Echo "Input Timeouts: " & objItem.InputTimeouts
Wscript.Echo "Input Transport Errors: " & objItem.InputTransportErrors
Wscript.Echo "Input Wait For OutputBuffer: " & _
objItem.InputWaitForOutBuf
Wscript.Echo "Input Wd Bytes: " & objItem.InputWdBytes
Wscript.Echo "Input Wd Frames: " & objItem.InputWdFrames
Wscript.Echo "Name: " & objItem.Name
Wscript.Echo "Output Asynchronous Frame Error: " & _
objItem.OutputAsyncFrameError
Wscript.Echo "Output Asynchronous Overflow: " & _
objItem.OutputAsyncOverflow
Wscript.Echo "Output Asynchronous Overrun: " & _
objItem.OutputAsyncOverrun
Wscript.Echo "OutputAsynchronous Parity Error: " & _
objItem.OutputAsyncParityError
Wscript.Echo "Output Bytes: " & objItem.OutputBytes
Wscript.Echo "Output Compressed Bytes: " & _
objItem.OutputCompressedBytes
Wscript.Echo "Output Compress Flushes: " & _
objItem.OutputCompressFlushes
Wscript.Echo "Output Compression Ratio: " & _
objItem.OutputCompressionRatio
Wscript.Echo "Output Errors: " & objItem.OutputErrors
Wscript.Echo "Output Frames: " & objItem.OutputFrames
Wscript.Echo "Output Timeouts: " & objItem.OutputTimeouts
Wscript.Echo "Output Transport Errors: " & _
objItem.OutputTransportErrors
Wscript.Echo "Output Wait For Outout Buffer: " & _
objItem.OutputWaitForOutBuf
Wscript.Echo "Output Wd Bytes: " & objItem.OutputWdBytes
Wscript.Echo "Output Wd Frames: " & objItem.OutputWdFrames
Wscript.Echo "Page Faults Per Second: " & objItem.PageFaultsPersec
Wscript.Echo "Page File Bytes: " & objItem.PageFileBytes
Wscript.Echo "Page File Bytes Peak: " & objItem.PageFileBytesPeak
Wscript.Echo "Percent Privileged Time: " & _
objItem.PercentPrivilegedTime
Wscript.Echo "Percent Processor Time: " & objItem.PercentProcessorTime
Wscript.Echo "Percent User Time: " & objItem.PercentUserTime
Wscript.Echo "Pool Nonpaged Bytes: " & objItem.PoolNonpagedBytes
Wscript.Echo "Pool Paged Bytes: " & objItem.PoolPagedBytes
Wscript.Echo "Private Bytes: " & objItem.PrivateBytes
Wscript.Echo "Protocol Bitmap Cache Hit Ratio: " & _
objItem.ProtocolBitmapCacheHitRatio
Wscript.Echo "Protocol Bitmap Cache Hits: " & _
objItem.ProtocolBitmapCacheHits
Wscript.Echo "Protocol Bitmap Cache Reads: " & _
objItem.ProtocolBitmapCacheReads
Wscript.Echo "Protocol Brush Cache Hit Ratio: " & _
objItem.ProtocolBrushCacheHitRatio
Wscript.Echo "Protocol Brush Cache Hits: " & _
objItem.ProtocolBrushCacheHits
Wscript.Echo "Protocol Brush Cache Reads: " & _
objItem.ProtocolBrushCacheReads
Wscript.Echo "Protocol Glyph Cache Hit Ratio: " & _
objItem.ProtocolGlyphCacheHitRatio
Wscript.Echo "Protocol Glyph Cache Hits: " & _
objItem.ProtocolGlyphCacheHits
Wscript.Echo "Protocol Glyph Cache Reads: " & _)
objItem.ProtocolGlyphCacheReads
Wscript.Echo "Protocol Save Screen Bitmap Cache Hit Ratio: " & _
objItem.ProtocolSaveScreenBitmapCacheHitRatio
Wscript.Echo "Protocol Save Screen Bitmap Cache Hits: " & _
objItem.ProtocolSaveScreenBitmapCacheHits
Wscript.Echo "Protocol Save Screen Bitmap Cache Reads: " & _
objItem.ProtocolSaveScreenBitmapCacheReads
Wscript.Echo "Thread Count: " & objItem.ThreadCount
Wscript.Echo "Total Asynchronous Frame Error: " & _
objItem.TotalAsyncFrameError
Wscript.Echo "Total Asynchronous Overflow: " & _
objItem.TotalAsyncOverflow
Wscript.Echo "Total Asynchronous Overrun: " & objItem.TotalAsyncOverrun
Wscript.Echo "Total Asynchronous Parity Error: " & _
objItem.TotalAsyncParityError
Wscript.Echo "Total Bytes: " & objItem.TotalBytes
Wscript.Echo "Total Compressed Bytes: " & objItem.TotalCompressedBytes
Wscript.Echo "Total Compress Flushes: " & objItem.TotalCompressFlushes
Wscript.Echo "Total Compression Ratio: " & _
objItem.TotalCompressionRatio
Wscript.Echo "Total Errors: " & objItem.TotalErrors
Wscript.Echo "Total Frames: " & objItem.TotalFrames
Wscript.Echo "Total Protocol Cache Hit Ratio: " & _
objItem.TotalProtocolCacheHitRatio
Wscript.Echo "Total Protocol Cache Hits: " & _
objItem.TotalProtocolCacheHits
Wscript.Echo "Total Protocol Cache Reads: " & _
objItem.TotalProtocolCacheReads
Wscript.Echo "Total Timeouts: " & objItem.TotalTimeouts
Wscript.Echo "Total Transport Errors: " & objItem.TotalTransportErrors
Wscript.Echo "Total Wait For Output Buffer: " & _
objItem.TotalWaitForOutBuf
Wscript.Echo "Total Wd Bytes: " & objItem.TotalWdBytes
Wscript.Echo "Total Wd Frames: " & objItem.TotalWdFrames
Wscript.Echo "Virtual Bytes: " & objItem.VirtualBytes
Wscript.Echo "Virtual Bytes Peak: " & objItem.VirtualBytesPeak
Wscript.Echo "Working Set: " & objItem.WorkingSet
Wscript.Echo "Working Set Peak: " & objItem.WorkingSetPeak
Wscript.Sleep 2000
objRefresher.Refresh
Next
Next
Monitor Terminal Services Performance
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
set objRefresher = CreateObject("WbemScripting.SWbemRefresher")
Set colItems = objRefresher.AddEnum(objWMIService, _
"Win32_PerfFormattedData_TermService_TerminalServices").objectSet
objRefresher.Refresh
For i = 1 to 5
For Each objItem in colItems
Wscript.Echo "Active Sessions: " & objItem.ActiveSessions
Wscript.Echo "Caption: " & objItem.Caption
Wscript.Echo "Description: " & objItem.Description
Wscript.Echo "Inactive Sessions: " & objItem.InactiveSessions
Wscript.Echo "Name: " & objItem.Name
Wscript.Echo "Total Sessions: " & objItem.TotalSessions
Wscript.Sleep 2000
objRefresher.Refresh
Next
Next
List Terminal Services Accounts
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colItems = objWMIService.ExecQuery("Select * from Win32_TSAccount")
For Each objItem in colItems
Wscript.Echo "Account name: " & objItem.AccountName
Wscript.Echo "Audit failure: " & objItem.AuditFail
Wscript.Echo "Audit success: " & objItem.AuditSuccess
Wscript.Echo "Permissions allowed: " & objItem.PermissionsAllowed
Wscript.Echo "Permissions denied: " & objItem.PermissionsDenied
Wscript.Echo "Setting ID: " & objItem.SettingID
Wscript.Echo "SID: " & objItem.SID
Wscript.Echo "Terminal name: " & objItem.TerminalName
Wscript.Echo
Next
List Terminal Services Client Settings
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colItems = objWMIService.ExecQuery("Select * from Win32_TSClientSetting")
For Each objItem in colItems
Wscript.Echo "Audio mapping: " & objItem.AudioMapping
Wscript.Echo "Caption: " & objItem.Caption
Wscript.Echo "Clipboard mapping: " & objItem.ClipboardMapping
Wscript.Echo "Color depth: " & objItem.ColorDepth
Wscript.Echo "Color depth policy: " & objItem.ColorDepthPolicy
Wscript.Echo "COM port mapping: " & objItem.COMPortMapping
Wscript.Echo "Connect client drives at logon: " & _
objItem.ConnectClientDrivesAtLogon
Wscript.Echo "Connection policy: " & objItem.ConnectionPolicy
Wscript.Echo "Connect printer at logon: " & objItem.ConnectPrinterAtLogon
Wscript.Echo "Default to client printer: " & objItem.DefaultToClientPrinter
Wscript.Echo "Description: " & objItem.Description
Wscript.Echo "Drive mapping: " & objItem.DriveMapping
Wscript.Echo "LPT port mapping: " & objItem.LPTPortMapping
Wscript.Echo "Setting ID: " & objItem.SettingID
Wscript.Echo "Terminal name: " & objItem.TerminalName
Wscript.Echo "Windows printer mapping: " & objItem.WindowsPrinterMapping
Wscript.Echo
Next
List Terminal Services Environment Properties for a User Account
Set objUser = GetObject _
("LDAP://cn=MyerKen,ou=Management,dc=NA,dc=fabrikam,dc=com")
Wscript.Echo "Connect Client Drives At Logon: " & _
objUser.ConnectClientDrivesAtLogon
Wscript.Echo "Connect Client Printers At Logon: " & _
objUser.ConnectClientPrintersAtLogon
Wscript.Echo "Default To Main Printer: " & objUser.DefaultToMainPrinter
Wscript.Echo "Terminal Services Initial Program: " & _
objUser.TerminalServicesInitialProgram
Wscript.Echo "Terminal Services Work Directory: " & _
objUser.TerminalServicesWorkDirectory
List Terminal Services Environment Settings
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colItems = objWMIService.ExecQuery _
("Select * from Win32_TSEnvironmentSetting")
For Each objItem in colItems
Wscript.Echo "Client wallpaper: " & objItem.ClientWallpaper
Wscript.Echo "Initial program path: " & objItem.InitialProgramPath
Wscript.Echo "Initial program policy: " & objItem.InitialProgramPolicy
Wscript.Echo "Setting ID: " & objItem.SettingID
Wscript.Echo "Start in: " & objItem.Startin
Wscript.Echo "Terminal name: " & objItem.TerminalName
Wscript.Echo
Next
List Terminal Services General Settings
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colItems = objWMIService.ExecQuery("Select * from Win32_TSGeneralSetting")
For Each objItem in colItems
Wscript.Echo "Comment: " & objItem.Comment
Wscript.Echo "Minimum encryption level: " & objItem.MinEncryptionLevel
Wscript.Echo "Setting ID: " & objItem.SettingID
Wscript.Echo "Terminal name: " & objItem.TerminalName
Wscript.Echo "Terminal protocol: " & objItem.TerminalProtocol
Wscript.Echo "Transport: " & objItem.Transport
Wscript.Echo "Windows authentication: " & objItem.WindowsAuthentication
Wscript.Echo
Next
List Terminal Services Logon Settings
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colItems = objWMIService.ExecQuery("Select * from Win32_TSLogonSetting")
For Each objItem in colItems
Wscript.Echo "Client logon information policy: " & _
objItem.ClientLogonInfoPolicy
Wscript.Echo "Domain: " & objItem.Domain
Wscript.Echo "Prompt for password: " & objItem.PromptForPassword
Wscript.Echo "Setting ID: " & objItem.SettingID
Wscript.Echo "Terminal name: " & objItem.TerminalName
Wscript.Echo "User name: " & objItem.UserName
Wscript.Echo
Next
List Terminal Services Network Adapter List Settings
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colItems = objWMIService.ExecQuery _
("Select * from Win32_TSNetworkAdapterListSetting")
For Each objItem in colItems
Wscript.Echo "Description: " & objItem.Description
Wscript.Echo "Network Adapter ID: " & objItem.NetworkAdapterID
Wscript.Echo "Network Adapter IP Address: " & objItem.NetworkAdapterIP
Wscript.Echo "Setting ID: " & objItem.SettingID
Wscript.Echo "Terminal name: " & objItem.TerminalName
Wscript.Echo
Next
List Terminal Services Network Adapter Settings
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colItems = objWMIService.ExecQuery _
("Select * from Win32_TSNetworkAdapterSetting")
For Each objItem in colItems
Wscript.Echo "Maximum Connections: " & objItem.MaximumConnections
Wscript.Echo "Network Adapter ID: " & objItem.NetworkAdapterID
Wscript.Echo "Network Adapter Name: " & objItem.NetworkAdapterName
Wscript.Echo "Setting ID: " & objItem.SettingID
Wscript.Echo "Terminal Name: " & objItem.TerminalName
Wscript.Echo
Next
List Terminal Services Permission Settings
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colItems = objWMIService.ExecQuery _
("Select * from Win32_TSPermissionsSetting")
For Each objItem in colItems
Wscript.Echo "Caption: " & objItem.Caption
Wscript.Echo "Description: " & objItem.Description
Wscript.Echo "Setting ID: " & objItem.SettingID
Wscript.Echo "Terminal name: " & objItem.TerminalName
Next
List Terminal Services Profile Properties
Set objUser = GetObject _
("LDAP://cn=MyerKen,ou=Management,dc=NA,dc=fabrikam,dc=com")
WScript.Echo "Terminal Services Profile Path : " & _
objUser.TerminalServicesProfilePath
WScript.Echo "Terminal Services Home Directory: " & _
objUser.TerminalServicesHomeDirectory
WScript.Echo "Terminal Services Home Drive: " & _
objUser.TerminalServicesHomeDrive
WScript.Echo "Allow Logon: " & objUser.AllowLogon
List Terminal Services Remote Control Settings
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colItems = objWMIService.ExecQuery _
("Select * from Win32_TSRemoteControlSetting")
For Each objItem in colItems
Wscript.Echo "Level of control: " & objItem.LevelofControl
Wscript.Echo "Remote control policy: " & objItem.RemoteControlPolicy
Wscript.Echo "Setting ID: " & objItem.SettingID
Wscript.Echo "Terminal name: " & objItem.TerminalName
Wscript.Echo
Next
List Terminal Services Session Directory Settings
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colItems = objWMIService.ExecQuery _
("Select * from Win32_TSSessionDirectory")
For Each objItem in colItems
Wscript.Echo "Session Directory active: " & objItem.SessionDirectoryActive
Wscript.Echo "Session Directory cluster name: " & _
objItem.SessionDirectoryClusterName
Wscript.Echo "Session Directory expose server IP address: " & _
objItem.SessionDirectoryExposeServerIP
Wscript.Echo "Session Directory IP address: " & _
objItem.SessionDirectoryIPAddress
Wscript.Echo "Session Directory location: " & _
objItem.SessionDirectoryLocation
Wscript.Echo "Setting ID: " & objItem.SettingID
Wscript.Echo
Next
List Terminal Services Session Settings
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colItems = objWMIService.ExecQuery("Select * from Win32_TSSessionSetting")
For Each objItem in colItems
Wscript.Echo "Active session limit: " & objItem.ActiveSessionLimit
Wscript.Echo "Broken connection action: " & objItem.BrokenConnectionAction
Wscript.Echo "Broken connection policy: " & objItem.BrokenConnectionPolicy
Wscript.Echo "Disconnected session limit: " & _
objItem.DisconnectedSessionLimit
Wscript.Echo "Idle session limit: " & objItem.IdleSessionLimit
Wscript.Echo "Reconnection policy: " & objItem.ReconnectionPolicy
Wscript.Echo "Setting ID: " & objItem.SettingID
Wscript.Echo "Terminal name: " & objItem.TerminalName
Wscript.Echo "Time limit policy: " & objItem.TimeLimitPolicy
Wscript.Echo
Next
List Terminal Services Terminal Settings
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colItems = objWMIService.ExecQuery _
("Select * from Win32_TerminalServiceSetting")
For Each objItem in colItems
Wscript.Echo "Active Desktop: " & objItem.ActiveDesktop
Wscript.Echo "Allow TS connections: " & objItem.AllowTSConnections
Wscript.Echo "Caption: " & objItem.Caption
Wscript.Echo "Delete temporary folders: " & objItem.DeleteTempFolders
Wscript.Echo "Description: " & objItem.Description
Wscript.Echo "Direct connect license servers: " & _
objItem.DirectConnectLicenseServers
Wscript.Echo "Disable forcible logoff: " & objItem.DisableForcibleLogoff
Wscript.Echo "Help: " & objItem.Help
Wscript.Echo "Home directory: " & objItem.HomeDirectory
Wscript.Echo "Licensing description: " & objItem.LicensingDescription
Wscript.Echo "Licensing name: " & objItem.LicensingName
Wscript.Echo "Licensing type: " & objItem.LicensingType
Wscript.Echo "Logons: " & objItem.Logons
Wscript.Echo "Profile path: " & objItem.ProfilePath
Wscript.Echo "Server name: " & objItem.ServerName
Wscript.Echo "Setting ID: " & objItem.SettingID
Wscript.Echo "Single session: " & objItem.SingleSession
Wscript.Echo "Terminal Server mode: " & objItem.TerminalServerMode
Wscript.Echo "Time zone redirection: " & objItem.TimeZoneRedirection
Wscript.Echo "User permission: " & objItem.UserPermission
Wscript.Echo "Use temporary folders: " & objItem.UseTempFolders
Wscript.Echo
Next
List Terminal Services Terminals
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colItems = objWMIService.ExecQuery("Select * from Win32_Terminal")
For Each objItem in colItems
Wscript.Echo "Terminal name: " & objItem.TerminalName
Wscript.Echo "Terminal enabled: " & objItem.fEnableTerminal
Wscript.Echo
Next
List Terminal Services Terminals
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colItems = objWMIService.ExecQuery("Select * from Win32_TerminalSetting")
For Each objItem in colItems
Wscript.Echo "Caption: " & objItem.Caption
Wscript.Echo "Description: " & objItem.Description
Wscript.Echo "Setting ID: " & objItem.SettingID
Wscript.Echo "Terminal name: " & objItem.TerminalName
Next
Add a Terminal Services Account
Const GUEST_ACCESS = 0
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colItems = objWMIService.ExecQuery _
("Select * from Win32_TSPermissionsSetting")
For Each objItem in colItems
errResult = objItem.AddAccount("fabrikam\bob", GUEST_ACCESS)
Next
Clear Terminal Services Properties for a User Account
Const ADS_PROPERTY_CLEAR = 1
Set objUser = GetObject _
("LDAP://cn=MyerKen,ou=Management,dc=NA,dc=fabrikam,dc=com")
objUser.PutEx ADS_PROPERTY_CLEAR, "userParameters", 0
objUser.SetInfo
Delete a Terminal Services Account
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colItems = objWMIService.ExecQuery _
("Select * from Win32_TSAccount Where AccountName = 'FABRIKAM\\bob'")
For Each objItem in colItems
errResult = objItem.Delete()
Next
Enable Remote Control Settings for a User Account
Const Disable = 0
Const EnableInputNotify = 1
Const EnableInputNoNotify = 2
Const EnableNoInputNotify = 3
Const EnableNoInputNoNotify = 4
Set objUser = GetObject _
("LDAP://cn=MyerKen,ou=Management,dc=NA,dc=fabrikam,dc=com")
objUser.EnableRemoteControl = EnableNoInputNoNotify
objUser.SetInfo
List Terminal Services Environment Properties for a User Account
Set objUser = GetObject _
("LDAP://cn=MyerKen,ou=Management,dc=NA,dc=fabrikam,dc=com")
Wscript.Echo "Connect Client Drives At Logon: " & _
objUser.ConnectClientDrivesAtLogon
Wscript.Echo "Connect Client Printers At Logon: " & _
objUser.ConnectClientPrintersAtLogon
Wscript.Echo "Default To Main Printer: " & objUser.DefaultToMainPrinter
Wscript.Echo "Terminal Services Initial Program: " & _
objUser.TerminalServicesInitialProgram
Wscript.Echo "Terminal Services Work Directory: " & _
objUser.TerminalServicesWorkDirectory
List Terminal Services Profile Properties
Set objUser = GetObject _
("LDAP://cn=MyerKen,ou=Management,dc=NA,dc=fabrikam,dc=com")
WScript.echo "Terminal Services Profile Path : " & _
objUser.TerminalServicesProfilePath
WScript.echo "Terminal Services Home Directory: " & _
objUser.TerminalServicesHomeDirectory
WScript.echo "Terminal Services Home Drive: " & _
objUser.TerminalServicesHomeDrive
WScript.echo "Allow Logon: " & objUser.AllowLogon
List Terminal Services Properties for a User
Set objUser = GetObject("LDAP://cn=youngrob,ou=r&d,dc=fabrikam,dc=com")
WScript.Echo objUser.Name & " Terminal Services Profile Settings"
WScript.Echo "--------------------------------------------------"
WScript.Echo "Allow Logon: " & objUser.AllowLogon
WScript.Echo "Terminal Services Home Directory: " & _
objUser.TerminalServicesHomeDirectory
WScript.Echo "Terminal Services Home Drive: " & _
objUser.TerminalServicesHomeDrive
WScript.Echo "Terminal Services Profile Path: " & _
objUser.TerminalServicesProfilePath
WScript.Echo "Enable Remote Control: " & objUser.EnableRemoteControl
WScript.Echo "Broken Connection Action: " & objUser.BrokenConnectionAction
WScript.Echo "Max Connection Time: " & objUser.MaxConnectionTime
WScript.Echo "Max Disconnection Time: " & objUser.MaxDisconnectionTime
WScript.Echo "Max Idle Time: " & objUser.MaxIdleTime
WScript.Echo "Reconnection Action: " & objUser.ReconnectionAction
WScript.Echo "Connect Client Drives At Logon: " & _
objUser.ConnectClientDrivesAtLogon
WScript.Echo "Connect Client Printers At Logon: " & _
objUser.ConnectClientPrintersAtLogon
WScript.Echo "Default To Main Printer: " & _
objUser.DefaultToMainPrinter
WScript.Echo "Terminal Services Initial Program: " & _
objUser.TerminalServicesInitialProgram
WScript.Echo "Terminal Services Work Directory: " & _
objUser.TerminalServicesWorkDirectory
List Terminal Services Remote Control Properties for a User Account
Const Disable = 0
Const EnableInputNotify = 1
Const EnableInputNoNotify = 2
Const EnableNoInputNotify = 3
Const EnableNoInputNoNotify = 4
Set objUser = GetObject _
("LDAP://cn=MyerKen,ou=Management,dc=NA,dc=fabrikam,dc=com")
intEnableRemoteControl= objUser.EnableRemoteControl
Select Case intEnableRemoteControl
Case DisableWScript.Echo "Remote control disabled"
Case EnableInputNotify
WScript.Echo "Remote control enabled"
WScript.Echo "User permission required"
WScript.Echo "Interact with the session"
Case EnableInputNoNotify
WScript.Echo "Remote control enabled"
WScript.Echo "User permission not required"
WScript.Echo "Interact with the session"
Case EnableNoInputNotify
WScript.Echo "Remote control enabled"
WScript.Echo "User permission required"
WScript.Echo "View the session"
Case EnableNoInputNoNotify
WScript.Echo "Remote control enabled"
WScript.Echo "User permission not required"
WScript.Echo "View the session"
End Select
List Terminal Services Session Properties
Set objUser = GetObject _
("LDAP://cn=MyerKen,ou=Management,dc=NA,dc=fabrikam,dc=com")
WScript.echo "Maximum Disconnection Time : " & objUser.MaxDisconnectionTime
WScript.echo "Maximum Connection Time: " & objUser.MaxConnectionTime
WScript.echo "Maximum Idle Time: " & objUser.MaxIdleTime
WScript.echo "Broken Connection Action: " & objUser.BrokenConnectionAction
WScript.echo "Reconnection Action : " & objUser.ReconnectionAction
Modify Terminal Services Environment Properties for a User Account
Const Enabled = 1
Const Disabled = 0
Set objUser = GetObject _
("LDAP://cn=MyerKen,ou=Management,dc=NA,dc=fabrikam,dc=com")
objUser.ConnectClientDrivesAtLogon = Enabled
objUser.ConnectClientPrintersAtLogon = Enabled
objUser.DefaultToMainPrinter = Enabled
objUser.TerminalServicesInitialProgram = "cmd"
objUser.TerminalServicesWorkDirectory = "c:\temp"
objUser.SetInfo
Modify Terminal Services Profile Properties for a User Account
Const Enabled = 1
Const Disabled = 0
Set objUser = GetObject _
("LDAP://cn=MyerKen,ou=Management,dc=NA,dc=fabrikam,dc=com")
objUser.TerminalServicesProfilePath = ""
objUser.TerminalServicesHomeDirectory = ""
objUser.TerminalServicesHomeDrive = ""
objUser.AllowLogon = Enabled
objUser.SetInfo
Modify Terminal Services Session Properties for a User Account
Const Enabled = 1
Const Disabled = 0
Set objUser = GetObject _
("LDAP://cn=MyerKen,ou=Management,dc=NA,dc=fabrikam,dc=com")
objUser.MaxDisconnectionTime = 2880
objUser.MaxConnectionTime = 1440
objUser.MaxIdleTime = 180
objUser.BrokenConnectionAction = Enabled
objUser.ReconnectionAction = Enabled
objUser.SetInfo
Add a Hard Disk Connection to a Virtual Machine
On Error Resume Next
Set objVS = CreateObject("VirtualServer.Application")
Set objVM = objVS.FindVirtualMachine("Windows 2000 Server")
Set objDrive = objVM.AddHardDiskConnection _
("c:\Virtual Machines\Windows 2000 Server Hard Disk.vhd",0,0,0)
Add a SCSI Controller to a Virtual Machine
On Error Resume Next
Set objVS = CreateObject("VirtualServer.Application")
Set objVM = objVS.FindVirtualMachine("Windows 2000 Server")
objVM.AddSCSIController()
Attach a DVD Host Drive to all Virtual Machines
On Error Resume Next
Set objVS = CreateObject("VirtualServer.Application")
set colVMs = objVS.VirtualMachines
For Each objVM in colVMS
Set colDVDDrives = objVM.DVDROMDrives
For Each objDrive in colDVDDrives
errReturn = objDrive.AttachHostDrive("D")
Next
Next
Attach a DVD Image to all Virtual Machines
On Error Resume Next
Set objVS = CreateObject("VirtualServer.Application")
set colVMs = objVS.VirtualMachines
For Each objVM in colVMS
Set colDVDDrives = objVM.DVDROMDrives
For Each objDrive in colDVDDrives
errReturn = objDrive.AttachImage _
("C:\Virtual Machines\Images\VMAdditions013107.iso")
Next
Next
Attach a Floppy Drive to All Virtual Machines
On Error Resume Next
Set objVS = CreateObject("VirtualServer.Application")
set colVMs = objVS.VirtualMachines
For Each objVM in colVMS
Set colFloppyDrives = objVM.FloppyDrives
For Each objDrive in colFloppyDrives
errReturn = objDrive.AttachHostDrive("A")
Next
Next
Attach a Floppy Image to All Virtual Machines
On Error Resume Next
Set objVS = CreateObject("VirtualServer.Application")
set colVMs = objVS.VirtualMachines
For Each objVM in colVMS
Set colFloppyDrives = objVM.FloppyDrives
For Each objDrive in colFloppyDrives
errReturn = objDrive.AttachImage _
("C:\Virtual Machines\Additions\Dos Virtual Machine Additions.vfd")
Next
Next
Compact a Virtual Hard Disk
On Error Resume Next
Set objVS = CreateObject("VirtualServer.Application")
set colVMs = objVS.VirtualMachines
For Each objVM in colVMS
Set colHardDiskConnections = objVM.HardDiskConnections
For Each objDrive in colHardDiskConnections
Set objHardDisk = objDrive.HardDisk
objHardDisk.Compact()
Next
Next
Create a Floppy Image
On Error Resume Next
Const vmFloppyDiskImage_HighDensity = 2
Set objVS = CreateObject("VirtualServer.Application")
errReturn = objVS.CreateFloppyDiskImage _
("C:\Virtual Machines\Images\\Test.vfd", vmFloppyDiskImage_HighDensity)
Create a Virtual Server Dynamic Hard Disk
On Error Resume Next
Set objVS = CreateObject("VirtualServer.Application")
errReturn = objVS.CreateDynamicVirtualHardDisk _
("C:\Virtual Machines\Disks\Scripted_HardDisk.vhd", 20)
Create a Virtual Server Fixed Hard Disk
On Error Resume Next
Set objVS = CreateObject("VirtualServer.Application")
errReturn = objVS.CreateFixedVirtualHardDisk _
("C:\Virtual Machines\Disks\Fixed_HardDisk.vhd", 20)
Discard Virtual Server Undo Disks
On Error Resume Next
Set objVS = CreateObject("VirtualServer.Application")
Set objVM = objVS.FindVirtualMachine("Windows 2000 Server")
objVM.DiscardUndoDisks()
List Virtual Machine DVD Information
On Error Resume Next
Set objVS = CreateObject("VirtualServer.Application")
set colVMs = objVS.VirtualMachines
For Each objVM in colVMS
Set colDVDDrives = objVM.DVDROMDrives
For Each objDrive in colDVDDrives
Wscript.Echo "Virtual machine: " & objVM.Name
Wscript.Echo "Attachment: " & objDrive.Attachment
Wscript.Echo "Bus number: " & objDrive.BusNumber
Wscript.Echo "Bus type: " & objDrive.BusType
Wscript.Echo "Device number: " & objDrive.DeviceNumber
Wscript.Echo "Host drive letter: " & objDrive.HostDriveLetter
Wscript.Echo "Image file: " & objDrive.ImageFile
Wscript.Echo
Next
Next
List Virtual Machine Floppy Drive Information
On Error Resume Next
Set objVS = CreateObject("VirtualServer.Application")
set colVMs = objVS.VirtualMachines
For Each objVM in colVMS
Set colFloppyDrives = objVM.FloppyDrives
For Each objDrive in colFloppyDrives
Wscript.Echo "Virtual machine: " & objVM.Name
Wscript.Echo "Attachment: " & objDrive.Attachment
Wscript.Echo "Drive number: " & objDrive.DriveNumber
Wscript.Echo "Host drive letter: " & objDrive.HostDriveLetter
Wscript.Echo "Image file: " & objDrive.ImageFile
Wscript.Echo
Next
Next
List Virtual Machine SCSI Controller Information
On Error Resume Next
Set objVS = CreateObject("VirtualServer.Application")
set colVMs = objVS.VirtualMachines
For Each objVM in colVMS
Set colSCSIControllers = objVM.SCSIControllers
For Each objController in colSCSIControllers
Wscript.Echo "Virtual machine: " & objVM.Name
Wscript.Echo "ID: " & objController.ID
Wscript.Echo "Is bus shared: " & objController.IsBusShared
Wscript.Echo "SCSI ID: " & objController.SCSIID
Wscript.Echo
Next
Next
List Virtual Server Floppy Image Type
On Error Resume Next
Set objVS = CreateObject("VirtualServer.Application")
strImageType = objVS.GetFloppyDiskImageType _
("C:\Virtual Machines\Images\Dos Virtual Machine Additions.vfd")
Wscript.Echo "Image type: " & strImageType
List Virtual Server Hard Disk Connection Information
On Error Resume Next
Set objVS = CreateObject("VirtualServer.Application")
set colVMs = objVS.VirtualMachines
For Each objVM in colVMS
Set colHardDiskConnections = objVM.HardDiskConnections
For Each objDrive in colHardDiskConnections
Wscript.Echo "Virtual machine: " & objVM.Name
Wscript.Echo "Bus number: " & objDrive.BusNumber
Wscript.Echo "Bus type: " & objDrive.BusType
Wscript.Echo "Device number: " & objDrive.DeviceNumber
Set objHardDisk = objDrive.HardDisk
Wscript.Echo "Hard disk file: " & objHardDisk.File
Wscript.Echo "Host drive identifier: " & _
objHardDisk.HostDriveIdentifier
Wscript.Echo "Host free disk space: " & objHardDisk.HostFreeDiskSpace
Wscript.Echo "Host volume identifier: " & _
objHardDisk.HostVolumeIdentifier
Wscript.Echo "Size in guest: " & objHardDisk.SizeInGuest
Wscript.Echo "Size on host: " & objHardDisk.SizeOnHost
Wscript.Echo "Type: " & objHardDisk.Type
Set objUndoDrive = objDrive.UndoHardDisk
Wscript.Echo "Hard disk file: " & objUndoDrive.File
Next
Next
List Virtual Server Hard Disk Information
On Error Resume Next
Set objVS = CreateObject("VirtualServer.Application")
Set objHardDisk = objVS.GetHardDisk _
("C:\Virtual Machines\Disks\Windows 2000 Server Hard Disk.vhd")
Wscript.Echo "Hard disk type: " & objHardDisk.Type
Merge Virtual Machine Undo Disks
On Error Resume Next
Set objVS = CreateObject("VirtualServer.Application")
Set objVM = objVS.FindVirtualMachine("Windows 2000 Server")
objVM.MergeUndoDisks()
Release a Virtual Machine DVD Image
On Error Resume Next
Set objVS = CreateObject("VirtualServer.Application")
Set objVM = objVS.FindVirtualMachine("Windows 2000 Server")
Set colDVDDrives = objVM.DVDROMDrives
For Each objDrive in colDVDDrives
errReturn = objDrive.ReleaseImage()
Next
Release a Virtual Machine Floppy Drive
On Error Resume Next
Set objVS = CreateObject("VirtualServer.Application")
set colVMs = objVS.VirtualMachines
For Each objVM in colVMS
Set colFloppyDrives = objVM.FloppyDrives
For Each objDrive in colFloppyDrives
errReturn = objDrive.ReleaseHostDrive()
Next
Next
Release a Virtual Machine Floppy Image
On Error Resume Next
Set objVS = CreateObject("VirtualServer.Application")
set colVMs = objVS.VirtualMachines
For Each objVM in colVMS
Set colFloppyDrives = objVM.FloppyDrives
For Each objDrive in colFloppyDrives
errReturn = objDrive.ReleaseImage()
Next
Next
Release a Virtual Machine Host Drive
On Error Resume Next
Set objVS = CreateObject("VirtualServer.Application")
set colVMs = objVS.VirtualMachines
For Each objVM in colVMS
Set colDVDDrives = objVM.DVDROMDrives
For Each objDrive in colDVDDrives
errReturn = objDrive.ReleaseHostDrive
Next
Next
Remove a Virtual Machine DVD Drive
On Error Resume Next
Set objVS = CreateObject("VirtualServer.Application")
Set objVM = objVS.FindVirtualMachine("Windows 2000 Server")
Set colDVDDrives = objVM.DVDROMDrives
For Each objDrive in colDVDDrives
errReturn = objVM.RemoveDVDROMDrive(objDrive)
Next
Remove a Virtual Machine SCSI Controller
On Error Resume Next
Set objVS = CreateObject("VirtualServer.Application")
Set objVM = objVS.FindVirtualMachine("Windows 2000 Server")
Set colControllers = objVM.SCSIControllers
For Each objController in colControllers
objVM.RemoveSCSIController(objController)
Next
Remove a Virual Server Hard Disk Connection
On Error Resume Next
Set objVS = CreateObject("VirtualServer.Application")
Set objVM = objVS.FindVirtualMachine("Windows 2000 Server")
Set colConnections = objVM.HardDiskConnections
For Each objConnection in colConnections
objVM.RemoveHardDiskConnection(objConnection)
Next
ListGuest Operating System Information for a Virtual Machine
On Error Resume Next
Set objVS = CreateObject("VirtualServer.Application")
Set objVM = objVS.FindVirtualMachine("Windows 2000 Server")
Set objGuestOS = objVM.GuestOS
Wscript.Echo "Additions version: " &objGuestOS.AdditionsVersion
Wscript.Echo "Can shut down: " &objGuestOS.CanShutdown
Wscript.Echo "Heartbeat percentage: " &objGuestOS.HeartbeatPercentage
Wscript.Echo "Is heart beating: " &objGuestOS.IsHeartbeating
Wscript.Echo "Is host time synchronization enabled: " & _
objGuestOS.IsHostTimeSyncEnabled
Wscript.Echo "OS name: " &objGuestOS.OSName
List Basic Virtual Machine Information
On Error Resume Next
Set objVS = CreateObject("VirtualServer.Application")
set colVMs = objVS.VirtualMachines
For Each objVM in colVMS
Wscript.Echo "Account name: " & objVM.accountname
Wscript.Echo "Account name and password: " & objVM.Accountnameandpassword
Wscript.Echo "Autostart at launch: " & objVM.Autostartatlaunch
Wscript.Echo "Autostart at launch delay: " & objVM.Autostartatlaunchdelay
Wscript.Echo "Baseboard serial number: " & objVM.Baseboardserialnumber
Wscript.Echo "BIOS GUID: " & objVM.BIOSGUID
Wscript.Echo "BIOS serial number: " & objVM.BIOSerialNumber
Wscript.Echo "Chassis asset tag: " & objVM.ChassisAssetTag
Wscript.Echo "Chassis serial number: " & objVM.ChassisSerialNumber
Wscript.Echo "Config ID: " & objVM.ConfigID
Wscript.Echo "Display: " & objVM.Display
Wscript.Echo "File: " & objVM.File
Wscript.Echo "Floppy autodetect enabled: " & objVM.FloppyAutoDetectEnabled
Wscript.Echo "Gues OS: " & objVM.GuestOS
Wscript.Echo "Has MMX: " & objVM.HasMMX
Wscript.Echo "Has SSE: " & objVM.HasSSE
Wscript.Echo "Has SSE2: " & objVM.HasSSE2
Wscript.Echo "Keyboard: " & objVM.Keyboard
Wscript.Echo "Memory: " & objVM.Memory
Wscript.Echo "Mouse: " & objVM.Mouse
Wscript.Echo "Name: " & objVM.Name
Wscript.Echo "Notes: " & objVM.Notes
Wscript.Echo "Processor speed: " & objVM.ProcessorSpeed
Wscript.Echo "Run as defined account: " & objVM.RunAsDefinedAccount
Wscript.Echo "Saved state file path: " & objVM.SavedStateFilePath
Wscript.Echo "Shutdown action on quit: " & objVM.ShutdownActionOnQuit
Wscript.Echo "State: " & objVM.State
Wscript.Echo "Undoable: " & objVM.Undoable
Wscript.Echo "Undo action: " & objVM.UndoAction
Wscript.Echo
Next
List Virtual Machine Keyboard Information
On Error Resume Next
Set objVS = CreateObject("VirtualServer.Application")
set colVMs = objVS.VirtualMachines
For Each objVM in colVMS
Set objKeyboard = objVM.Keyboard
Wscript.Echo objVM.Name
Wscript.Echo "Has exclusive access: " & objKeyboard.HasExclusiveAccess
Wscript.Echo
Next
List Virtual Machine Mouse Information
On Error Resume Next
Set objVS = CreateObject("VirtualServer.Application")
set colVMs = objVS.VirtualMachines
For Each objVM in colVMS
Set objMouse = objVM.Mouse
Wscript.Echo objVM.Name
Wscript.Echo "Horizontal position: " & objMouse.HorizontalPosition
Wscript.Echo "Scroll wheel position: " & objMouse.ScrollWheelPosition
Wscript.Echo "Using absolute coordinates position: " & _
objMouse.UsingAbsoluteCoordinatesPosition
Wscript.Echo "Vertical position: " & objMouse.VerticalPosition
Wscript.Echo
Next
List Virtual Machine Parallel Port Information
On Error Resume Next
Set objVS = CreateObject("VirtualServer.Application")
set colVMs = objVS.VirtualMachines
For Each objVM in colVMS
Set colPorts = objVM.ParallelPorts
For Each objPort in colPorts
Wscript.Echo "Virtual machine: " & objVM.Name
Wscript.Echo "Name: " & objPort.Name
Wscript.Echo
Next
Next
List Virtual Machine Serial Port Information
On Error Resume Next
Set objVS = CreateObject("VirtualServer.Application")
set colVMs = objVS.VirtualMachines
For Each objVM in colVMS
Set colPorts = objVM.SerialPorts
For Each objPort in colPorts
Wscript.Echo "Virtual machine: " & objVM.Name
Wscript.Echo "Connect immediately: " & objPort.ConnectImmediately
Wscript.Echo "Name: " & objPort.Name
Wscript.Echo "Type: " & objPort.Type
Wscript.Echo
Next
Next
List Virtual Server Accountant Information
On Error Resume Next
Set objVS = CreateObject("VirtualServer.Application")
set colVMs = objVS.VirtualMachines
For Each objVM in colVMS
Set colAccountants = objVM.Accountant
Wscript.Echo "Virtual machine: " & objVM.Name
Wscript.Echo "Allowable maximum system capacity: " & _
colAccountants.AllowableMaximumSystemCapacity
Wscript.Echo "Allowable reserved system capacity: " & _
colAccountants.AllowableReservedSystemCapacity
Wscript.Echo "CPU utilization: " & colAccountants.CPUUtilization
i = 1
Wscript.Echo "CPU utilization history:"
For Each intCPUUtilization in colAccountants.CPUUtilizationHistory
Wscript.Echo vbTab & i & " -- " & intCPUUtilization
i = i + 1
Next
Wscript.Echo "Disk bytes read: " & colAccountants.DiskBytesRead
Wscript.Echo "Disk bytes written: " & colAccountants.DiskBytesWritten
Wscript.Echo "Host disk utilization: " & _
colAccountants.HostDiskUtilization
Wscript.Echo "Host memory utilization: " & _
colAccountants.HostMemoryUtilization
Wscript.Echo "Maximum system capacity: " & _
colAccountants.MaximumSystemCapacity
Wscript.Echo "Network bytes received: " & _
colAccountants.NetworkBytesReceived
Wscript.Echo "Network bytes sent: " & colAccountants.NetworkBytesSent
Wscript.Echo "Relative weight: " & colAccountants.RelativeWeight
Wscript.Echo "Reserved system capacity: " & _
colAccountants.ReservedSystemCapacity
Wscript.Echo "Uptime: " & colAccountants.Uptime
Wscript.Echo
Next
List Virtual Server Display Information
On Error Resume Next
Set objVS = CreateObject("VirtualServer.Application")
set colVMs = objVS.VirtualMachines
For Each objVM in colVMS
Set objDisplay = objVM.Display
Wscript.Echo objVM.Name
Wscript.Echo "Height: " & objDisplay.Height
Wscript.Echo "Video mode: " & objDisplay.VideoMode
Wscript.Echo "Width: " & objDisplay.Width
Wscript.Echo
Next
List Virtual Server Host Information
On Error Resume Next
Set objVS = CreateObject("VirtualServer.Application")
Set objHost = objVS.HostInfo
Wscript.Echo "Logical processor count: " & objHost.LogicalProcessorCount
Wscript.Echo "Memory: " & objHost.Memory
Wscript.Echo "Memory available: " & objHost.MemoryAvail
Wscript.Echo "Memory available string: " & objHost.MemoryAvailString
Wscript.Echo "Memory total string: " & objHost.MemoryTotalString
Wscript.Echo "MMX: " & objHost.MMX
Wscript.Echo "Operating system: " & objHost.OperatingSystem
Wscript.Echo "OS major version: " & objHost.OSMajorVersion
Wscript.Echo "OS minor version: " & objHost.OSMinorVersion
Wscript.Echo "OS service pack string: " & objHost.OSServicePackString
Wscript.Echo "OS version string: " & objHost.OSVersionString
Wscript.Echo "Parallel port: " & objHost.ParallelPort
Wscript.Echo "Physical processor count: " & objHost.PhysicalProcessorCount
Wscript.Echo "Processor features string: " & objHost.ProcessorFeaturesString
Wscript.Echo "Processor manufacturer string: " & _
objHost.ProcessorManufacturerString
Wscript.Echo "Processor speed: " & objHost.ProcessorSpeed
Wscript.Echo "Processor speed string: " & objHost.ProcessorSpeedString
Wscript.Echo "Processor version string: " & objHost.ProcessorVersionString
Wscript.Echo "SSE: " & objHost.SSE
Wscript.Echo "SSE2: " & objHost.SSE2
Wscript.Echo "3DNow!: " & objHost.ThreeDNow
Wscript.Echo "UTC time: " & objHost.UTCTime
List Virtual Server Properties
On Error Resume Next
Set objVS = CreateObject("VirtualServer.Application")
Wscript.Echo "Available system capacity: " & objVS.AvailableSystemCapacity
Wscript.Echo "Default additions path: " & objVS.DefaultAdditionsPath
Wscript.Echo "Default VM configuration path: " & _
objVS.DefaultVMConfigurationPath
Wscript.Echo "Default VN configuration path: " & _
objVS.DefaultVNConfigurationPath
Wscript.Echo "Disk image search paths: " & objVS.DiskImageSearchPaths
Wscript.Echo "Existing configuration paths: " & _
objVS.ExistingConfigurationPaths
Wscript.Echo "Maximum floppy drives per VM: " & objVS.MaximumFloppyDrivesPerVM
Wscript.Echo "Maximum memory per VM: " & objVS.MaximumMemoryPerVM
Wscript.Echo "Maximum network adapters per VM: " & _
objVS.MaximumNetworkAdaptersPerVM
Wscript.Echo "Maximum number of IDE buses: " & objVS.MaximumNumberOfIDEBuses
Wscript.Echo "Maximum nmber of SCSI controllers: " & _
objVS.MaximumNumberOfSCSIControllers
Wscript.Echo "Maximum parallel ports per VM: " & _
objVS.MaximumParallelPortsPerVM
Wscript.Echo "Maximum serial ports per VM: " & objVS.MaximumSerialPortsPerVM
Wscript.Echo "Minimum memory per VM: " & objVS.MinimumMemoryPerVM
Wscript.Echo "Name: " & objVS.Name
Wscript.Echo "Product ID: " & objVS.ProductID
Wscript.Echo "Script search paths: " & objVS.ScriptSearchPaths
Wscript.Echo "Suggested maximum memory per VM: " & _
objVS.SuggestedMaximumMemoryPerVM
Wscript.Echo "Uptime: " & objVS.Uptime
Wscript.Echo "Version: " & objVS.Version
Wscript.Echo "VMRC admin address: " & objVS.VMRCAdminAddress
Wscript.Echo "VMRC admin port number: " & objVS.VMRCAdminPortNumber
Wscript.Echo "VMRC authenticator: " & objVS.VMRCAuthenticator
Wscript.Echo "VMRC enabled: " & objVS.VMRCEnabled
Wscript.Echo "VMRC encryption certificate: " & objVS.VMRCEncryptionCertificate
Wscript.Echo "VMRC encryption certificate request: " & _
objVS.VMRCEncryptionCertificateRequest
Wscript.Echo "VMRC encryption enabled: " & objVS.VMRCEncryptionEnabled
Wscript.Echo "VMRC idle connection timeout: " & objVS.VMRCIdleConnectionTimeout
Wscript.Echo "VMRC idle connection timeout enabled: " & _
objVS.VMRCIdleConnectionTimeoutEnabled
Wscript.Echo "VMRC X-Resolution: " & objVS.VMRCXResolution
Wscript.Echo "VMRC Y-Resolution: " & objVS.VMRCYResolution
List Virtual Server Security Information
On Error Resume Next
Set objVS = CreateObject("VirtualServer.Application")
Set objSecurity = objVS.Security
Wscript.Echo "Group name: " & objSecurity.GroupName
Wscript.Echo "Group SID: " & objSecurity.GroupSID
Wscript.Echo "Owner name: " & objSecurity.OwnerName
Wscript.Echo "Owner name: " & objSecurity.OwnerSID
List Virtual Server Support Driver Information
On Error Resume Next
Set objVS = CreateObject("VirtualServer.Application")
set colDrivers = objVS.SupportDrivers
For Each objDriver in colDrivers
Wscript.Echo "Date: " & objDriver.Date
Wscript.Echo "Description: " & objDriver.Description
Wscript.Echo "Manufacturer: " & objDriver.Manufacturer
Wscript.Echo "Provider: " & objDriver.Provider
Wscript.Echo "Type: " & objDriver.Type
Wscript.Echo "Version: " & objDriver.Version
Wscript.Echo
Next
Modify a Virtual Machine Property
On Error Resume Next
Set objVS = CreateObject("VirtualServer.Application")
Set objVM = objVS.FindVirtualMachine("Windows 2000 Server")
objVM.Notes = "This is a Windows 2000 virtual machine."
Modify Virtual Server Display Dimensions
On Error Resume Next
Set objVS = CreateObject("VirtualServer.Application")
Set objVM = objVS.FindVirtualMachine("Windows 2000 Server")
Set objDisplay = objVM.Display
errReturn = objDisplay.SetDimensions(800,600)
Create a Virtual Machine
On Error Resume Next
Set objVS = CreateObject("VirtualServer.Application")
errReturn = objVS.CreateVirtualMachine("Scripted Machine", _
"C:\Scripts\Shared Virtual Machines\Scripted")
Delete a Virtual Machine
On Error Resume Next
Set objVS = CreateObject("VirtualServer.Application")
Set objVM = objVS.FindVirtualMachine("Scripted Machine")
errReturn = objVS.DeleteVirtualMachine(objVM)
Discard the Saved State of a Virtual Machine
On Error Resume Next
Set objVS = CreateObject("VirtualServer.Application")
Set objVM = objVS.FindVirtualMachine("Windows 2000 Server")
errReturn = objVM.DiscardSavedState()
Install Virtual Machine Additions
On Error Resume Next
Set objVS = CreateObject("VirtualServer.Application")
Set objVM = objVS.FindVirtualMachine("Windows 2000 Server")
Set objGuestOS = objVM.GuestOS
objGuestOS.InstallAdditions()
List Virtual Server Tasks
On Error Resume Next
Set objVS = CreateObject("VirtualServer.Application")
set colTasks = objVS.Tasks
For Each objTask in colTasks
Wscript.Echo "Description: " & objTask.Description
Wscript.Echo "ID: " & objTask.ID
Wscript.Echo "Is cancellable: " & objTask.IsCancelable
Wscript.Echo "Is complete: " & objTask.IsComplete
Wscript.Echo "Percent completed: " & objTask.PercentCompleted
Wscript.Echo "Result: " & objTask.Result
Wscript.Echo
Next
Modify Virtual Machine Scheduling Parameters
On Error Resume Next
Set objVS = CreateObject("VirtualServer.Application")
Set objVM = objVS.FindVirtualMachine("Windows 2000 Server")
Set objAccountant = objVM.Accountant
errReturn = objAccountant.SetSchedulingParameters(99,99,99)
Pause a Virtual Machine
On Error Resume Next
Set objVS = CreateObject("VirtualServer.Application")
Set objVM = objVS.FindVirtualMachine("Windows 2000 Server")
objVM.Pause()
Register a Virtual Machine
On Error Resume Next
Set objVS = CreateObject("VirtualServer.Application")
errReturn = objVS.RegisterVirtualMachine("Windows 2000 Server", _
"C:\Virtual Machines")
Resume a Virtual Machine
On Error Resume Next
Set objVS = CreateObject("VirtualServer.Application")
Set objVM = objVS.FindVirtualMachine("Windows 2000 Server")
objVM.Resume()
Return Virtual Machine Mouse Button Status
On Error Resume Next
Set objVS = CreateObject("VirtualServer.Application")
Set objVM = objVS.FindVirtualMachine("Windows 2000 Server")
Set objMouse = objVM.Mouse
errReturn = objMouse.GetButton(1)
Wscript.Echo errReturn
Save the Virtual Machine State
On Error Resume Next
Set objVS = CreateObject("VirtualServer.Application")
Set objVM = objVS.FindVirtualMachine("Windows 2000 Server")
errReturn = objVM.Save()
Search for a Virtual Machine
On Error Resume Next
Set objVS = CreateObject("VirtualServer.Application")
Set objVM = objVS.FindVirtualMachine("Windows 2000 Server")
Wscript.Echo "File: " & objVM.File
Shut Down the Guest Operating System on a Virtual Machine
On Error Resume Next
Set objVS = CreateObject("VirtualServer.Application")
Set objVM = objVS.FindVirtualMachine("Windows 2000 Server")
Set objGuestOS = objVM.GuestOS
objGuestOS.Shutdown()
Start a Virtual Machine
On Error Resume Next
Set objVS = CreateObject("VirtualServer.Application")
Set objVM = objVS.FindVirtualMachine("Windows 2000 Server")
objVM.Startup()
Turn Off a Virtual Machine
On Error Resume Next
Set objVS = CreateObject("VirtualServer.Application")
Set objVM = objVS.FindVirtualMachine("Windows 2000 Server")
objVM.Turnoff()
Unregister a Virtual Machine
On Error Resume Next
Set objVS = CreateObject("VirtualServer.Application")
Set objVM = objVS.FindVirtualMachine("Windows 2000 Server")
errReturn = objVS.UnregisterVirtualMachine(objVM)
Add a Network Adapter to a Virtual Machines
On Error Resume Next
Set objVS = CreateObject("VirtualServer.Application")
Set objVM = objVS.FindVirtualMachine("Windows 2000 Server")
objVM.AddNetworkAdapter()
Attach a Virtual Network to a Virtual Network Adapter
On Error Resume Next
Set objVS = CreateObject("VirtualServer.Application")
Set objVM = objVS.FindVirtualMachine("Windows 2000 Server")
Set objNetwork = objVS.FindVirtualNetwork("Internal Network")
Set colNetworkAdapters = objVM.NetworkAdapters
For Each objNetworkAdapter in colNetworkAdapters
errReturn = objNetworkAdapter.AttachToVirtualNetwork(objNetwork)
Next
Create a Virtual Network
On Error Resume Next
Set objVS = CreateObject("VirtualServer.Application")
errReturn = objVS.CreateVirtualNetwork _
("Scripted Network","C:\Virtual Machines")
Delete a Virtual Network
On Error Resume Next
Set objVS = CreateObject("VirtualServer.Application")
Set objNetwork = objVS.FindVirtualNetwork("Scripted Network")
errReturn = objVS.DeleteVirtualNetwork(objNetwork)
Delete All Virtual Machine Network Adapters
On Error Resume Next
Set objVS = CreateObject("VirtualServer.Application")
Set objVM = objVS.FindVirtualMachine("Windows 2000 Server")
Set colNetworkAdapters = objVM.NetworkAdapters
For Each objAdapter in colNetworkAdapters
objVM.RemoveNetworkAdapter(objAdapter)
Next
Detach a Network Adapter from a Virtual Machine
On Error Resume Next
Set objVS = CreateObject("VirtualServer.Application")
Set objVM = objVS.FindVirtualMachine("Windows 2000 Server")
Set colNetworkAdapters = objVM.NetworkAdapters
For Each objNetworkAdapter in colNetworkAdapters
errReturn = objNetworkAdapter.DetachFromVirtualNetwork()
Next
List All Virtual Networks
On Error Resume Next
Set objVS = CreateObject("VirtualServer.Application")
Set colNetworks = objVS.VirtualNetworks
For Each objNetwork in colNetworks
Wscript.Echo "Bytes dropped: " & objNetwork.BytesDropped
Wscript.Echo "Bytes received: " & objNetwork.BytesReceived
Wscript.Echo "Bytes sent: " & objNetwork.BytesSent
Wscript.Echo "File: " & objNetwork.File
Wscript.Echo "Host adapter: " & objNetwork.HostAdapter
Wscript.Echo "Name: " & objNetwork.Name
Wscript.Echo "Notes: " & objNetwork.Notes
Wscript.Echo "Packets dropped: " & objNetwork.PacketsDropped
Wscript.Echo "Packets received: " & objNetwork.PacketsReceived
Wscript.Echo "Packets sent: " & objNetwork.PacketsSent
Wscript.Echo
Next
List Network Adapter Information for All Virtual Machines
On Error Resume Next
Set objVS = CreateObject("VirtualServer.Application")
set colVMs = objVS.VirtualMachines
For Each objVM in colVMS
Set colNetworkAdapters = objVM.NetworkAdapters
For Each objAdapter in colNetworkAdapters
Wscript.Echo "Virtual machine: " & objVM.Name
Wscript.Echo "Network adapter ID: " & objAdapter.ID
Wscript.Echo "Ethernet address: " & objAdapter.EthernetAddress
Wscript.Echo "Is ethernet address dynamic: " & _
objAdapter.IsEthernetAddressDynamic
Wscript.Echo "Virtual machine: " & objAdapter.VirtualMachine
Wscript.Echo "Virtual network: " & objAdapter.VirtualNetwork
Wscript.Echo
Next
Next
List Virtual DHCP Server Information
On Error Resume Next
Set objVS = CreateObject("VirtualServer.Application")
Set objNetwork = objVS.FindVirtualNetwork("Internal Network")
Set objDHCPServer = objNetwork.DHCPVirtualNetworkServer
Wscript.Echo "Default gateway address: " & objDHCPServer.DefaultGatewayAddress
Wscript.Echo "DNS servers: " & objDHCPServer.DNSServers
Wscript.Echo "Ending IP address: " & objDHCPServer.EndingIPAddress
Wscript.Echo "Is enabled: " & objDHCPServer.IsEnabled
Wscript.Echo "Lease rebinding time: " & objDHCPServer.LeaseRebindingTime
Wscript.Echo "Lease renewal time: " & objDHCPServer.LeaseRenewalTime
Wscript.Echo "Lease time: " & objDHCPServer.LeaseTime
Wscript.Echo "Network: " & objDHCPServer.Network
Wscript.Echo "Network mask: " & objDHCPServer.NetworkMask
Wscript.Echo "Server IP address: " & objDHCPServer.ServerIPAddress
Wscript.Echo "Starting IP address: " & objDHCPServer.StartingIPAddress
Wscript.Echo "WINS Server: " & objDHCPServer.WINSServers
Modify a Virtual Network Property
On Error Resume Next
Set objVS = CreateObject("VirtualServer.Application")
Set objNetwork = objVS.FindVirtualNetwork("Scripted Network")
objNetwork.Notes = "This note was added via a script."
Modify Virtual Server DHCP Lease Times
On Error Resume Next
Set objVS = CreateObject("VirtualServer.Application")
Set objNetwork = objVS.FindVirtualNetwork("Internal Network")
Set objDHCPServer = objNetwork.DHCPVirtualNetworkServer
errReturn = objDHCPServer.ConfigureDHCPLeaseTimes(129630,64830,97230)
Register a Virtual Network
On Error Resume Next
Set objVS = CreateObject("VirtualServer.Application")
errReturn = objVS.RegisterVirtualNetwork _
("Scripted Network","C:\Virtual Machines")
Search for a Virtual Network
On Error Resume Next
Set objVS = CreateObject("VirtualServer.Application")
Set objNetwork = objVS.FindVirtualNetwork("Scripted Network")
Unregister a Virtual Network
On Error Resume Next
Set objVS = CreateObject("VirtualServer.Application")
Set objNetwork = objVS.FindVirtualNetwork("Scripted Network")
errReturn = objVS.UnregisterVirtualNetwork(objNetwork)
List Current User Virtual Server Access Rights
On Error Resume Next
Set objVS = CreateObject("VirtualServer.Application")
Set objSecurity = objVS.Security
Set objAccessRights = objSecurity.CurrentUserAccessRights
Wscript.Echo "Change permissions: " & objAccessRights.ChangePermissions
Wscript.Echo "Delete access: " & objAccessRights.DeleteAccess
Wscript.Echo "Execute access: " & objAccessRights.ExecuteAccess
Wscript.Echo "Flags: " & objAccessRights.Flags
Wscript.Echo "Name: " & objAccessRights.Name
Wscript.Echo "Read access: " & objAccessRights.ReadAccess
Wscript.Echo "Read permissions: " & objAccessRights.ReadPermissions
Wscript.Echo "SID: " & objAccessRights.SID
Wscript.Echo "Special access: " & objAccessRights.SpecialAccess
Wscript.Echo "Type: " & objAccessRights.Type
Wscript.Echo "Write access: " & objAccessRights.WriteAccess
List Virtual Server Access Rights
On Error Resume Next
Set objVS = CreateObject("VirtualServer.Application")
Set objSecurity = objVS.Security
Set colAccessRights = objSecurity.AccessRights
For Each objAccessRight in colAccessRights
Wscript.Echo "Change permissions: " & objAccessRight.ChangePermissions
Wscript.Echo "Delete access: " & objAccessRight.DeleteAccess
Wscript.Echo "Execute access: " & objAccessRight.ExecuteAccess
Wscript.Echo "Flags: " & objAccessRight.Flags
Wscript.Echo "Name: " & objAccessRight.Name
Wscript.Echo "Read access: " & objAccessRight.ReadAccess
Wscript.Echo "Read permissions: " & objAccessRight.ReadPermissions
Wscript.Echo "SID: " & objAccessRight.SID
Wscript.Echo "Special access: " & objAccessRight.SpecialAccess
Wscript.Echo "Type: " & objAccessRight.Type
Wscript.Echo "Write access: " & objAccessRight.WriteAccess
Wscript.Echo
Next
Search for a Virtual Server Security Entry
On Error Resume Next
Set objVS = CreateObject("VirtualServer.Application")
Set objVM = objVS.FindVirtualMachine("Windows 2000 Server")
Set objSecurity = objVM.Security
Set objEntry = objSecurity.FindEntry("bob",0)
Wscript.Echo objEntry.Name
Wscript.Echo objEntry.SID
Search for Virtual Server Access Rights
On Error Resume Next
Set objVS = CreateObject("VirtualServer.Application")
Set objSecurity = objVS.Security
Set objAccessRights = objSecurity.FindEntry("Administrators",0)
Wscript.Echo objAccessRights.Name
Click a Mouse Button in a Virtual Machine
On Error Resume Next
Set objVS = CreateObject("VirtualServer.Application")
Set objVM = objVS.FindVirtualMachine("Windows 2000 Server")
Set objMouse = objVM.Mouse
errReturn = objMouse.SetButton(1, TRUE)
Wscript.Echo errReturn
Click a Mouse Button in a Virtual Machine
On Error Resume Next
Set objVS = CreateObject("VirtualServer.Application")
Set objVM = objVS.FindVirtualMachine("Windows 2000 Server")
Set objMouse = objVM.Mouse
errReturn = objMouse.Click(2)
Display the Client Control About Box
Set objClientControl = CreateObject("MSVMRCActiveXClient.VMRCClientControl")
objClientControl.AboutBox
List Virtual Server Client Control Connection Information
Set objClientControl = CreateObject("MSVMRCActiveXClient.VMRCClientControl")
objClientControl.ShowConnectionInfo
List Virtual Server Client Control Properties
On Error Resume Next
Set objClientControl = CreateObject("MSVMRCActiveXClient.VMRCClientControl")
Wscript.Echo "Administrator mode: " & objClientControl.AdministratorMode
Wscript.Echo "Autosize: " & objClientControl.AutoSize
Wscript.Echo "Enabled: " & objClientControl.Enabled
Wscript.Echo "Host key: " & objClientControl.HostKey
Wscript.Echo "Menu back color: " & objClientControl.MenuBackColor
Wscript.Echo "Menu enabled: " & objClientControl.MenuEnabled
Wscript.Echo "Menu font color: " & objClientControl.MenuFontColor
Wscript.Echo "Menu font size: " & objClientControl.MenuFontSize
Wscript.Echo "Menu height: " & objClientControl.MenuHeight
Wscript.Echo "Ready state: " & objClientControl.ReadyState
Wscript.Echo "Reduced-colors mode: " & objClientControl.ReducedColorsMode
Wscript.Echo "Server address: " & objClientControl.ServerAddress
Wscript.Echo "Server display height: " & objClientControl.ServerDisplayHeight
Wscript.Echo "Server display name: " & objClientControl.ServerDisplayName
Wscript.Echo "Server display width: " & objClientControl.ServerDisplayWidth
Wscript.Echo "Server port: " & objClientControl.ServerPort
Wscript.Echo "State: " & objClientControl.State
Wscript.Echo "View-only mode: " & objClientControl.ViewOnlyMode
List Virtual Server VMRC Authenticators
On Error Resume Next
Set objVS = CreateObject("VirtualServer.Application")
Set colAuthenticators = objVS.VMRCAuthenticators
For Each objAuthenticator in colAuthenticators
Wscript.Echo "Name: " & objAuthenticator.Name
Wscript.Echo "Description: " & objAuthenticator.Description
Wscript.Echo "Type: " & objAuthenticator.Type
Wscript.Echo
Next
Press a Key in a Virtual Machine
On Error Resume Next
Set objVS = CreateObject("VirtualServer.Application")
Set objVM = objVS.FindVirtualMachine("Windows 2000 Server")
Set objKeyboard = objVM.Keyboard
errReturn = objKeyboard.PressKey("Key_LeftCtrl")
errReturn = objKeyboard.PressKey("Key_Escape")
Type ASCII Text in a Virtual Machine
On Error Resume Next
Set objVS = CreateObject("VirtualServer.Application")
Set objVM = objVS.FindVirtualMachine("Windows 2000 Server")
Set objKeyboard = objVM.Keyboard
errReturn = objKeyboard.TypeASCIIText("Test string.")