如何使用APPCMD更改IIS7中的网站物理路径?

时间:2009-10-24 22:10:44

标签: iis-7 appcmd

我需要通过命令行通过appcmd.exe工具更改网站的物理路径,但我无法弄清楚语法。有人可以帮忙吗?

5 个答案:

答案 0 :(得分:43)

这是你应该做的:

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

注意:“MySite /”是虚拟目录的名称,因此如果您的虚拟目录位于默认网站下,则可能需要设置“默认网站/ MySite /”


至于搞清楚如何做其他appcmd命令只需输入: appcmd set vdir /?

您将获得有关如何设置虚拟目录的所有信息。

更具体地说,如果您想知道可以为特定虚拟目录类型更改哪些设置: appcmd set vdir“MySite /”/?

这些示例仅适用于虚拟目录,适用于其他appcmd命令

希望这有帮助

答案 1 :(得分:10)

以下适用于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" /?

Reference

答案 2 :(得分:5)

上面的答案是正确的。以下是设置默认网站和其他几个虚拟目录的样子。我们希望默认网站位于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 :(得分:3)

按网站和应用名称获取虚拟目录列表,以帮助确保您尝试设置正确的内容。

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

答案 4 :(得分:2)

如果您正在尝试更改Web应用程序的物理路径,请参阅更改Web应用程序" 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">

     

< virtualDirectoryDe​​faults />

     

< virtualDirectory path =" /" physicalPath =" C:_junk" />

     

< /应用程序>

另外,我想通过网站http://www.iis.net/learn/get-started/getting-started-with-iis/getting-started-with-appcmdexe上的示例使用/app.name标识符