配置配置数据库属性的代码示例

下面的示例说明了使用不同的技术设置配置数据库属性的语法,例如 Windows Management Instrumentation (WMI)Active Directory 服务界面 (ADSI)。代码示例是用 Microsoft® Visual Basic® Scripting Edition (VBScript)、JScript® 和 Perl 编写的。

这些示例简单说明了更改配置数据库属性所需的基本代码。如果要使用这些示例,则请添加错误检查代码和安全检查代码后再使用他们来配置服务器。

实现指南

在命令行管理脚本中实现 VBScript、JScript 或 Perl 示例

在 ASP 页中实现 VBScript、JScript 或 Perl 示例

  1. 设置 Web 应用程序的安全性以禁止匿名访问。不允许匿名访问配置数据库属性。请求 ASP 页的用户应该是管理员。另外,执行 ASP 页的进程必须具有修改配置数据库的权限。
  2. 添加如下 ASP 代码行,其中第一行位于文件顶部,“language”表示“Microsoft Visual Basic Scripting Edition (VBScript)”、“JScript”或“PerlScript”。
    <%@ Language="language" %>
    <%
    在此处插入示例代码
    %>
  3. 将实例中的 WScript.Echo 更改为 Response.Write,而将 print 更改为 $Response->Write
  4. 将文件的文件扩展名更改为 .asp。
  5. 安装 ActivePerl 和 PerlScript 以运行 Perl 示例。ActivePerl 可以从 ActiveState 网站下载。

代码示例

下面示例中的斜体字必须用有效的字符串代替,示例才能正确执行。用配置数据库属性的名称代替 property_name_1property_name_2。用该属性的有效数据类型代替 numeric_or_Boolean_valueString_value

这些示例说明了如何将配置数据库的属性设置为字符串、数字或布尔值。这些示例不包括需要在对象中传递的 WMI 情况。

WMI
Microsoft Visual Basic Scripting Edition (VBScript)
set providerObj=GetObject("winmgmts:/root/MicrosoftIISv2")
set vdirObj=providerObj.get("IIsWebVirtualDirSetting='W3SVC/1/ROOT'")
'打印某些属性的当前值:
WScript.Echo "Before: " & vdirObj.property_name_1 & ", " & vdirObj.property_name_2
'设置某些属性:
vdirObj.property_name_1=numeric_or_Boolean_value
vdirObj.property_name_2="String_value"
' 将属性更改保存在配置数据库中:
vdirObj.Put_()
WScript.Echo "After: " & vdirObj.property_name_1 & ", " & vdirObj.property_name_2
JScript
var providerObj=GetObject("winmgmts:/root/MicrosoftIISv2");
var vdirObj=providerObj.get("IIsWebVirtualDirSetting='W3SVC/1/ROOT'");
// 打印某些属性的当前值:
WScript.Echo("Before: " + vdirObj.property_name_1 + ", " + vdirObj.property_name_2);
// 设置某些属性:
vdirObj.property_name_1=numeric_or_Boolean_value;
vdirObj.property_name_2="String_value";
// 将属性更改保存在配置数据库中:
vdirObj.Put_();
WScript.Echo("After: " + vdirObj.property_name_1 + ", " + vdirObj.property_name_2);
Perl
use Win32;
use Win32::OLE;
my $providerObj=Win32::OLE -> GetObject("winmgmts:/root/MicrosoftIISv2");
my $vdirObj=$providerObj->Get("IIsWebVirtualDirSetting='W3SVC/1'");
# 打印某些属性的当前值:
print "Before: ", $vdirObj->{"property_name_1"}, ", ", $vdirObj->{"property_name_2"}, "\n";
# 设置某些属性:
$vdirObj->{"property_name_1"}=numeric_or_Boolean_value;
$vdirObj->{"property_name_2"}="String_value";
# 将属性更改保存在配置数据库中:
vdirObj->Put_();
print "After: ", $vdirObj->{"property_name_1"}, ", ", $vdirObj->{"property_name_2"}, "\n";
ADSI
Microsoft Visual Basic Scripting Edition (VBScript)
set vdirObj=GetObject("IIS://localhost/W3svc/1/Root")
' 打印某些属性的当前值:
WScript.Echo "Before: " & vdirObj.property_name_1 & ", " & vdirObj.property_name_2
' 设置某些属性:
vdirObj.Put "property_name_1", numeric_or_Boolean_value
vdirObj.Put "property_name_2", "String_value"
' 将属性更改保存在配置数据库中:
vdirObj.SetInfo
WScript.Echo "After: " & vdirObj.property_name_1 & ", " & vdirObj.property_name_2
JScript
var vdirObj=GetObject("IIS://localhost/W3svc/1/Root");
// 打印某些属性的当前值:
WScript.Echo("Before: " + vdirObj.property_name_1 + ", " + vdirObj.property_name_2);
// 设置某些属性:
vdirObj.Put("property_name_1", numeric_or_Boolean_value);
vdirObj.Put("property_name_2", "String_value");
// 将属性更改保存在配置数据库中:
vdirObj.SetInfo();
WScript.Echo("After: " + vdirObj.property_name_1 + ", " + vdirObj.property_name_2);
Perl
use Win32;
use Win32::OLE;
my $vdirObj=Win32::OLE -> GetObject("IIS://localhost/W3SVC/1/Root");
# 打印某些属性的当前值:
print "Before: ", $vdirObj->{"property_name_1"}, ", ", $vdirObj->{"property_name_2"}, "\n";
# 设置某些属性:
$vdirObj->{"property_name_1"}=numeric_or_Boolean_value;
$vdirObj->{"property_name_2"}="String_value";
# 将属性更改保存在配置数据库中:
$vdirObj->SetInfo(); 
print "After: ", $vdirObj->{"property_name_1"}, ", ", $vdirObj->{"property_name_2"}, "\n";

更改示例代码后,运行时可能会遇到错误。下表列出了可能产生的错误及其原因。

错误代码可能的原因
0x80005006 该属性不存在,或者在试图设置属性的访问位置上不存在该属性。

例如,无法在网站级别 (W3SVC/1, W3SVC/1/ROOT) 或虚拟目录级别 (W3SVC/1/ROOT/vdir) 上设置 AdminServer 属性;只能在万维网发布服务(WWW 服务)级别对其进行设置。在任何 Web、文件传输协议 (FTP) 或简单邮件传输协议 (SMTP) 配置数据库的项上都无法设置 AdminEmail 属性;只能在网络新闻传输协议 (NNTP) 配置数据库的项上对其进行设置。

要获得您尝试设置的配置数据库属性的信息,请参阅配置数据库属性参考。使用访问位置表格确认是否在有效位置访问属性。或者,也可以打开服务器上的 MetaBase.xml 文件,并搜索该属性以确定其所在的位置。

0x8000500C 属性的数据类型与想要设置的数据类型不同。

例如,无法将 AspCodepage 属性设置为字符串 ("English");只能将其设置为数字表示代码页 (1252)。

相关主题


© 1997-2003 Microsoft Corporation。保留所有权利