Iiscnfg.vbs IIS 配置脚本

导入和导出本地或远程计算机上 Internet 信息服务 (IIS) 配置数据库的所有或选定元素,或者将整个 IIS 配置(配置数据库和架构)复制到另一台计算机以复制配置。Iiscnfg 执行下列功能:

若要查看该命令语法,请单击以下命令:

iiscnfg /export

以加密或未加密格式将所有或部分 IIS 配置数据库复制到 XML 文件。然后可在导入操作中使用 XML 文件来将所有或部分配置数据库复制到其他 IIS 配置。

语法
iiscnfg[.vbs] /export /f [Path]FileName.xml /sp MetabasePath [/d EncryptingPassword] [/inherited] [/children] [/s Computer [/u [Domain]User [/p Password]]]

参数
/f [Path]FileName.xml
必需。指定导出文件的唯一名称和位置。如果指定现有的文件或者如果指定的路径中的目录不存在,则此命令将失败。
文件路径必须是本地路径。如果从远程计算机导出文件,则 /f 参数是指远程计算机上的某个路径。

/sp MetabasePath
必需。指定要导出的配置数据库密钥。输入配置数据库路径以标识选定的密钥。
/d EncryptingPassword
使用指定的密码加密导出文件。可以使用任何字符串作为密码。
/d 参数可通过使用指定的密码来加密会话密钥和安全属性,创建安全的导出文件。必须提供密码才能在“导入”操作中使用此文件。

如果省略了此参数或密码参数,则导出文件通过空白密码来加密。这样只有安全属性才被加密,而且任何管理员都可使用该导出文件来导入配置数据库配置。

/inherited
将已导出密钥的继承属性添加到导出文件。如果没有此参数,则导出文件不包括从更高级别的密钥所继承的属性。
/children
将指定密钥的子密钥递归添加到导出文件。
/s Computer
在指定的远程计算机上运行脚本。键入计算机名或 IP 地址(不带反斜杠)。默认情况下,将在本地计算机上运行脚本。
/u [Domain]User
使用特定用户帐户的权限运行脚本。该帐户必须是远程计算机上 Administrators 组成员。默认情况下,脚本使用本地计算机上当前用户的权限运行。
/p Password
指定在 /u 参数中指定的用户帐户的密码。如果忽略该参数,脚本将提示您输入密码并隐藏键入的文本。
/?
在命令提示符下显示帮助。
注释
■要执行该过程,您必须是本地计算机 Administrators 组的成员,或者您必须被委派适当的权限。如果将计算机加入域,Domain Admins 组的成员可能也可以执行这个过程。作为安全性的最佳操作,可以考虑使用运行方式来执行这个过程。
■使用引号括起包含空格的配置数据库路径元素。仅括起带空格的元素,不包括整个路径。例如,应键入 "Default FTP Site"/IISAdmin,而非 "Default FTP Site/IISAdmin"。
示例
下面的示例显示了如何在特定的情况下使用 iiscnfg /export。
导出网站配置
下列命令将 Finance 网站的配置导出到 C:FinanceFinance.xml 文件。此命令使用 /sp 参数来指定网站的配置数据库路径 /lm/W3SVC/2,使用 /children 参数来导出配置的所有子密钥。它还使用 /inherited 参数来包括导出文件中的继承属性。这将确保网站配置保留这些属性,即使它被导入到不同的系统。

iiscnfg /export /f c:financefinance.xml /sp /lm/w3svc/2 /children /inherited

作为响应,Iiscnfg.vbs 显示以下成功消息:

Configuration exported from /lm/w3svc/2 to file c:financefinance.xml

结果文件将包括 /lm/w3svc/2 路径内的所有密钥和子密钥。它还包括包含了所有继承属性的值的 IisInheritedProperties 密钥。

导出本地计算机的整个 IIS 配置
下列命令将本地计算机的 IIS 配置导出到 D:IIStestConfig.xml 文件。它使用 /f 参数来指定文件名和位置,使用 /sp 参数来指定配置数据库的根密钥 (/)。/children 参数将根密钥的所有子密钥以递归方式添加到导出文件。(如果没有 /children 参数,则只导出根密钥。) 最后,该命令使用 /d 参数和密码来加密导出文件。

