我需要通过命令行通过appcmd.exe工具更改网站的物理路径,但我无法弄清楚语法。有人可以帮忙吗?
答案 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" /?
答案 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">
< virtualDirectoryDefaults />
< virtualDirectory path =" /" physicalPath =" C:_junk" />
< /应用程序>
另外,我想通过网站http://www.iis.net/learn/get-started/getting-started-with-iis/getting-started-with-appcmdexe上的示例使用/app.name标识符