How do I enumerate IIS websites using Powershell and find the app pool for each?

前端 未结 3 2175
死守一世寂寞
死守一世寂寞 2021-02-19 20:02

I can search for websites using:

Get-WmiObject -Namespace \"root\\WebAdministration\" -Class Site -Authentication PacketPrivacy -ComputerName $servers

相关标签:
3条回答
  • 2021-02-19 20:35

    Use the webadministration module:

    Import-Module WebAdministration
    
    dir IIS:\Sites # Lists all sites
    dir IIS:\AppPools # Lists all app pools and applications
    
    
    # List all sites, applications and appPools
    
    dir IIS:\Sites | ForEach-Object {
    
        # Web site name
        $_.Name
    
        # Site's app pool
        $_.applicationPool
    
        # Any web applications on the site + their app pools
        Get-WebApplication -Site $_.Name
    }
    
    0 讨论(0)
  • Here's another option if you do not want to use the IIS:\ path.

    $site = Get-IISSite -Name 'my-site'
    $appPool = Get-IISAppPool -Name $site.Applications[0].ApplicationPoolName
    
    0 讨论(0)
  • 2021-02-19 20:50

    Try the following:

    [Void][Reflection.Assembly]::LoadWithPartialName("Microsoft.Web.Administration")
    
    $sm = New-Object Microsoft.Web.Administration.ServerManager
    
    foreach($site in $sm.Sites)
    {
        $root = $site.Applications | where { $_.Path -eq "/" }
        Write-Output ("Site: " + $site.Name + " | Pool: " + $root.ApplicationPoolName)
    }
    

    The script above lists every site on the server and prints the root application pool name for each site.

    0 讨论(0)
提交回复
热议问题