Cara mendapatkan jalur fisik situs dengan appcmd

5

Saya mencoba perintah appcmd berikut:

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

misechko.com.ua-DEV adalah nama situs yang benar di IIS. appcmd terdaftar di jalur;

Saya mendapatkan output kesalahan berikut ketika saya mencoba menjalankan perintah di cmd.exe:

GALAT (hresult: 8007000d, pesan: Input berisi kesalahan   elemen, yang dapat menunjukkan bahwa operasi yang menghasilkan input memiliki   gagal. )

Apa kesalahan dalam pengaturan aplikasi? Saya kira saya mencampur pendekatan cmd dan PowerShell, tetapi skrip yang disebutkan di atas juga tidak berfungsi di PowerShell. Cara PowerShell untuk mendapatkan jalur dengan nama situs web lebih disukai.

P.S. Alternatif PowerShell saya yang juga tidak berfungsi:

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

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

Terima kasih!

Maxim V. Pavlov
sumber

Jawaban:

3

Meneliti diri sendiri dan menemukan solusi:

     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
    }
Maxim V. Pavlov
sumber
Solusi yang bagus. Namun harus hati-hati, sejak appcmd list app ... akan mengembalikan semua direktori virtual sebagai saudara yaitu akan memecah parser XML. Jika Anda hanya tertarik pada root situs, lebih baik menggunakan "vdir" $appCmd list vdir "$siteName/" /config (perhatikan tanda garis miring pada nama situs), dan kemudian ubah jalur xml agar sesuai dengan yang saya inginkan. $appConfigXml.virtualDirectory.physicalPath
Dave Transom
2

Ini juga bekerja untuk saya. menjalankan cmd sebagai admin.

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

sumber

Sunil Shahi
sumber