Как изменить физический путь веб-сайта в IIS7 с помощью APPCMD? - PullRequest
29 голосов
/ 25 октября 2009

Мне нужно изменить физический путь веб-сайта через командную строку с помощью инструмента appcmd.exe, но я не могу понять синтаксис. Может кто-нибудь помочь?

Ответы [ 5 ]

43 голосов
/ 31 октября 2009

Вот как вы должны поступить:

C: \ Windows \ System32 \ inetsrv> appcmd set vdir "MySite /" -physicalPath: "C: \ inetpub \ temp"

Примечание: «MySite /» - это имя вашего виртуального каталога, поэтому, если ваш виртуальный каталог находится на веб-сайте по умолчанию, вам, вероятно, придется установить «Веб-сайт по умолчанию / MySite /»


Что касается выяснения того, как выполнять другие команды appcmd, просто введите: appcmd set vdir /?

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

Более конкретно, если вы хотите узнать, какие настройки вы можете изменить для определенного типа виртуального каталога: appcmd set vdir "MySite /" /?

Эти примеры предназначены только для виртуального каталога, поскольку они применяются к другим командам appcmd

Надеюсь, это поможет

10 голосов
/ 19 февраля 2014

Следующее работает для меня на 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" /?

Ссылка

5 голосов
/ 06 октября 2011

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

3 голосов
/ 05 сентября 2012

Чтобы получить список виртуальных каталогов по сайту и имени приложения, чтобы убедиться, что вы пытаетесь установить правильную вещь.

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
2 голосов
/ 28 октября 2014

И в случае, если вы пытаетесь изменить физический путь веб-приложения, приведу пример изменения веб-приложения «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 "Веб-сайт по умолчанию /" / enabledПротоколы: 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
Вывод

показывает, что в веб-приложении Spockadoodle есть значение атрибута пути "/":

Также я решил использовать идентификатор /app.name из примеров на сайте http://www.iis.net/learn/get-started/getting-started-with-iis/getting-started-with-appcmdexe

...