2013-07-15 4 views
1

Как получить Root/Home Directory на веб-сайте в IIS6 с использованием пакетного файла?Файл бита IIS6 - домашний каталог

Мой Сценарий:

Я создаю инструмент для подведения и отчетов сайтов в IIS. Я использую командные файлы и запускаю iisweb/query, чтобы получить все узлы, затем перебирать результаты и использовать iisvdir/query «Имя сайта», чтобы получить виртуальные каталоги.

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

+0

Итак, я думаю, вам нужно, чтобы он работал с IIS6 и IIS7? Можем ли мы игнорировать IIS5? У вас уже есть метод определения версии IIS? – RGuggisberg

+0

Опубликовать то, что у вас есть, поэтому мы не догадываемся. – RGuggisberg

+0

@RGuggisberg - это только IIS6 и IIS7. Версия устанавливается конфигурационной базой данных на каждом сервере. В IIS7 я могу получить все детали, которые мне нужны, но в IIS6 я не могу. Я могу получить имя и привязки с помощью iisweb/query и виртуальных каталогов с помощью iisvdir/query. Но я не могу получить Домашний каталог веб-сайта. –

ответ

2

Я не думаю, что вы можете сделать это непосредственно из командного файла, но вы должны быть в состоянии сделать это из vbscript, который вы можете вызвать из пакетного файла.

Хитрость заключается в использовании IIS WMI provider, который дает вам доступ к метабазе IIS. Например, приведенный ниже сценарий должен повторять имя и путь каждого виртуального каталога на локальном сервере.

set provider = GetObject("winmgmts://localhost/root/MicrosoftIISv2") 
set results = provider.ExecQuery("SELECT Name,Path from IISWebVirtualDirSetting") 
for each item in results 
    WScript.Echo item.Name 
    WScript.Echo item.Path 
next 

Если вы сохранили этот сценарий, как iispaths.vbs (как пример), вы могли бы назвать его из пакетного файла с:

cscript //nologo iispaths.vbs 

К сожалению, у меня нет доступа к машине с IIS6, поэтому я не могу проверить это на данный момент, но если у вас возникнут проблемы с ее работой, не стесняйтесь, дайте мне знать в комментариях, и я сделаю все возможное, чтобы исправить эту проблему.

+0

отлично работает –

1

не имею IIS6 сервер, однако, через некоторые поиски, я обнаружил, что:

  1. IIS6 использует %SystemRoot%\system32\inetsrv\MetaBase.xml и %SystemRoot%\system32\inetsrv\MBSchema.xml для хранения конфигурации (The IIS Metabase (IIS 6.0));
  2. Если ваш сервер слишком часто меняет домашние каталоги, эти xml следует обновить;
  3. с помощью командной строки анализатор (как xmlstartlet), вы можете извлечь Path свойство из IIsWebVirtualDir узла (по Metabase Structure), используя XPath.

С xmlstartlet, команда, как показано ниже, будет выводить корневой путь:

xml sel -t -v "//IIsWebVirtualDir[@Location='/LM/W3SVC/1/ROOT']/@Path" "%SystemRoot%\system32\inetsrv\MetaBase.xml" 

Может схема должна быть исправлена. Это может быть подход командной строки. Я не могу проверить его, так как у меня нет сервера IIS6, и я не могу получить образец MetaBase.xml.

+0

Я могу подтвердить, что файл доступен для iis6. Я выбрал другой ответ, поскольку он не требует каких-либо установок или чего-то еще. –

Смежные вопросы