appcmd でサイトの物理パスを取得する方法

appcmd でサイトの物理パスを取得する方法

次の appcmd コマンドを試しています:

appcmd list app /site.name:"misechko.com.ua-DEV" /xml | appcmd list vdir /in /text:physicalPath

misechko.com.ua-DEV は IIS の正しいサイト名です。appcmd はパスに登録されています。

cmd.exe でコマンドを実行しようとすると、次のエラー出力が表示されます。

エラー (hresult:8007000d、メッセージ:入力にエラー要素が含まれています。これは、入力を生成する操作が失敗したことを示している可能性があります。)

アプリのセットアップで何が間違っているのでしょうか? cmd と powershell のアプローチを混在させていると思いますが、上記のスクリプトは PowerShell でも機能しません。Web サイト名でパスを取得する PowerShell の方法の方が望ましいです。

PS 私の PowerShell の代替手段も動作しません:

$appCmd = "$Env:SystemRoot\system32\inetsrv\appcmd.exe"

$appcmd list app /site.name:"misechko.com.ua-DEV" /xml | $appcmd list vdir /in /text:physicalPath

ありがとう!

答え1

自分で調べたところ、解決策が見つかりました:

     function GetPhysicalPath ([String]$siteName) {

        function Get-PipelineInput
        {
            end {
                [xml]$appConfigXml = $input
                return $appConfigXml.application.virtualDirectory.physicalPath
            }
        }

        $appCmd = "$Env:SystemRoot\system32\inetsrv\appcmd.exe"  

        return & $appCmd list app /site.name:"$siteName" /config | Get-PipelineInput
    }

答え2

これも私の場合はうまくいきました。管理者として cmd を実行します。

appcmd list app /site.name:"Default Web Site" /path:"/" /xml | appcmd list vdir /in /text:physicalPath

ソース

関連情報