web-dev-qa-db-ja.com

APPCMDを使用してIIS7のWebサイトの物理パスを変更するにはどうすればよいですか?

Appcmd.exeツールを使用してコマンドラインからWebサイトの物理パスを変更する必要がありますが、構文がわかりません。誰か助けてもらえますか?

29
Paul Go

これはあなたがすべき方法です:

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コマンドに適用されるため、仮想ディレクトリの例です

お役に立てれば

44
Enes

以下は、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" /?

参考

10
Salman A

上記の答えは正しいです。デフォルトの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が仮想ディレクトリに使用する正確な文字列を特定するのは難しい場合があります。

5
James

サイトとアプリ名ごとに仮想ディレクトリのリストを取得して、正しいものを設定しようとしていることを確認します。

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
3
Maslow

また、Webアプリケーションの物理パスを変更しようとしている場合は、次の例で、Webサイト「既定の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" />

</アプリケーション>

また、ウェブサイトの例から/app.name識別子を使用することもわかりました http://www.iis.net/learn/get-started/getting-started-with-iis/getting-started- with-appcmdexe

2
Beans