iisvdir.vbs管理虚拟目录

虚拟目录的配置简单来说就是创建虚拟目录。用手工的方式实现非常简单,直接设定“Web sharing”就可以了,让我们看看怎么通过编程的方式实现,两种创建虚拟目录的方法: 
1、通过调用iisvdir.vbs, 
2、通过System.DirectoryServices.DirectoryEntry。
为了方便描述,我写了两个虚拟目录操作类,简单的封装了iisvdir.vbs和System.DirectoryServices.DirectoryEntry管理虚拟目录的方法,结构如下所示: 

 
Server为iis服务器的ip或机器名,User和Password为该服务器的管理员用户名和密码,Alias为虚拟目录的名称,VirtualRoot为虚拟目录所在根目录的名称(如下图),PhysicalPath为该虚拟目录相应的物理路径。如果想进一步了解IIS虚拟目录的属性,可以参考MSDN  IIsWebVirtualDir。 


通过调用iisvdir.vbs创建虚拟目录 

看官可以参考一下MSDN的相关资料: 
Creating Web Virtual Directories Using Iisvdir.vbs  
Deleting Web Virtual Directories Using Iisvdir.vbs  
Listing Web Virtual Directories Using Iisvdir.vbs  

仔细看还会发现, IIS管理器也是通过调用iisvdir.vbs来实现虚拟目录的创建和删除的。我们可以通过命令行的方式来执行iisvdir.vbs脚本, 
1)创建虚拟目录: 
cscript c:\windows\system32\iisvdir.vbs [ / s server] [ / u username  / p password] /create [virtualRoot] Alias PhysicalPath

2)删除虚拟目录: 
1 cscript c:\windows\system32\iisvdir.vbs [ / s server] [ / u username  / p password]  / delete [virtualRoot] / Alias

3)查看指定虚拟目录下的全部子目录: 
1 cscript c:\windows\system32\iisvdir.vbs [ / s server] [ / u username  / p password]  / query virtualRoot


通过封装这三个操作,可以实现iis虚拟目录的创建、删除和判断是否存在: 
1)创建虚拟目录:

 1  ///   <summary>
 2           ///  创建iis虚拟目录
 3           ///   </summary>
 4           ///   <exception cref="CreateIIsDirectory.DirectoryException"> 虚拟目录操作异常 </exception>
 5           public   override   void  CreateDirectory()
 6          {
 7               //  已不覆盖的方式创建虚拟目录,当虚拟目录存在时抛出异常
 8               this .CreateDirectory( false );
 9          }
10 
11           ///   <summary>
12           ///  创建iis虚拟目录
13           ///   </summary>
14           ///   <param name="bReplace"> 是否覆盖掉原有的虚拟目录 </param>
15           ///   <exception cref="CreateIIsDirectory.DirectoryException"> 虚拟目录操作异常 </exception>
16           public   override   void  CreateDirectory( bool  bReplace)
17          {
18               //  判断目录是否存在
19               if  ( this .Exist())
20              {
21                   if  (bReplace)
22                  {
23                       //  若允许覆盖则先删除原有的虚拟目录
24                       this .DeleteDirectory();
25                  }
26                   else
27                  {
28                       //  若不允许覆盖直接抛出目录已存在的异常
29                      DirectoryException.Throw( " directory already exist " );
30                  }
31              }
32 
33              ReturnMessage message  =  ScriptDirectory.ExecuteScript(
34                   this , ScriptDirectory.CONST_ACTION_CREATE);
35 
36               //  输出message信息供nunit查看
37              Console.WriteLine( " return code:  "   +  message.Code);
38              Console.WriteLine( " return message: \n "   +  message.Message);
39 
40               //  若创建失败抛出虚拟目录操作异常
41               if  (message.Code  !=   0 )
42              {
43                  DirectoryException.Throw(message.Message);
44              }
45          }

2)删除虚拟目录: 
 1  ///   <summary>
 2           ///  删除iis虚拟目录
 3           ///   </summary>
 4           ///   <exception cref="CreateIIsDirectory.DirectoryException"> 虚拟目录操作异常 </exception>
 5           public   override   void  DeleteDirectory()
 6          {
 7              ReturnMessage message  =  ScriptDirectory.ExecuteScript(
 8                   this , ScriptDirectory.CONST_ACTION_DELETE);
 9 
10               //  输出message信息供nunit查看
11              Console.WriteLine( " return code:  "   +  message.Code);
12              Console.WriteLine( " return message: \n "   +  message.Message);
13 
14               //  若删除失败抛出虚拟目录操作异常
15               if  (message.Code  !=   0 )
16              {
17                  DirectoryException.Throw(message.Message);
18              }
19          }

3) 判断虚拟目录是否存在:

 1  ///   <summary>
 2           ///  判断iis虚拟目录是否存在
 3           ///   </summary>
 4           ///   <returns> 目录是否存在 </returns>
 5           public   override   bool  Exist()
 6          {
 7              ReturnMessage message  =  ScriptDirectory.ExecuteScript(
 8                   this , ScriptDirectory.CONST_ACTION_QUERY);
 9               bool  bExist  =   false ;
10 
11               //  输出message信息供nunit查看
12              Console.WriteLine( " return code:  "   +  message.Code);
13              Console.WriteLine( " return message: \n "   +  message.Message);
14 
15               //  从返回字符串中判断该虚拟目录是否存在
16               if  (message.Code  ==   0 )
17              {
18                  Regex reg  =   new  Regex( " / "   +   this .m_strAlias  +   @" \s+ " );
19                  message.Message  =  message.Message.Substring(
20                      message.Message.IndexOf( " / " ));
21 
22                  bExist  =  reg.IsMatch(message.Message);
23              }
24 
25               return  bExist;
26          }


ScriptDirectory.ExecuteScript函数封装了iisvdir.vbs的调用和参数的组合,代码比较长,大家可以在/Files/chwkai/CreateIIsDirectory.rar下载到本文所讨论的代码。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值