iisvdir.vbs管理虚拟目录
2005-12-10 15:57
399 查看
虚拟目录的配置简单来说就是创建虚拟目录。用手工的方式实现非常简单,直接设定“Web sharing”就可以了,让我们看看怎么通过编程的方式实现,两种创建虚拟目录的方法:
1、通过调用iisvdir.vbs,
2、通过System.DirectoryServices.DirectoryEntry。
为了方便描述,我写了两个虚拟目录操作类,简单的封装了iisvdir.vbs和System.DirectoryServices.DirectoryEntry管理虚拟目录的方法,结构如下所示:
cscript c:\windows\system32\iisvdir.vbs [/s server] [/u username /p password] /create [virtualRoot] Alias PhysicalPath
2)删除虚拟目录:
1cscript c:\windows\system32\iisvdir.vbs [/s server] [/u username /p password] /delete [virtualRoot]/Alias
3)查看指定虚拟目录下的全部子目录:
1cscript 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下载到本文所讨论的代码。
1、通过调用iisvdir.vbs,
2、通过System.DirectoryServices.DirectoryEntry。
为了方便描述,我写了两个虚拟目录操作类,简单的封装了iisvdir.vbs和System.DirectoryServices.DirectoryEntry管理虚拟目录的方法,结构如下所示:
cscript c:\windows\system32\iisvdir.vbs [/s server] [/u username /p password] /create [virtualRoot] Alias PhysicalPath
2)删除虚拟目录:
1cscript c:\windows\system32\iisvdir.vbs [/s server] [/u username /p password] /delete [virtualRoot]/Alias
3)查看指定虚拟目录下的全部子目录:
1cscript 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下载到本文所讨论的代码。
相关文章推荐
- iisvdir.vbs管理虚拟目录
- 使用System.DirectoryServices.DirectoryEntry来实现iis虚拟目录的管理
- Asp.net实现IIS控制管理---Web虚拟目录的创建及管理(转)
- 如何在 IIS 6.0 中使用命令行脚本管理网站和 Web 虚拟目录
- PowerShell管理IIS(新建站点、应用程序池、应用程序、虚拟目录等)
- 用vbs控制iis创建虚拟目录的代码
- 管理IIS(创建站点和虚拟目录)的ASP版本
- 在IIS 7.0里管理虚拟目录和站点(1)
- 使用System.DirectoryServices.DirectoryEntry来实现iis虚拟目录的管理
- 使用System.DirectoryServices.DirectoryEntry来实现iis虚拟目录的管理
- IIS控制管理(Web虚拟目录的创建及管理)
- 用vbs控制iis创建虚拟目录
- 使用用于 SQL Server 的 IIS 虚拟目录管理实用工具
- 对IIS、虚拟目录等进行管理
- 用vbs控制iis创建虚拟目录->[休闲居(xxju.net)—>ASP]
- Asp.net实现IIS控制管理---Web虚拟目录的创建及管理
- 【经典】SQL Server的IIS虚拟目录管理实用工具
- iis中虚拟目录实现的目的是什么?
- allowDefinition='MachineToApplication' 原因:如果在 IIS 中没有将虚拟目录配置为应用程序,则可能导致此错误。
- C#获取IIS所有站点及虚拟目录和应用程序(包含名称及详细信息)