首页 > 解决方案 > 如何使用 power shell 脚本获取 IIS 站点物理路径和绑定详细信息

问题描述

我编写了一个 PS 脚本,其中会将所有 IIS 站点详细信息和 App-pool 详细信息导出到 Excel 工作表,但是当我使用Get-IISSite命令时,物理路径和绑定详细信息未显示在输出控制台中,如下所示,代码如下,请帮我解决导出IIS站点和应用程序池详细信息时遇到的问题

代码

#Clearing the Console host in PS
Clear-Host

$Computers = Get-Content "C:\TEMP\servers.txt" 

Invoke-Command -ComputerName $Computers -ScriptBlock {
    # Changed to newer IISAdministration Module to match Get-IISAppPool
    $Websites = Get-IISSite

    foreach ($Website in $Websites) {

        $AppPool = Get-IISAppPool -Name $Website.Applications[0].ApplicationPoolName

        [PSCustomObject]@{
            Website_Name                  = $Website.Name
            Website_Id                    = $Website.Id -join ';'
            Website_State                 = $Website.State -join ';'
            Website_PhysicalPath          = Get-ChildItem -Path IIS:\Sites\P #$Website.PhysicalPath -join ';'
            Website_Bindings              = $Website.Bindings.Collection -join ';'
            Website_Attributes            = ($Website.Attributes | ForEach-Object { $_.name + "=" + $_.value }) -join ';'
            AppPool_Name                  = $AppPool.Name -join';'
            AppPool_State                 = $AppPool.State -join ';'
            AppPool_ManagedRuntimeVersion = $AppPool.ManagedRuntimeVersion -join ';'
            AppPool_ManagedPipelineMode   = $AppPool.ManagedPipelineMode -join ';'
            AppPool_StartMode             = $AppPool.StartMode -join ';'
        }
    }
} | Export-Excel -Path C:\users\$env:username\documents\Site_App-pool_Details.xlsx -AutoSize -BoldTopRow

输出

Website_Name                  : Test
Website_Id                    : 2
Website_State                 : Started
Website_PhysicalPath          : 
Website_Bindings              : 
Website_Attributes            : name=Test;id=2;serverAutoStart=False;state=
                                1
AppPool_Name                  : Test
AppPool_State                 : Started
AppPool_ManagedRuntimeVersion : v4.0
AppPool_ManagedPipelineMode   : Integrated
AppPool_StartMode             : OnDemand
PSComputerName                : AAA
RunspaceId                    : 47d..

When i use the command **Get-Website** i will get all the output details of the IIS site but not the IIS App-pool details the code is a below

Output
Website_Name                  : Test
Website_Id                    : 2
Website_State                 : Started
Website_PhysicalPath          : C:\AAA
Website_Bindings              : http 10.62.:Test.com
Website_Attributes            : name=Test;id=2;serverAutoStart=False;state=
                                1
AppPool_Name                  : 
AppPool_State                 : 
AppPool_ManagedRuntimeVersion : 
AppPool_ManagedPipelineMode   : 
AppPool_StartMode             : 
PSComputerName                : AAA
RunspaceId                    : 15d..

请帮助我了解如何使用两者中的任何命令(Get-Website 或 Get-WebSite)来获取所有 IIS 站点和 App-pool 详细信息

提前致谢。

标签: powershell

解决方案


你的代码中有一条奇怪的注释,它打破了它;但是,试试这个:

Get-Item IIS:\Sites\$Website | Select-Object -ExpandProperty physicalPath

代替

Get-ChildItem -Path IIS:\Sites\$Website.PhysicalPath

对于绑定:

$Website.Bindings.bindingInformation

代替

$Website.Bindings.Collection

推荐阅读