iiscnfg /export /f d:iistestconfig.xml /sp / /children /d p@sswoRd61

作为响应,Iiscnfg.vbs 显示以下成功消息:

Path / has been exported to d:iistestconfig.xml

请注意即使完整导出该配置也与系统的 Metabase.xml 文件不同。会话密钥、访问控制列表 (ACL) 和密码都不同。

另外,仅通过查看该导出文件无法判别是否加密。不过,如果比较同一文件的加密版和未加密版,将能发现加密版本中的安全属性的值已发生更改。因此,如果没有密码,则该文件将无法用于 import 命令。

iiscnfg /import

将 XML 配置数据库导出文件的配置设置添加到 IIS 服务器的配置数据库。

语法
iiscnfg[.vbs] /import /f [Path]FileName /sp SourcePath /dp DestinationPath [/d EncryptingPassword] [/children] [/inherited] [/merge] [/s Computer [/u [Domain]User [/p Password]]]

参数
/f [Path]FileName
必需。指定 XML 源文件的路径和文件名。
文件路径必须是本地路径。将文件导入到远程计算机时,/f 参数是指远程计算机上的某个路径。

/sp SourcePath
必需。指定正在导入的密钥在 XML 文件中的位置。当密钥在 XML 文件中出现时,输入其配置数据库路径。要导入源文件中的所有密钥,请输入根密钥的配置数据库路径。
/dp DestinationPath
必需。指定在配置数据库中放置导入密钥的位置。输入配置数据库路径。
如果指定的路径在配置数据库中已经存在,则导入密钥将覆盖和替换当前在该配置数据库路径中的密钥而没有任何警告。

/d EncryptingPassword
指定用于加密配置数据的密码。
加密配置文件时需要此参数。如果没有提供加密文件的密码,或者如果提供了不正确的密码,则此命令将失败。

/children
以递归方式导入指定密钥的子密钥。
/inherited
导入密钥的继承属性。只有当源文件包括继承属性时,此参数才有效。
/merge
将 XML 文件中的密钥与现有配置数据库密钥合并。如果没有此参数,则 XML 文件中的密钥将替换同一配置数据库路径中的现有密钥。
/merge 参数将仅在 XML 文件中出现的密钥添加到配置数据库、将不在 XML 文件中的密钥保留在配置数据库中,并在 XML 文件和配置数据库中都出现密钥时应用 XML 文件中的值。

/s Computer
在指定的远程计算机上运行脚本。键入计算机名或 IP 地址(不带反斜杠)。默认情况下,将在本地计算机上运行脚本。
/u [Domain]User
使用特定用户帐户的权限运行脚本。该帐户必须是远程计算机上 Administrators 组成员。默认情况下,脚本使用本地计算机上当前用户的权限运行。
/p Password
指定在 /u 参数中指定的用户帐户的密码。如果忽略该参数,脚本将提示您输入密码并隐藏键入的文本。
/?
在命令提示符下显示帮助。
注释
■要执行该过程,您必须是本地计算机 Administrators 组的成员,或者您必须被委派适当的权限。如果将计算机加入域,Domain Admins 组的成员可能也可以执行这个过程。作为安全性的最佳操作,可以考虑使用运行方式来执行这个过程。
■使用引号括起包含空格的配置数据库路径元素。仅括起带空格的元素,不包括整个路径。例如,应键入 "Default FTP Site"/IISAdmin,而非 "Default FTP Site/IISAdmin"。
■导入的密钥必须是配置数据库路径中新位置中的预期类型。如果密钥是非预期类型,则配置将无法正常运行。例如,不要将事件日志记录配置 (/LM/Logging) 导入到网站配置路径,如 /LM/W3SVC/3。
■使用 Iiscnfg.vbs 所做的更改可立即生效。当文件更新(每 5 秒钟或每 50 次更改)时,这些更改将反映在 MetaBase.xml 文件中。
示例
下列示例将显示如何在特定的情况下使用 iiscnfg /import。
从导出文件中导入网站
下列命令将 NewSite 网站配置从 C:Config.xml 文件导入到配置数据库。

