尝试编程访问IIS
2020-07-21 04:14
1301 查看
终于有个机会需要编程访问IIS了,目的是对所有的IIS站点的目录分别压缩成一个RAR文件,方便备份到另外的地方去。
尝试了两种方式,一是用js调用ADSI,二是用C#引用System.DirectoryServices调用ADSI。最后用js写了相对完整的代码实现,如下所示。
var WshShell = WScript.CreateObject("WScript.Shell");
var fso = new ActiveXObject("Scripting.FileSystemObject");
if (!fso.FileExists(WinRARexe))
{
WScript.Quit( 0 );
}
var sfn=WScript.ScriptFullName;
var sn=WScript.ScriptName;
/*获得脚本的当前路径,设置为备份的目录*/
var backupPath =sfn.substr(0,sfn.length-sn.length) ;
var tempFileName="";
var w3svc = GetObject( "IIS://localhost/w3svc" );
var e = new Enumerator( w3svc );
for(; ! e.atEnd(); e.moveNext() )
{
var site = e.item();
if(site.Class=="IIsWebServer")
{
WScript.Echo( "Name[" + site.Name + "]\nADsPath[" + site.ADsPath + "]\nServerComment[" + site.ServerComment + "]");
var vird=GetObject(site.ADsPath + "/root");
/*IIS站点目录*/
WScript.Echo("WebSiteRoot[" + vird.Path + "]");
tempFileName=site.ServerComment+"["+site.Name+"]"
WScript.Echo(tempFileName);
/*写命令*/
//WshShell.Run("\"" + WinRARexe + "\" a -r \"" + backupPath + tempFileName + ".rar\" \"" + vird.Path + "\" ",1,true);
}
}
WScript.Quit( 0 );
如果是用C#引用System.DirectoryServices,则如下所示。
代码using System;using System.Collections.Generic;
using System.DirectoryServices;
using System.Text;
namespace IIScfg
{
class Program
{
static void Main(string[] args)
{
DirectoryEntry siteRoot;
DirectoryEntry w3svc = new DirectoryEntry("IIS://localhost/w3svc");
foreach (DirectoryEntry cc in w3svc.Children)
{
if ((string)cc.InvokeGet("Class") == "IIsWebServer")
{
Console.WriteLine("Name[{0}]\nPath[{1}]", cc.Name, cc.Path);
Console.WriteLine("---{0}", (string)cc.InvokeGet("ServerComment"));
siteRoot = new DirectoryEntry(cc.Path + "/Root");
Console.WriteLine("---{0}", (string)siteRoot.InvokeGet("Path"));
}
}
}
}
}
参考的是MSDN中的IIS Programmatic Administration SDK, js写法相对简单,C#调用则要注意用InvokeGet获取属性更好。从长远来看,可以将IIS各个站点的IP、域名、主目录地址等信息都直接列出来,方便管理统计,否则一个一个去点开来看就太麻烦了,也不利于管控。
转载于:https://www.cnblogs.com/StevenLi/archive/2010/04/27/1722215.html
相关文章推荐
- 尝试编程访问IIS
- IIS报错:您尝试在此 Web 服务器上访问的 Web 应用程序当前不可用
- IIS错误:加载配置文件时出错: 由于访问被拒绝,未能开始监视对 XX 文件的更改
- 怎么访问vmware虚拟机IIS网站
- iis创建的ftp无法访问的解决办法。
- asp.net iis 对路径的访问被拒绝
- 以一种访问权限不允许的方式做了一个访问套接字的尝试
- 新手初学java 尝试编程绘画太极图
- JAVA高级视频 网络编程 07 访问Intentnet资源
- windows 2008 iis 提示401未授权 由于凭据无效,访问被拒绝
- IIS服务器无法访问的可能原因及解决办法
- IIS站点/虚拟目录中访问共享目录(UNC)以及建立后的应用程序的信任级别问题
- Failed to access IIS metabase 及远程机器不能访问IIS 解决方案
- IIS客户端证书访问配置
- 如何编程访问和修改Revit项目的单位信息
- WinXP安装iis,本机可访问,其他机器不能访问的解决方法
- WIN7 IIS7.5 局域网访问设置
- IIS异常情况处理-无法访问首页
- Java编程思想:第6章 访问权限控制
- 以一种访问权限不允许的方式做了一个访问套接字的尝试