Чтобы получить список виртуальных каталогов по сайту и имени приложения, чтобы убедиться, что вы пытаетесь установить правильную вещь.
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