该命令使用 /f 参数指定源文件的名称和位置。它使用 /sp(源路径)参数来指明要导入的密钥在 Config.xml 文件中的位置。此时,NewSite 配置将位于 Config.xml 文件的 /lm/w3svc/5 路径中。然后,它将使用 /dp(目标路径)参数来指定应该放置该导入密钥的配置数据库位置。此时,应该将 NewSite 配置密钥导入到配置数据库中的 /lm/w3svc/3 位置中。最后,它将在导入操作中使用 /children 参数包含 /lm/w3svc/5 的子密钥。如果没有 /children 参数,则只导入网站根目录。

请记住 /import 操作进行覆盖时没有警告。如果配置数据库在 /lm/w3svc/3 位置已经具有密钥,则这些密钥将被导入密钥所替换。

iiscnfg.vbs /import /f c:config.xml /sp /lm/w3svc/5/Root/NewSite /dp /lm/w3svc/3 /children

作为响应,Iiscnfg.vbs 显示以下成功消息:

Configuration imported from /lm/w3svc/5 in c:config.xml to /lm/w3svc/3 in the Metabase.

使用此命令后,NewSite 配置将出现在第三个网站的 IIS 中,其配置数据库路径为 /lm/W3SVC/3。

将日志记录配置导入到远程计算机
下列过程将 C:IISLogging.xml 中的自定义日志记录配置导入到远程计算机的 IIS 配置数据库中。可使用该方法或该方法的扩展将配置传播到一组服务器。

将日志记录配置导入到远程计算机的步骤分为两步:

1.将源文件复制到远程计算机。(Iiscnfg.vbs 不允许 /f 参数中有远程路径。)
2.将配置导入到 IIS。
第一个命令将 Iislogging.xml 文件复制到远程服务器 Svr126:

copy IISLogging.xml \Svr126c$

第二个命令将 Iislogging.xml 导入到 Svr126 的 IIS 配置中。它使用 /f 参数来标识源文件,使用 /sp 参数来指定要导入的 /LM/Logging/Custom Logging 配置数据库路径,使用 /dp 参数来将导入密钥放在目标配置的同一位置 /LM/Logging/Custom Logging。(使用引号括起包含空格的路径元素。) 它使用 /children 参数来导入日志记录密钥的所有子密钥。

为了在 Svr126 上操作,它使用 /s 参数指定远程计算机,使用 /u 和 /p 参数运行具有远程计算机上的用户管理员帐户权限的脚本。

iiscnfg /import /f C:IISLogging.xml /sp "/lm/logging/custom logging" /dp "/lm/logging/custom logging" /children /s Svr126 /u Svr126Administrator /p p@ssword1#

作为响应,Iiscnfg.vbs 显示以下成功消息:

 正在连接到服务器...已完成。 Configuration imported from /lm/logging/custom logging in file C:IISLogging.xml to  /lm/logging/custom logging in the Metabase. [喝小酒的网摘]http://blog.const.net.cn/a/615.htm结果,/LM/Logging/Custom Logging 密钥及其子密钥从本地配置数据库复制到 Svr126 的配置数据库中。

将虚拟目录与网站合并
此示例通过将标准的 import 操作与使用 /merge 参数的 import 操作进行比较,阐明了 /merge 参数的工作原理。

两个命令都使用同一导入文件 Invest_vdir.xml 来更新网站的 Investments 虚拟目录的属性。

下面的示例显示在运行任何 import 操作之前 Investments 配置数据库密钥的情况。(此示例是从使用 Iisback.vbs 创建的配置数据库的备份副本中获得的)。

导入前的配置数据库

 <IIsWebVirtualDir Location ="/LM/W3SVC/1509060625/root/Investments"  AccessFlags="AccessRead | AccessScript"  AppFriendlyName="Investments"  AppIsolated="2"  AppRoot="/LM/W3SVC/1509060625/Root/Investments"  DirBrowseFlags="DirBrowseShowDate | DirBrowseShowTime | DirBrowseShowSize | DirBrowseShowExtension | DirBrowseShowLongDate | EnableDefaultDoc"  Path="E:publicDownload" > </IIsWebVirtualDir> 下面的示例显示了将在 import 操作中使用的 Invest_vdir.xml 文件的内容。(此示例通过导出 Investments 配置数据库密钥然后编辑导出文件来创建。)

