;" & _
"(&(objectCategory=Computer)(cn=ATL*));" & _
"ADsPath;subtree"
Set objRecordSet = objCommand.Execute
While Not objRecordset.EOF
strADsPath = objRecordset.Fields("ADsPath")
Set objComputer = GetObject(strADsPath)
objComputer.Put "location", "Atlanta, Georgia"
objComputer.SetInfo
objRecordSet.MoveNext
Wend
WScript.Echo objRecordSet.RecordCount & _
" computers objects modified."
objConnection.Close
读取并使用针对AD对象绑定操作的rootDSE属性
更新日期: 9/12/2003
描述信息
如何利用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
确定用以支持桥头服务器复制功能的协议类型
更新日期: 9/12/2003
描述信息
读取来自站点域控制器的bridgeheadTransportList。
脚本代码
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 dnValue
Next
列举配置容器中的对象名称
更新日期: 9/12/2003
描述信息
获取配置容器中的一级对象名称。
脚本代码
Set objConfiguration = GetObject _
("LDAP://cn=Configuration,dc=fabrikam,dc=com")
For Each objContainer in objConfiguration
WScript.Echo objContainer.Name
Next
将模板添加到 Windows Explorer“新建” 菜单
描述
演示如何将 VBScript 脚本文件添加到 Windows Explorer 中的“新建”上下文菜单。需要把脚本模板放在 \Windows\System32\ShellExt 文件夹中(在 Windows XP 和 Windows .NET Server 上)或 \Winnt\ShellNew 文件夹中 (Windows 2000)。
脚本代码
Set objShell = WScript.CreateObject("WScript.Shell")
objShell.RegWrite "HKCR\.VBS\ShellNew\FileName","template.vbs"
将元素添加到字典
描述
演示脚本将三个 key-item 对添加到脚本运行时字典。此脚本必须运行在本地计算机上。.
脚本代码
Set objDictionary = CreateObject("Scripting.Dictionary")
objDictionary.Add "Printer 1", "Printing"
objDictionary.Add "Printer 2", "Offline"
objDictionary.Add "Printer 3", "Printing"
将‘Command Prompt Here”添加到 Windows Explorer
描述
将’ Command Prompt Here ’命令添加到 Windows Explorer 系统菜单。如果用户从系统菜单中选择‘ Command Prompt Here ’,将弹出一个命令窗口,在与当前的 Windows Explorer 文件夹相同的文件夹中打开。
有关使用 Windows Script Host 写入注册表的信息,请单击 此处。
支持平台
Windows XP | 是 |
Windows Server 2003 | 是 |
Windows 2000 | 是 |
Windows NT 4.0 | 是 |
Windows 98 | 是,但是需要将 cmd.exe 更改为 command.com |
脚本代码
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"
转换 WMI 日期-时间值
描述
演示将 WMI 使用的 Universal Time Coordinate (UTC) 值转换成标准的日期时间值的方法。此脚本检索安装操作系统的日期,并且将 UTC 值传送到名为 WMIDateStringToDate 的函数。此函数将 UTC 值(比如 20011029113047.000000-480)转换为标准日期-时间值(例如 10/29/2001 11:30:47 AM)。
脚本代码
strComputer = "."
Set objWMIService = GetObject("winmgmts:\\" & 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
使用脚本注释创建脚本文档
描述
演示如何使用 FileSystemObject 作为将注释从脚本复制到单独的文本文件中的方法。
脚本代码
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
确定字典中项的数目
描述
演示脚本计算脚本运行时字典中 key-item 对的数目。此脚本必须运行在本地计算机上。
脚本代码
Set objDictionary = CreateObject("Scripting.Dictionary")
objDictionary.Add "Printer 1", "Printing"
objDictionary.Add "Printer 2", "Offline"
objDictionary.Add "Printer 3", "Printing"
Wscript.Echo objDictionary.Count
确定属性是否在全局目录中
描述
确定指定的属性 (given-name) 是否包括在 Active Directory 的全局目录中。
脚本代码
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
确定属性是否是可操作的
描述
确定指定的属性 (Canonical-Name) 是否是 Active Directory 中的可操作属性。
脚本代码
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
确定计算机上的本地时间
描述
报告计算机上的本地时间。
有关在这段代码中使用的 Win32_LocalTime 类别的更多信息,请单击 此处。
支持平台
Windows XP | 是 |
Windows Server 2003 | 是 |
Windows 2000 | 否 |
Windows NT 4.0 | 否 |
Windows 98 | 否 |
脚本代码
strComputer = "."
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
Set colItems = objWMIService.ExecQuery("Select * from Win32_LocalTime")
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
确定对象的 Active Directory 类别类型
描述
确定 organizational-person 对象的 Active Directory 类别类型。
脚本代码
strClassName = "cn=organizational-person"
Set objSchemaClass = GetObject _
("LDAP://" & strClassName & _
",cn=schema,cn=configuration,dc=fabrikam,dc=com")
intClassCategory = objSchemaClass.Get("objectClassCategory")
WScript.StdOut.Write strClassName & " is categorized as "
Select Case intClassCategory
Case 0
WScript.Echo "88"
Case 1
WScript.Echo "structural"
Case 2
WScript.Echo "abstract"
Case 3
WScript.Echo "auxiliary"
End Select
确定 Active Directory 对象的父类
描述
确定 Active Directory 中的 Computer 对象的父类。
脚本代码
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."
确定 UTC 时间
描述
报告计算机上的通用协调时间 (UTC) 。
有关在这段代码中使用的 Win32_LocalTime 类别的更多信息,请单击 此处。
支持平台
Windows XP | 是 |
Windows Server 2003 | 是 |
Windows 2000 | 否 |
Windows NT 4.0 | 否 |
Windows 98 | 否 |
脚本代码
strComputer = "."
Set objWMIService = GetObject("winmgmts:\\" & 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
确定哪些属性已经编制索引和/在全局编录中
描述
确定哪些 Active Directory 属性已经编制索引和哪些属性在全局编录中。
脚本代码
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 = _
";" & _
"(objectClass=attributeSchema);" & _
"lDAPDisplayName, isMemberOfPartialAttributeSet,searchFlags;onelevel"
Set objRecordSet = objCommand.Execute
While Not 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
Wend
objConnection.Close显示域对象的 Six IADs 属性
描述
检索域对象的核心接口的e ADsPath、Class、GUID、Name、Parent 和 Schema 属性。
脚本代码
Set objDomain = GetObject("LDAP://dc=NA,dc=fabrikam,dc=com")
WScript.Echo "ADsPath:" & 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
显示一个所有属性都是单值的列表和一个所有属性都是多值的列表
描述
使用搜索操作读取所有属性架构对象的 isSingleValued 属性。第一个列表其 isSingleValued 属性为 true 的所有属性,而第二个列表显示了其 isSingleValued 属性为 false 的所有属性。
注意:考虑传送此输出到一个文件:
cscript scriptname.vbs > filename.txt
脚本代码
Set objConnection = CreateObject("ADODB.Connection")
objConnection.Open "Provider=ADsDSOObject;"
Set objCommand = CreateObject("ADODB.Command")
objCommand.ActiveConnection = objConnection
objCommand.CommandText = _
";" & _
"(&(objectClass=attributeSchema)(lDAPDisplayName=*));" & _
"lDAPDisplayName,isSingleValued;onelevel"
Set objRecordSet = objCommand.Execute
WScript.Echo "Single-valued attributes " & _
"(by lDAPDisplayName):" & VbCrLf
While Not objRecordSet.EOF
If objRecordset.Fields("isSingleValued") = TRUE Then
Wscript.echo objRecordset.Fields("lDAPDisplayName")
End If
objRecordSet.MoveNext
Wend
objRecordSet.MoveFirst
WScript.Echo VbCrLf & "Multi-valued attributes " & _
"(by lDAPDisplayName):" & VbCrLf
While Not objRecordSet.EOF
If objRecordset.Fields("isSingleValued") = FALSE Then
Wscript.echo objRecordset.Fields("lDAPDisplayName")
End If
objRecordSet.MoveNext
Wend
objConnection.Close枚举 WMI 中的 Abstract 类别
描述
列出 root\cimv2 命名空间中定义的所有 WMI Abstract 类别。
脚本代码
strComputer = "."
Set objWMIService = GetObject("winmgmts:\\" & 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
枚举 Active Directory 类别的所有属性
描述
返回与 Active Directory 中的 Computer 类别相关的所有属性。
脚本代码
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
枚举所有的 WMI 命名空间
描述
列出所有的 WMI 命名空间。
脚本代码
strComputer = "."
Call EnumNameSpaces("root")
Sub EnumNameSpaces(strNameSpace)
WScript.Echo strNameSpace
Set objWMIService = GetObject("winmgmts:\\" & strComputer & _
"\" & strNameSpace)
Set colNameSpaces = objWMIService.InstancesOf("__NAMESPACE")
For Each objNameSpace In colNameSpaces
Call EnumNameSpaces(strNameSpace & "\" & objNameSpace.Name)
Next
End Sub
枚举辅助类别
描述
返回直接应用于 User 类别的所有 Active Directory 辅助类别。
脚本代码
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
枚举 WMI 中的动态类别
描述
列出在 root\cimv2 命名空间中列出的所有 WMI 动态类(其中包括 Association 类别)。
脚本代码
strComputer = "."
Set objWMIService = GetObject("winmgmts:\\" & 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
枚举 WMI 类别的属性
描述
列出指定的 WMI 类别的属性。
脚本代码
strComputer = "."
strNameSpace = "root\cimv2"
strClass = "Win32_Service"
Set objClass = GetObject("winmgmts:\\" & strComputer & _
"\" & strNameSpace & ":" & strClass)
WScript.Echo strClass & " Class Properties"
WScript.Echo "------------------------------"
For Each objClassProperty In objClass.Properties_
WScript.Echo objClassProperty.Name
Next
枚举 WMI 类别的属性、方法和限定符。
描述
列出指定的 WMI 类别的类别限定符、属性、属性限定符、方法和方法限定符。
脚本代码
strComputer = "."
strNameSpace = "root\cimv2"
strClass = "Win32_Service"
Set objClass = GetObject("winmgmts:\\" & 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
枚举 WMI 类别的限定符
描述
列出指定的 WMI 类别的类限定符。
脚本代码
CstrComputer = "."
strNameSpace = "root\cimv2"
strClass = "Win32_Service"
Set objClass = GetObject("winmgmts:\\" & 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
枚举 WMI 命名空间
描述
只列出那些直接在连接的命名空间下的 WMI 命名空间。
脚本代码
strComputer = "."
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root")
Set colNameSpaces = objWMIService.InstancesOf("__NAMESPACE")
For Each objNameSpace In colNameSpaces
WScript.Echo objNameSpace.Name
Next
枚举 WMI 提供程序
描述
列出安装在 root\cimv2 命名空间中的所有 WMI 提供程序。
脚本代码
strComputer = "."
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
Set colWin32Providers = objWMIService.InstancesOf("__Win32Provider")
For Each objWin32Provider In colWin32Providers
WScript.Echo objWin32Provider.Name
Next
识别已编制索引和全局编录中的属性
描述
返回已编制索引和全局编录中的所有 Active Directory 属性。
脚本代码
Set objConnection = CreateObject("ADODB.Connection")
objConnection.Open "Provider=ADsDSOObject;"
Set objCommand = CreateObject("ADODB.Command")
objCommand.ActiveConnection = objConnection
objCommand.CommandText = _
";" & _
"(&(objectCategory=attributeSchema)(searchFlags:1.2.840.113556.1.4.804:=1)
(isMemberOfPartialAttributeSet=TRUE));" & _
"lDAPDisplayName;onelevel"
Set objRecordSet = objCommand.Execute
WScript.Echo "Indexed attributes in the global catalog:"
While Not objRecordSet.EOF
Wscript.echo objRecordSet.Fields("lDAPDisplayName")
objRecordSet.MoveNext
Wend
objConnection.Close
列出 Win32 类别的属性和方法
描述
返回所有 WMI Win32 类别(例如 Win32_Service、Win32_Process、Win32_NTEventLog)的属性和方法。
脚本代码
strComputer = "."
Set objWMIService = GetObject("winmgmts:\\" & 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
列出 WMI cimV2 类别
描述
返回在 cimV2 命令空间中发现的 WMI 类别的列表。
脚本代码
strComputer = "."
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
For Each objclass in objWMIService.SubclassesOf()
Wscript.Echo objClass.Path_.Class
Next
列出 WMI 类别的方法
描述
列出指定的 WMI 类别的方法。
脚本代码
strComputer = "."
strNameSpace = "root\cimv2"
strClass = "Win32_Service"
Set objClass = GetObject("winmgmts:\\" & strComputer & _
"\" & strNameSpace & ":" & strClass)
WScript.Echo strClass & " Class Methods"
WScript.Echo "---------------------------"
For Each objClassMethod In objClass.Methods_
WScript.Echo objClassMethod.Name
Next
从字典中删除所有的元素
描述
演示脚本从脚本运行时字典删除所有的 key-item 对。此脚本必须运行在本地计算机上。
脚本代码
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
删除调试注释
描述
演示如何使用 FileSystemObject 作为删除脚本中的注释的方法。需要标记为 '* BUG 的注释。
脚本代码
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
从字典中删除一个元素
描述
演示脚本从脚本运行时字典中删除特定的 key-item 对。此脚本需要运行在本地计算机上。
脚本代码
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
重命名本地计算机上“我的电脑”图标
描述
重命名本地计算机上“我的电脑”图标,使其名称与计算机本身的名称相同。
有关在这段代码中使用的 Shell 对象的更多信息,请单击 此处。
支持平台
Windows XP | 是 |
Windows Server 2003 | 是 |
Windows 2000 | 是 |
Windows NT 4.0 | 否 |
Windows 98 | 否 |
脚本代码
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 = objComputerNa检索 Web 页面
描述
检索 Web 页面 http://www.microsoft.com 的 HTML 源。此脚本由 Microsoft 的 Maxim Stepin 提供。
脚本代码
url="http://www.microsoft.com"
Set objHTTP = CreateObject("MSXML2.XMLHTTP")
Call objHTTP.Open("GET", url, FALSE)
objHTTP.Send
WScript.Echo(objHTTP.ResponseText)
检索采用 MOF 格式的 WMI 类别的定义
描述
检索和显示采用托管对象格式 (Managed Object Format,MOF) 语法的 WMI 类别定义的文字表示。
脚本代码
strComputer = "."
strNameSpace = "root\cimv2"
strClass = "Win32_Service"
Const wbemFlagUseAmendedQualifiers = &h20000
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\" & strNameSpace)
Set objClass = objWMIService.Get(strClass, wbemFlagUseAmendedQualifiers)
strMOF = objClass.GetObjectText_
WScript.Echo strMOF
检索采用 XML 格式的 WMI 类别的定义
描述
检索和显示采用 XML 格式的 WMI 类别的文字表示。
脚本代码
strComputer = "."
strNameSpace = "root\cimv2"
strClass = "Win32_Service"
Const wbemFlagUseAmendedQualifiers = &h20000
Const wbemObjectTextFormatWMIDTD20 = 2
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\" & strNameSpace)
Set objClass = objWMIService.Get(strClass, wbemFlagUseAmendedQualifiers)
Set colNamedValueSet = CreateObject("Wbemscripting.SWbemNamedValueSet")
colNamedValueSet.Add "LocalOnly", False
colNamedValueSet.Add "IncludeQualifiers", True
colNamedValueSet.Add "ExcludeSystemProperties", False
colNamedValueSet.add "IncludeClassOrigin", True
strXML = objClass.GetText_(wbemObjectTextFormatWMIDTD20, 0, colNamedValueSet)
WScript.Echo strXML
对 WMI 数据进行排序
描述
演示脚本显示如何使用已断开连接的数据集对 WMI 数据进行排序(WMI 本身并不允许您指定返回的数据的排列顺序)。在此脚本中,使用 WMI 检索服务信息并将其存储在已断开连接的记录集(即没有连接到物理数据源的记录集)中。然后,就可以根据服务状态而不是服务名称使用 Sort 方法对服务数据进行排序。
脚本代码
Const adVarChar = 200
Const MaxCharacters = 255
Set DataList = CreateObject("ADOR.Recordset")
DataList.Fields.Append "ServiceName", adVarChar, MaxCharacters
DataList.Fields.Append "ServiceState", adVarChar, MaxCharacters
DataList.Open
strComputer = "."
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
Set ServiceList = objWMIService.ExecQuery _
("Select * from Win32_Service")
For Each Service in ServiceList
DataList.AddNew
DataList("ServiceName") = Service.Name
DataList("ServiceState") = Service.State
DataList.Update
Next
DataList.Sort = "ServiceState"
DataList.MoveFirst
Do Until DataList.EOF
Wscript.Echo DataList.Fields.Item("ServiceName") _
& vbTab & DataList.Fields.Item("ServiceState")
DataList.MoveNext
Loop
使用搜索操作移动相似的 Active Directory 对象
描述
搜索域或任何子域中 department 属性为 Human Resources 的所有用户帐户对象。然后,该脚本将结果集内的用户帐户(它们已经不在 na.fabrikam.com 的 HR OU 中)移到此 OU 中。
脚本代码
Set objConnection = CreateObject("ADODB.Connection")
objConnection.Open "Provider=ADsDSOObject;"
Set objCommand = CreateObject("ADODB.Command")
objCommand.ActiveConnection = objConnection
objCommand.CommandText = _
";" & _
"(&(&(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")
While Not 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
Wend
objConnection.Close
使用 WMI 枚举计算机中的环境变量
描述
使用 WMI 返回有关计算机中所有环境变量的信息。
有关在这段代码中使用的 Win32_Environment 类别的更多信息,请单击 此处。
支持平台
Windows XP | 是 |
Windows Server 2003 | 是 |
Windows 2000 | 是 |
Windows NT 4.0 | 是,需要安装 |
Windows 98 | 是,需要安装 ? |
脚本代码
strComputer = "."
Set objWMIService = GetObject("winmgmts:\\" & 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
验证字典键值是否存在
描述
演示脚本验证脚本运行时字典 ( Script Runtime Dictionary) 中是否存在特定的键值。此脚本必须运行在本地计算机上。
脚本代码
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