Я не думаю, что вы можете сделать это непосредственно из командного файла, но вы должны быть в состоянии сделать это из 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, поэтому я не могу проверить это на данный момент, но если у вас возникнут проблемы с ее работой, не стесняйтесь, дайте мне знать в комментариях, и я сделаю все возможное, чтобы исправить эту проблему.
Итак, я думаю, вам нужно, чтобы он работал с IIS6 и IIS7? Можем ли мы игнорировать IIS5? У вас уже есть метод определения версии IIS? – RGuggisberg
Опубликовать то, что у вас есть, поэтому мы не догадываемся. – RGuggisberg
@RGuggisberg - это только IIS6 и IIS7. Версия устанавливается конфигурационной базой данных на каждом сервере. В IIS7 я могу получить все детали, которые мне нужны, но в IIS6 я не могу. Я могу получить имя и привязки с помощью iisweb/query и виртуальных каталогов с помощью iisvdir/query. Но я не могу получить Домашний каталог веб-сайта. –