请注意 Investments 密钥的下列属性在 XML 文件中已发生更改:

■AccessFlags 属性的值已更改。
■添加了 AuthFlags 属性。
■省略了 DirBrowseFlags 属性。
导入文件内容

 <IIsWebVirtualDir Location ="/LM/W3SVC/1509060625/root/Investments"   AccessFlags="AccessRead"   AuthFlags="AuthAnonymous | AuthNTLM"   AppFriendlyName="Investments"   AppIsolated="2"   AppRoot="/LM/W3SVC/1509060625/Root/Investments"   Path="E:publicDownload" > </IIsWebVirtualDir> 命令 1:标准导入

下列命令在不使用 /merge 参数的情况下将 Invest_vdir.xml 文件导入到配置数据库。该命令指示 IIS 使用 XML 文件中 Investments 的密钥来替换配置数据库中的 Investments 密钥。

该命令使用 /f 参数来指定导入文件,并使用源路径 (/sp) 和目标路径 (/dp) 参数中的同一配置数据库路径。

iiscnfg /import /f e:iistestInvest_vdir.xml /sp /LM/W3SVC/1509060625/root/Investments /dp /LM/W3SVC/1509060625/root/Investments

使用此命令后,配置数据库中的 Investments 密钥将与 Invest_vdir.xml 导入文件中的 Investments 密钥相同。

命令 2:导入和合并

下列命令将 Invest_vdir.xml 文件中的 Investments 密钥合并到配置数据库。/merge 参数将指示 IIS 将新的属性从导入文件添加到配置数据库、使不在导入文件中的配置数据库属性保持不变,而且当属性同时出现在导入文件和配置数据库中时应用导入文件值。

该命令除了添加了 /merge 参数外,其他都与命令 1 相同。

iiscnfg /import /f e:iistestInvest_vdir.xml /sp /LM/W3SVC/1509060625/root/Investments /dp /LM/W3SVC/1509060625/root/Investments /merge

使用该命令后,配置数据库中的 Investments 密钥的内容是其源的组合,如下例所示。

请注意配置数据库中的 Investments 密钥的下列属性已发生更改:

■在配置数据库和 XML 文件中显示的 AccessFlags 属性的值已更改。XML 文件中的值现在出现在配置数据库中。
■已添加仅在 XML 文件中显示的 AuthFlags 属性。
■仅在配置数据库中显示的 DirBrowseFlags 属性没有更改。
 <IIsWebVirtualDir Location ="/LM/W3SVC/1509060625/root/Investments"   AccessFlags="AccessRead"   AppFriendlyName="Investments"   AppIsolated="2"   AppRoot="/LM/W3SVC/1509060625/Root/Investments"   AuthFlags="AuthAnonymous | AuthNTLM"   DirBrowseFlags="DirBrowseShowDate | DirBrowseShowTime | DirBrowseShowSize | DirBrowseShowExtension | DirBrowseShowLongDate | EnableDefaultDoc"   Path="E:publicDownload" > </IIsWebVirtualDir> iiscnfg /copy

将 IIS 配置数据库和架构从一台计算机复制到另一台计算机。

语法
iiscnfg[.vbs] /copy /ts TargetComputer /tu TargetUser /tp TargetPassword [/s Computer [/u [Domain]User [/p Password]]]

参数
/ts TargetComputer
必需。将 IIS 配置数据库复制到指定的计算机。键入 IP 地址或计算机名(不带反斜杠)。
/tu TargetUser
必需。指定用于连接到目标计算机的帐户。以 [Domain]User 格式键入用户帐户。该帐户必须是目标计算机上 Administrators 组的成员。
此参数是必需的,即使本地计算机的当前用户是目标计算机的管理员。

