Как я могу получить веб по умолчанию с VBScript на IIS / Windows 7? - PullRequest
2 голосов
/ 22 марта 2012

Следующий 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" имеет значение null, поэтому ссылка objIISRoot.Path вызывает ошибку.Как вы получаете на веб-сайте по умолчанию в IIS на Windows 7?

1 Ответ

4 голосов
/ 07 апреля 2012

В 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 запустится.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...