如何在IIS / Windows 7上使用vbscript获取默认Web?

时间:2012-03-22 14:35:24

标签: iis windows-7 vbscript

以下vbscript在XP计算机上运行良好,但在Windows 7计算机上无效。

Set objIISRoot = getObject("IIS://localhost/W3SVC/1/Root")

mstrIISRootPath = objIISRoot.Path

' yadda yadda yadda...more stuff goes on..

Set objIISRoot = nothing

“objIISRoot”为空,因此引用objIISRoot.Path会引发错误。如何在Windows 7上的IIS中使用默认Web?

1 个答案:

答案 0 :(得分:4)

Windows7删除了基于WMI的管理编程接口,允许您执行getObject("iis://localhost...")

你有几个选择:

  • 如果要为IIS7构建,可能更容易从脚本中调用Appcmd.exe,然后解析输出。我发现命令行工具更直观,功能更强大。这是在Javascript中执行此操作的示例:
    
    function RunAppCmd(command, deleteOutput) {
        deleteOutput = deleteOutput || false;
        LogMessage("RunAppCmd("+command+") ENTER");
        var shell = new ActiveXObject("WScript.Shell");
        var fso = new ActiveXObject("Scripting.FileSystemObject");
        var tmpdir = fso.GetSpecialFolder(SpecialFolders.TemporaryFolder);
        var tmpFileName = fso.BuildPath(tmpdir, fso.GetTempName());
        var windir = fso.GetSpecialFolder(SpecialFolders.WindowsFolder);
        var appcmd = fso.BuildPath(windir,"system32\\inetsrv\\appcmd.exe") + " " + command;

        LogMessage("shell.Run("+appcmd+")");

        // use cmd.exe to redirect the output
        var rc = shell.Run("%comspec% /c " + appcmd + "> " + tmpFileName, WindowStyle.Hidden, true);
        LogMessage("shell.Run rc = "  + rc);

        if (deleteOutput) {
            fso.DeleteFile(tmpFileName);
        }
        return {
            rc : rc,
            outputfile : (deleteOutput) ? null : tmpFileName
        };
    }

我猜VBScript非常相似。

  • 另一方面,如果你正在为XP和Win7构建这个东西,那么你将需要留在COM标记。要在Win7上允许此操作,您需要安装IIS6管理包。通过Start...Run...optionalfeatures.exe访问它,然后打开WMI内容。

enter image description here

执行此操作后,您的旧WMI脚本将运行。