/tp TargetPassword
必需。指定 /tu 参数所指定的帐户的密码。
/s Computer
将指定的远程计算机上的 IIS 配置数据库复制到目标计算机。该参数将运行远程计算机上的脚本。键入远程计算机名称或 IP 地址(不带反斜杠)。该默认值是本地计算机。
/u [Domain]User
使用特定用户帐户的权限运行脚本。默认值为本地计算机上的当前用户。如果当前用户不是远程计算机的管理员,则必须使用该参数。
/p Password
指定在 /u 参数中指定的用户帐户的密码。如果忽略该参数,IISCnfg 将提示您输入密码并隐藏键入的文本。
/?
在命令提示符下显示帮助。
注释
■要执行该过程,您必须是本地计算机 Administrators 组的成员,或者您必须被委派适当的权限。如果将计算机加入域,Domain Admins 组的成员可能也可以执行这个过程。作为安全性的最佳操作,可以考虑使用运行方式来执行这个过程。
■默认情况下,IISCnfg 将本地计算机的配置数据库复制到 /ts 参数所指定的目标计算机中。不过,可使用 /s 参数来将另一台计算机的配置数据库复制到目标计算机。
■复制操作使用 IISBack.vbs 来创建源配置数据库和架构的备份副本。然后它将该备份副本文件(.MDX 和 .SCX)复制到目标计算机,通过 IISBack.vbs 使用该备份副本来替换目标计算机的配置数据库和架构。尽管可手动完成这些操作,IISCnfg 复制操作将提供比较方便的一步方法来复制 IIS 配置。
■该复制操作不复制与 IIS 配置相关的服务器内容,如网页和 FTP 文件。
■复制操作将更改配置数据库中计算机特定和系统特定的属性,以便这些属性在目标计算机中有效。不过,它不调整目录或文件路径。这样该配置中的路径可能在目标计算机中无效。
示例
下面的示例显示了如何在特定的情况下使用 iiscnfg /copy。

复制本地计算机的 IIS 配置
下列命令将本地计算机的 IIS 配置复制到 SVR01 服务器。该命令使用 /ts 参数来标识目标服务器,使用 /tu 和 tp 参数来提供用户在 SVR01 服务器上的管理员帐户和密码。

iiscnfg /copy /ts SVR01 /tu SVR01Admin06 /tp P@ssWord6

作为响应,Iiscnfg.vbs 显示以下成功消息。

 Backing up server 127.0.0.1 Backup complete. IP 地址 127.0.0.1 是环回地址,一般情况下指本地计算机。只有当复制本地计算机的配置时才使用该地址。

复制远程计算机的 IIS 配置
下列命令将远程计算机 SRV06 的IIS 配置复制到 MAINBKP 服务器。此命令使用 /s 命令来标识远程计算机,使用 /u 参数来提供用户在 SRV06 计算机上的管理员密码。它还使用 /ts 参数来标识目标服务器,使用 /tu 和 tp 参数来提供用户在 MAINBKP 服务器上的管理员帐户和密码。

与可选的 /p 参数不同,/tp 参数是必需的。如果省略此参数,此命令将失败。

iiscnfg /copy /s SRV06 /u Domain01Admin01 /ts MAINBKP /tu MAINBKPAdmin01 /tp P@ssWord6

作为响应,Iiscnfg.vbs 将提示输入由 /u 参数指定的帐户密码。(它不回显键入的密码字符。) 然后,确认密码后,它将复制该配置并显示复制操作已成功完成的消息。

 输入密码: Processing... Backing up server SRV06 Backup complete. iiscnfg /save

将 IIS 配置数据库和架构保存到磁盘。

语法
iiscnfg[.vbs] /save [/s Computer [/u [Domain]User [/p Password]]]

参数
/s Computer
将指定的远程计算机上的 IIS 配置数据库复制到目标计算机。该参数将运行远程计算机上的脚本。键入远程计算机名称或 IP 地址(不带反斜杠)。该默认值是本地计算机。
/u [Domain]User
使用特定用户帐户的权限运行脚本。默认值为本地计算机上的当前用户。如果当前用户不是远程计算机的管理员,则必须使用该参数。
/p Password
指定在 /u 参数中指定的用户帐户的密码。如果忽略该参数,IISCnfg 将提示您输入密码并隐藏键入的文本。
/?
在命令提示符下显示帮助。
注释
■要执行该过程,您必须是本地计算机 Administrators 组的成员,或者您必须被委派适当的权限。如果将计算机加入域,Domain Admins 组的成员可能也可以执行这个过程。作为安全性的最佳操作,可以考虑使用运行方式来执行这个过程。
■使用脚本或 IIS 管理器对配置数据库所做的任何更改都将首先写入到内存,然后在下一个计划更新(可能在几分钟后发生)进行时写入到磁盘。这样管理员可以对配置数据库进行更改,然后仅打开 metabase.xml 以查看是否未反映所作的更改。iiscnfg.vbs 中的 /save 命令通过将更改立即保存到磁盘来解决该问题。
示例
下面的示例显示在特定情况下如何使用 iiscnfg /save。

保存本地计算机的 IIS 配置
如下命令将 IIS 配置保存到本地计算机上的磁盘。

iiscnfg /save

作为响应,Iiscnfg.vbs 显示以下成功消息。

 Backup complete. 保存远程计算机的 IIS 配置
如下命令将 IIS 配置保存到本地计算机上的磁盘。

iiscnfg /save /s SourceServer /u Administrator /p Kj30W

作为响应,iiscnfg.vbs 显示下列消息。

 Configuration saved 注释

■IISCnfg.vbs 导入和导出由 IIS 存储在 IIS 服务器的配置数据库中的所有或部分配置信息。/copy 操作将 IIS 服务器的整个配置数据库和架构复制到目标计算机。/save 操作将 IIS 服务器的整个配置数据库和架构复制到目标计算机的磁盘上。
■Iisback.vbs 即 IIS 备份管理脚本,还保存和恢复 IIS 配置。不过,Iisback.vbs 将备份整个配置数据库和架构。无法使用它来保存或恢复配置的选定元素。
■IISCnfg 复制操作 (/copy) 将替换以前在 Windows 中包括的 IISSync.vbs 和 IISRepl.vbs 工具的功能。
■Iiscnfg 要求
■发出命令的计算机必须正在运行 Windows XP 或 Windows Server 2003 操作系统。用户必须是命令所影响的计算机上的 Administrators 组成员。
■命令所影响的计算机必须正在运行集成了 Internet 信息服务 (IIS) 6.0 的 Windows Server 2003。
■IIS 服务器的配置数据库包括系统特定和计算机特定的属性。不要在未加修改的情况下将一台 IIS 服务器的配置导入到另一台 IIS 服务器。相反,使用 IISBack.vbs 或 IISCnfg 复制操作 (/copy),这将替代系统特定和计算机特定的属性,从而使该配置在目标计算机上有效。有关导入和导出 IIS 配置数据库的信息,请搜索 IIS 6.0 帮助中的“配置数据库导入/导出”。有关如何访问 IIS 6.0 帮助的详细信息,请参阅查看 Internet 信息服务 (IIS) 6.0 帮助。
■连接到指定计算机上的 IIS 服务时,Iiscfng.vbs 将显示“连接到服务器”消息。每次使用 Iiscnfg.vbs 时,不管是在本地或远程计算机,都会出现该消息。
■Iiscnfg.vbs 将提供包括导出文件中的继承属性的选项。如果选择此选项,则 Iiscnfg.vbs 会将导出密钥的继承属性添加到导出文件中的 IIsInheritedProperties 密钥。从该文件中导入密钥时,可选择导入密钥的继承属性。
在导入继承属性时,导入密钥将保留导出配置中所继承的属性。如果没有导入继承属性,则密钥将继承导入配置的属性。

■为了防止对导出文件的未经授权的使用,IISCnfg.vbs 使您通过密码来加密导出文件。该密码将对会话密钥加密,后者反过来对已设置安全属性的所有属性进行加密。
您可读取加密的导出文件(只加密了会话密钥和安全属性),并可删除该文件。不过无法在 /import 操作中使用导出文件,除非提供了加密密码。另外,无法从导出文件删除密码加密,也无法更改加密密码。

如果无法使用密码加密,则会话密钥和安全属性通过空白密码来加密,这可防止被读取,不过允许 Administrators 组的任何成员从导出文件导入配置数据库。IIS 5.1 和 6.0 都不支持导出文件的计算机密钥加密。