发新话题
打印

[转载]脚本 其他

[转载]脚本 其他

信息来源:邪恶八进制信息安全团队(www.eviloctal.com

由邪恶八进制综合整理。

利用搜索操作修改相似的 Active Directory 对象

更新日期: 9/12/2003

描述信息

在特定域及其所有子域中的计算机上搜索以字符‘ATL’开头的字符串。之后,在结果集中修改所有计算机的位置属性。

说明: 如果开始搜索的域中包含全局编录服务器,请在将第八行中的LDAP标记替换为GC标记。例如,将代码:

";" & _
修改为:
";" & _

脚本代码

Set objConnection = CreateObject("ADODB.Connection")
objConnection.Open "Provider=ADsDSOObject;"

Set objCommand = CreateObject("ADODB.Command")
objCommand.ActiveConnection = objConnection

objCommand.CommandText = _
   ";" & _
   "(&(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
人情如冰六月寒,花做一份艳,为谁笑人间? 如果任何人发现我转载的有图像的文章中图像失效或者文章有问题,请及时短消息通知我。先谢谢。::)) coup de foudre

TOP

发新话题