IIS ADSI 对象是 COM 自动化对象,可以在命令行脚本、ASP 页或自定义应用程序内使用这些对象,以更改存储在 IIS 配置数据库中的 IIS 配置值。例如,不使用 IIS 管理器,您可以通过编写脚本来为配置数据库中的
本主题包括下列信息:
每个 IIS ADSI 对象都对应于配置数据库架构中的项。例如,
<Collection InternalName="IIsWebServer "
MetaFlagsEx="NOTABLESCHEMAHEAPENTRY | CONTAINERCLASS"
MetaFlags="HASUNKNOWNSIZES"
ContainerClassList="IIsObject ,IIsCertMapper ,IIsFilters ,IIsWebVirtualDir "
InheritsPropertiesFrom="MetabaseBaseClass">
IIS ADSI 对象和配置数据库架构文件中的项只描述了 IIS 配置的结构,如同建筑物的示意图描述建筑物的结构那样。IIS 使用配置数据库架构作为构建配置数据库配置文件、添加网站和虚拟目录,以及随着 Web 服务器的增长进行其他配置更改的指南。
配置数据库配置文件包含配置数据库架构文件中的项的“实例”。例如,在 IIS 6.0 的默认安装上,配置数据库配置文件包含默认网站的
<IIsWebServer Location ="/LM /W3SVC /1"
AppPool
DefaultDoc ="Default.htm,Default.asp,index.htm,iisstart.asp,Default.aspx"
SecureBindings =":443:"
ServerBindings =":80:"
ServerComment ="Default Web Site"
ServerSize ="1">
当您使用 IIS ADSI 对象访问当前位于配置数据库配置文件中的数据时,您要创建一个该 IIS ADSI 对象的实例并用当前数据填充对象属性。例如,在使用
Set IIsWebServerObj = GetObject("IIS://MachineName/W3SVC/1")
由于修改 IIS ADSI Object 属性会更改相应的配置数据库属性的值,您可以配置 IIS 的单个元素,如使用
每个 IIS ADSI 对象都包含两个“属性”组:一组所有 ADSI 对象都必须包含的只读属性,以及一组对应于配置数据库架构中属性的 IIS 专有属性。
例如,
<Property InheritsPropertiesFrom="IIsConfigObject:LogType "/>
<Property InheritsPropertiesFrom="IIsConfigObject:ConnectionTimeout "/>
这些属性可能不会在配置数据库配置文件中出现,除非在该级别专门对其进行了设置。如果它们没有出现,它们可能是从父项中继承的。
一些 IIS ADSI 对象包含三组方法:一组用于创建和删除新对象,一组用于更改 ADSI 对象的属性,还有一组专门涉及在其中查找方法的 ADSI 对象的目的。
例如,Create 方法是所有 ADSI 对象包含的五个 Windows ADSI 容器对象方法之一。通过它们,您可以创建和删除 ADSI 对象的新实例,获取对子对象的引用,以及来回移动对象实例。下面的 VBScript 代码创建了包含在另一个
Set IIsWebVDirRootObj = GetObject("IIS://MachineName/W3SVC/1/Root")
Set IIsWebVDirObj = IIsWebVDirRootObj.Create("IIsWebVirtualDir ", "NewVDir")
Get、Put 和 SetInfo 方法是所有 ADSI 对象包含的八个 Windows ADSI 对象方法中的三个。通过它们,可以获取属性中的值,将其设置为其他值,然后将该信息保存到配置数据库。下面的 VBScript 代码从上一个代码继续,以在新创建的虚拟目录上设置某些必需的属性:
IIsWebVDirObj.Put "Path", "C:\NewContent"
IIsWebVDirObj.Put "AccessRead", True
IIsWebVDirObj.Put "AccessScript", True
IIsWebVDirObj.AppCreate2 1
IIsWebVDirObj.Put "AppFriendlyName ", "NewApp"
IIsWebVDirObj.SetInfo
其他方法的示例(专门涉及包含这些方法的对象)是
Dim IIsComputerObj, iFlags
'创建 IIsComputer 对象的实例。
Set IIsComputerObj = GetObject("IIS://janetfi-32")
'设置标记以保存该配置数据库,然后强制作出一个备份(即使保存出现故障)。
iFlags = (MD_BACKUP_SAVE_FIRST or MD_BACKUP_FORCE_BACKUP)
'备份到下一个可用版本号。
IIsComputerObj.BackupWithPassword "BeforeChanges", MD_BACKUP_NEXT_VERSION, iFlags, "MyP@ssWOrd"
由于配置数据库的层次结构以及其属性继承功能,您可以轻松地为单个文件、单个服务器、所有 Web 服务器、所有 FTP 服务器配置属性,或配置许多其他对象组的通用属性。
只有服务器管理员才允许通过 ADSI 更改配置数据库中的值。如果您在命令行脚本中使用 ADSI,则请注意,它们只有在由管理员运行的情况下才起作用。如果您在已编译的程序中使用 ADSI,则请将应用程序的帐户设置为管理员帐户。为提高安全性,建议您将脚本和已编译的管理程序上的访问控制设置为将访问权限限制为 Administrators 组。
如果您在 ASP 页中使用 ADSI 对配置数据库进行配置,则必须禁止对包含 ASP 页的 Web 应用程序进行匿名访问。建议您为管理性的 ASP 文件创建服务器或目录并设置身份验证方法,以便为该服务器或目录使用集成 Windows 身份验证。出于安全考虑,进程外 Web 应用程序无法访问配置数据库,除非
要点 建议不要使 IWAM_machinename 成为管理员,除非有特殊情况需要您这么做。使 IWAM_machinename 成为管理员意味着,通过进程外 Web 应用程序访问您的服务器的任何人都将具有您的计算机的管理特权。
如果您发现没有现成的 ADSI 对象类满足您的管理需求,则您可以扩展 IIS ADSI 架构。扩展 IIS ADSI 架构是一个复杂的操作。认真考虑您的需要,并评估是否确实需要扩展。
© 1997-2003 Microsoft Corporation。保留所有权利。