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.")