appcmd.exeツールを使用してコマンドラインからWebサイトの物理パスを変更する必要がありますが、構文がわかりません。誰かが助けることができますか?
5 に答える
これはあなたがすべき方法です:
C:\Windows\System32\inetsrv> appcmd set vdir "MySite/" -physicalPath:"C:\inetpub\temp"
注: 「MySite/」は仮想ディレクトリの名前であるため、仮想ディレクトリが既定の Web サイトの下にある場合は、「既定の Web サイト/MySite/」を設定する必要があります。
他の appcmd コマンドを実行する方法を理解するには、次のように入力します。appcmd set vdir /?
仮想ディレクトリを設定するためにできることに関するすべての情報が得られます。
さらに具体的には、特定の仮想ディレクトリ タイプに対して変更できる設定を知りたい場合は、次のようにします。appcmd set vdir "MySite/" /?
これらの例は、他の appcmd コマンドに適用されるため、仮想ディレクトリのみを対象としています。
お役に立てれば
以下は、IIS 7.5 で動作します。Web サイトの物理パスを変更します。
appcmd set site /site.name:"website name" /application[path='/'].virtualDirectory[path='/'].physicalPath:"C:\new\path"
次のように入力して、設定できるプロパティの完全なリストを取得します。
appcmd set site /site.name:"website name" /?
Web アプリケーションの物理パスを変更する場合に備えて、Web サイト "Default Web Site" の下に作成された 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 アプリ Spockadoodle にパス属性値「/」があることを示しています。
<application path="/sockadoodle" 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 識別子を使用することがわかりました
上記の答えは正しいです。既定の Web サイトといくつかの他の仮想ディレクトリを設定すると、次のようになります。アプリの特別な一意のパス名を使用して、既定の Web サイトを D: に配置する必要がありますが、2 つの仮想ディレクトリは、独自のパスを使用して 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 が仮想ディレクトリに使用する正確な文字列を特定するのは難しい場合があります。
サイトおよびアプリ名ごとに仮想ディレクトリのリストを取得して、正しいものを設定しようとしていることを確認します。
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