Cara mendaftar Direktori Virtual di IIS dari semua situs web di PowerShell


8

Saya telah mencapai penghalang total dan tidak dapat menemukan cara mencetak direktori virtual untuk setiap situs web di IIS 8. Saya terus mengambil Aplikasi dan mengosongkan kesalahan argumen nol dan tidak bisa menemukan jalan keluar untuk mendapatkan direktori virtual untuk didaftar.

Saya memerlukan data berikut untuk mendaftar tentang Direktori Virtual:

  • Jalan Fisik
  • Asosiasi App Pool
  • Nama situs
  • Kredensial

Di bawah ini adalah kode yang saya gunakan dan main-main dengan:

    *See revised code below*

Saya juga telah menggunakan Appcmd.exeperintah untuk mencoba dan membuat daftar Direktori Virtual:

C:\Windows\System32\inetsrv\appcmd.exe LIST VDIRS

Tapi saya masih belum mendapatkan output yang saya butuhkan. Apa pun atau bantuan apa pun akan sangat dihargai! Terima kasih!

EDIT # ------------------------------------------------ ----------------------

Mendapat direktori virtual saya untuk ditampilkan dengan mengomentari beberapa baris tetapi hanya mencetak nama dan:

  • Jalan Fisik
  • Asosiasi App Pool
  • Nama situs
  • Kredensial

masih belum diketahui oleh saya, di bawah ini adalah kode revisi:

  Import-Module WebAdministration
    $Websites = Get-ChildItem IIS:\Sites 
    foreach($Site in $Websites)
            {
                $webapps = Get-WebApplication -Site $Site.name 
                $VDir = Get-WebVirtualDirectory -Site $Site.name #-Application $webapps.name
                                foreach($webvdirectory in $VDir)
                                    {
                                        $webvdirectory2 = $webvdirectory.path
                                        Write-Host $webvdirectory2.split("/")[-1]
                                        #Write-Host $webvdirectory
                                        #Write-Host $webvdirectory.name

                                    } 
                            #Write-Host $VDir 

            }

Kecuali Anda mengonversi direktori virtual ke aplikasi, itu mewarisi kumpulan aplikasi situs. Apakah Anda juga mencari direktori virtual yang dikonversi ke aplikasi serta direktori virtual "normal"?
jscott

$ jscott Saya mencari untuk mencetak semua direktori virtual yang ada di IIS, dan informasi yang ditentukan saya tercantum di bagian atas.
user38725

Jawaban:


12

Anda menulis bahwa Anda tidak dapat menemukan cara untuk mengambil:

  • Jalan Fisik
    • dapat diakses secara langsung melalui physicalPathproperti
  • Asosiasi App Pool
    • tidak masuk akal, Aplikasi ditugaskan ke kumpulan aplikasi, direktori itu sendiri tidak
  • Nama situs
    • Anda sudah tahu ini ( $Site.name)
  • Kredensial
    • Saya berasumsi Anda hanya ingin nama pengguna jika ada

Semua ini dapat diambil dengan sedikit perubahan pada skrip Anda yang ada:

Import-Module WebAdministration

$Websites = Get-ChildItem IIS:\Sites 

$AllVDirs = @()

foreach($Site in $Websites)
{
    $VDirs = Get-WebVirtualDirectory -Site $Site.name
    foreach($webvdirectory in $VDirs)
    {
            $vdir = New-Object psobject -Property @{
                "Name" = ($webvdirectory.path -split "/")[-1]
                "Site" = $Site.name
                "Path" = $webvdirectory.path
                "PhysicalPath" = $webvdirectory.physicalPath
                "PhysicalPathCredentials" = $webvdirectory.userName
            }

            $AllVDirs += $vdir
    } 
}

$AllVDirs

Sekarang Anda dapat mengekspor $AllVDirske Xml, Csv atau cukup mencetaknya ke host PowerShell.


2

Terima kasih @Mathias R. Jessen, saya lupa tentang posting ini dan saya seharusnya kembali karena saya sudah mengetahuinya. Script Anda berfungsi dengan sempurna dan ini milik saya hanya untuk S & Gs, tidak menyadari bahwa yang harus saya lakukan hanyalah memanggil objek dan properti.

$Websites = Get-ChildItem IIS:\Sites 
    foreach($Site in $Websites)
            {
                $webapps = Get-WebApplication -Site $Site.name 
                $VDir = Get-WebVirtualDirectory -Site $Site.name #-Application $webapps.name
                                foreach($webvdirectory in $VDir)
                                    {
                                        $webvdirectory2 = $webvdirectory.path
                                        Write-Host $webvdirectory2.split("/")[-1] "::: is the Virtual Directory" -ForegroundColor Green
                                        Write-Host $webvdirectory.physicalPath   
                                        Write-Host $webvdirectory.userName                                         
                                        Write-Host $webvdirectory.password
                                        Write-Host $webvdirectory.logonMethod
                                    } 
                            #Write-Host $VDir 

            }

Juga memiliki masalah lain dan tidak tahu apakah Anda memiliki jawabannya, bagaimana saya memanggil properti kredensial Path Fisik untuk aplikasi web? Saya tidak dapat mencetak nama pengguna atau kata sandi, tetapi saya dapat mencetak metode logon yang menggunakan properti yang sama? di bawah ini adalah kode saya untuk aplikasi web, sangat mirip dengan kode direktori virtual saya:

$Websites = Get-ChildItem IIS:\Sites 
    foreach($Site in $Websites)
            { 
             $webapps = Get-WebApplication -Site $Site.name 
                    foreach($webapp in $webAPPS)
                        {
                        Write-Host $webapp.applicationPool
                        Write-Host $WebApp.virtualDirectoryDefaults.userName
                        Write-Host $webapp.virtualDirectoryDefaults.password
                        Write-Host $webapp.virtualDirectoryDefaults.logonMethod
                        $webapp2 = $webapp.path
                        Write-Host $WebApp2.split("/")[-1] "::: is the Web Application" -ForegroundColor Green

                        } 
            }

Saya juga berpikir jika saya mendapatkan $ Site.userName dan $ Site.password, bukankah mereka akan sama untuk Aplikasi Web?
user38725

0

Ini akan membuat larik yang berisi Nama Situs, Nama Direktori Virtual dan Jalur Fisik Direktori Virtual.

$SiteVirtualDirectories = @()
$Sites = gci IIS:\Sites
foreach($Site in $Sites)
    {
    $VirtualDirectories = gci "IIS:\Sites\$($Site.Name)" | ?{$_.NodeType -match "virtualDirectory"}
    foreach($VirtualDirectory in $VirtualDirectories)
        {
        $SiteVirtualDirectories += @([pscustomobject]@{Site=$Site.Name;VirtualDirectory=$VirtualDirectory.Name;PhysicalPath=$VirtualDirectory.PhysicalPath})
        }
    }
Write-Host $SiteVirtualDirectories
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.