如何使用Power Shell脚本获取IIS站点的物理路径和绑定详细信息

问题描述 投票:0回答:2

我写了一个PS脚本,其中将所有IIS站点详细信息和应用程序池详细信息导出到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

OutPut

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站点和应用程序池详细信息

预先感谢。

powershell
2个回答
1
投票

您在该行的代码中有一个奇怪的注释,将其破坏;但是,尝试这个:

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

而不是

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

对于绑定:

$Website.Bindings.bindingInformation

而不是

$Website.Bindings.Collection

0
投票

您可以使用Get-WebsiteGet-IISAppPool执行以下操作。

$Websites = Get-Website

foreach ($Website in $Websites) {

    $AppPool = Get-IISAppPool -Name $Website.ApplicationPool

    [PSCustomObject]@{
        Website_Name                  = $Website.Name
        Website_Id                    = $Website.Id -join ';'
        Website_State                 = $Website.State -join ';'
        Website_PhysicalPath          = $Website.PhysicalPath
        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 ';'
    }
}

样本输出

Website_Name                  : Default Web Site
Website_Id                    : 1
Website_State                 : Started
Website_PhysicalPath          : %SystemDrive%\inetpub\wwwroot
Website_Bindings              : net.msmq localhost;msmq.formatname localhost;net.tcp 808:*;net.pipe *;http *:80:
Website_Attributes            : name=Default Web Site;id=1;serverAutoStart=True;state=1
AppPool_Name                  : DefaultAppPool
AppPool_State                 : Started
AppPool_ManagedRuntimeVersion : v4.0
AppPool_ManagedPipelineMode   : Integrated
AppPool_StartMode             : OnDemand

所做的更改

  1. 使用Get-Website填充$Website
  2. $Website.ApplicationPool传递到-NameGet-IISAppPool参数中。
  3. Website_PhysicalPath设置为`$ Website.PhysicalPath
© www.soinside.com 2019 - 2024. All rights reserved.