Мне нужно изменить физический путь веб-сайта через командную строку с помощью инструмента appcmd.exe, но я не могу понять синтаксис. Может кто-нибудь помочь?
Как изменить физический путь веб-сайта в IIS7 с помощью APPCMD?
Ответ 1
Вот как вы должны:
C:\Windows\System32\inetsrv > appcmd set vdir "MySite/" -physicalPath: "C:\inetpub\temp"
Примечание. "MySite/" - это имя вашего виртуального каталога, поэтому, если ваш виртуальный каталог находится под стандартным веб-сайтом, вам, вероятно, придется установить "Default Web Site/MySite/"
Как выяснить, как делать другие команды appcmd, просто введите: appcmd set vdir/?
и вы получите всю информацию о том, что вы можете сделать, чтобы установить свой виртуальный каталог.
Более конкретно, если вы хотите узнать, какие настройки вы можете изменить для определенного типа виртуального каталога: appcmd set vdir "MySite/" /?
Эти примеры предназначены только для виртуального каталога, применяемые к другим командам appcmd.
Надеюсь, что это поможет
Ответ 2
В IIS 7.5 для меня работает следующее. Он изменяет физический путь веб-сайта:
appcmd set site /site.name:"website name" /application[path='/'].virtualDirectory[path='/'].physicalPath:"C:\new\path"
Введите следующее, чтобы получить полный список свойств, которые вы можете установить:
appcmd set site /site.name:"website name" /?
Ответ 3
Правильный ответ. Вот как это могло бы выглядеть для настройки веб-сайта по умолчанию и нескольких других виртуальных каталогов. Мы хотим, чтобы веб-сайт по умолчанию был на D: со специальным уникальным именем пути для приложения, но два из виртуальных каталогов возвращаются на C: с их собственными путями:
C:\windows\system32\inetsrv\appcmd.exe set vdir "Default Web Site/" -physicalPath:"D:\MyUniquePath"
C:\windows\system32\inetsrv\appcmd.exe set vdir "Default Web Site/OtherWebSite" -physicalPath:"C:\OtherWeb\ApplicationServer\web"
C:\windows\system32\inetsrv\appcmd.exe set vdir "Default Web Site/ExtraPlugins" -physicalPath:"C:\OtherWeb\ApplicationServer\plugins"
Синтаксис прост, но определение точной строки, которую appcmd принимает для виртуального каталога, может быть сложным.
Ответ 4
Получить список виртуальных каталогов по имени сайта и имени приложения, чтобы убедиться, что вы пытаетесь установить правильные вещи.
C:\Windows\System32\inetsrv\appcmd.exe list apps /config /xml
необязательно труба, которая |more
и/или mode con cols=160
это регулярное выражение вытащило части, которые я хотел
var q= from siteApp in config.XPathSelectElements("appcmd/APP")
let appName=siteApp.Attribute(XNamespace.None+"APP.NAME").Value
from app in siteApp.XPathSelectElements("application")
let appPath=app.Attribute(XNamespace.None+"path").Value
let pool=app.Attribute(XNamespace.None+"applicationPool").Value
let vd=app.XPathSelectElements("virtualDirectory[@path]")
let virtuals=vd.Select (v => new{VirDir=v.Attribute(XNamespace.None+"path").Value,PhysicalPath=v.Attribute(XNamespace.None+"physicalPath").Value})
let xvirtuals=virtuals.Select (v => new{ VirDir=v.VirDir,
PhysicalPath=v.PhysicalPath,
EnvRoot=v.PhysicalPath.ToString().StartsWith("%")})
select new{AppName=appName,AppPath=appPath, Pool=pool,Virtuals=xvirtuals};
то для конкретного сайта он становится
appcmd.exe set vdir "DefaultWebSite/jms" -physicalPath:"c:\inetpub\wwwroot\mytargetPath"
здесь переменные подстановки:
appcmd.exe set vdir "
+ appName + virt.VirDir + " -physicalPath:"
+ targetPath + "
и посмотреть настройки конфигурации только для этого сайта:
C:\Windows\System32\inetsrv\appcmd.exe list apps /config /xml /path:/jms
другое использование, о котором нужно знать:
C:\Windows\System32\inetsrv\appcmd.exe list apps /metadata /config:* /xml
Ответ 5
И если вы пытаетесь изменить физический путь веб-приложения, вот пример изменения веб-приложения "Spockadoodle", созданного под веб-сайтом "Веб-сайт по умолчанию", чтобы иметь физический путь "C: _junk".
appcmd set app /app.name:"Default Web Site/spockadoodle" -[path='/'].physicalPath:c:\_junk
Я понял это, выполнив команду:
appcmd set app /app.name:"Default Web Site/spockadoodle" /?
а на выходе я наблюдался
ERROR (message:-path
-applicationPool
-enabledProtocols
...
-[path='string'].physicalPath
и до этого в выводе команды
appcmd set apps /?
упомянутый результат:
Пример: appcmd set app "Веб-сайт по умолчанию /" /enabledProtocols: http
Sets the "enabledProtocols" property of the application "Default Web Site/".
Итак, из примера, цитирующего, как установить "enabledProtocols", я заменил пример [path = 'string']. physicalPath
Знать значение для выражения атрибута [path = 'string'] Я заметил в выводе команды
appcmd list app "Default Web Site/spockadoodle" /config
вывод показывает, что в Web App Spockadoodle есть значение атрибута пути "/":
< application path = "/spockadoodle" applicationPool = "IRServices" >
< virtualDirectoryDefaults/" >
< virtualDirectory path = "/" physicalPath = "c: _junk "/" >
</приложение >
Кроме того, я решил использовать идентификатор /app.name из примеров на веб-сайте http://www.iis.net/learn/get-started/getting-started-with-iis/getting-started-with-appcmdexe