Получить идентификатор веб-сайта IIS программно

Я пытаюсь использовать adsutil в сценарии установки веб-приложения, которое я устанавливаю на IIS 6.0, для настройки контроля доступа. Есть команда, которая работает следующим образом:

adsutil.vbs set w3svc/1/root/Authflags 4

Это команда для веб-сайта по умолчанию, поскольку его Идентификатор равен 1. Однако новым веб-приложениям присваивается сгенерированный Идентификатор. В моем случае приложению, которое я установил, был присвоен идентификатор 2082238887, поэтому моя команда должна выглядеть так

adsutil.vbs set w3svc/2082238887/root/Authflags 4

Тем не менее, я знаю это значение только по предыдущей установке приложения. Как бы я получить этот идентификатор во время новой установки? Каждый пример, который я видел для adsutil, предполагает, что вы работаете с веб-сайтом по умолчанию, и, следовательно, с идентификатором 1.

Мне нужен мой скрипт установки, чтобы установить приложение, получить его идентификатор, а затем использовать его для установки разрешений через adsutil.

1 ответ

Решение

Этот сценарий позволяет указать имя сайта в качестве параметра и выполнять итерацию по веб-сайтам, пока они не будут соответствовать названию сайта, которое вы предоставляете. Я включил код для обновления authflags. Это можно запустить через cscript.exe.

Dim Siteobj
Dim Site
Dim SiteName
Dim SiteId
Dim SiteLocation

SiteName=WScript.Arguments( 0 )

Set SiteObj = GetObject("IIS://localhost/W3SVC")

for each Site in Siteobj

  if Site.keytype="IIsWebServer" Then  

    if Site.ServerComment = SiteName Then

      SiteId=Site.Name     

      SiteLocation = "IIS://LocalHost/w3svc/" & SiteId
      SiteLocation = SiteLocation & "/root"

      Dim SiteObj1
      Set SiteObj1  = GetObject(SiteLocation)
      SiteObj1.authflags=4
      SiteObj1.SetInfo

    End if    
  End if 
Next
Другие вопросы по тегам