35

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

4

5 回答 5

50

这是你应该做的:

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

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


至于弄清楚如何执行其他 appcmd 命令,只需键入:appcmd set vdir /?

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

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

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

希望这可以帮助

于 2009-10-31T12:13:50.020 回答
13

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

参考

于 2014-02-19T10:53:52.743 回答
6

上面的答案是正确的。这是设置默认网站和其他几个虚拟目录的样子。我们希望默认网站位于 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 为虚拟目录使用的确切字符串可能很棘手。

于 2011-10-06T12:43:45.543 回答
6

如果您尝试更改 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 "Default Web Site/" /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 标识符

于 2014-10-28T15:07:56.373 回答
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
于 2012-09-04T20:29:59.050 回答