繁体   English   中英

如何在不使用IIS6兼容包的情况下通过脚本在IIS7上列出网站(WMI单板)

[英]How can I list websites on IIS7, from script, without using IIS6 compat pack (WMI veneer)

在IIS6上,我可以使用WMI列出可用的网站,如下所示:

    var iis = GetObject("winmgmts://localhost/root/MicrosoftIISv2");
    var query  = "SELECT * FROM IIsWebServerSetting"

    // get the list of virtual servers
    var results = iis.ExecQuery(query);

    for(var e = new Enumerator(results); !e.atEnd(); e.moveNext()) {
        var site = e.item();
        // site.Name                   // W3SVC/1, W3SVC/12378398, etc
        // site.Name.substr(6)         // 1, 12378398, etc
        // site.ServerComment)         // "Default Web Site", "Site2", etc
        // site.ServerBindings(0).Port // 80, 8080, etc
    }

我知道我以前可以安装IIS6兼容性包,但是可以在IIS7上运行此脚本

是否可以在不需要兼容性包的前提下获取网站列表?

我知道我可以从命令行运行AppCmd来执行此操作:

\Windows\system32\inetsrv\appcmd list sites

但是...我可以通过MSI中的自定义操作来运行它吗? 而且...如果没有,我该如何使用javascript做等效的事情(在IIS7上列出网站)?


编辑
这是我尝试从Javascript中运行命令的方式。

function GetWebSites_IIS7()
{
    var ParseOneLine = function(oneLine) {
        ...a bunch of regex parsing here....
    };

    LogMessage("GetWebSites_IIS7() ENTER");
    var shell = new ActiveXObject("WScript.Shell");
    var windir = shell.Environment("system")("windir");
    // aka Session.Property("%WINDIR%")

    var appcmd = windir + "\\system32\\inetsrv\\appcmd.exe list sites";
    var oExec = shell.Exec(appcmd);

    var sites = [];
    while (!oExec.StdOut.AtEndOfStream) {
        var oneLine = oExec.StdOut.ReadLine();
        var line = ParseOneLine(oneLine);
        LogMessage("  site: " + line.name);
        sites.push(line);
    }

    return sites;
}

这可以工作,但是会短暂弹出一个可见的控制台窗口,然后消失。 看起来不太优美。 我想我应该避免通过控制台窗口shell.Run()代替shell.Exec() 但是shell.Run()不能访问标准输出,因此我将不得不将输出重定向到一个临时文件,然后读取输出。 我还没有尝试过。 这可能会带来一些安全问题; 我得看看。


有关:
我的CustomAction应该在哪里以及如何创建和读取临时文件?

是的,您可以从自定义操作中运行appcmd,就像执行运行exe的任何自定义操作一样。 首先,您应该编写DirectorySearch / FileSearch元素以查找可执行文件的完整路径。 接下来,使用ExeCommand属性添加自定义操作。 您可能正在尝试从用户那里获得反馈,所以请立即保留。 另外,考虑使用QuietExec以便不向用户显示控制台窗口。

顺便说一句,如果我的猜测是正确的,那么您正在尝试做这样的事情 希望这可以帮助。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM