Powershell IIS审核脚本

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

我正处于学习PowerShell的早期阶段,我正在尝试编写一个脚本,该脚本可以从IIS服务器远程收集信息,但是遇到了几个问题。

第一个是IP地址和OU列在输出文件中保持为空。第二个问题是我无法将“管理员组”列的格式设置为每行1个组,或以逗号分隔。

这是代码的当前版本:

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


#Running the invoke-command on remote machine to run the iisreset


$output = foreach ($computer in $computers) 
{
       Write-Host "Details from server $computer..."

    try{
           Invoke-command  -ComputerName $computer -ErrorAction Stop -ScriptBlock{

           # Ensure to import the WebAdministration and AD module

                Import-Module WebAdministration
                Import-Module ActiveDirectory

                $webapps = Get-WebApplication
                $list = @()
                foreach ($webapp in get-childitem IIS:\AppPools\)
                {
                    $name = "IIS:\AppPools\" + $webapp.name
                    $item = @{}
                    $item.server = $env:computername
                    $item.WebAppName = $webapp.name
                    $item.Version = (Get-ItemProperty $name managedRuntimeVersion).Value
                    $item.State = (Get-WebAppPoolState -Name $webapp.name).Value
                    $item.UserIdentityType = $webapp.processModel.identityType
                    $item.Username = $webapp.processModel.userName
                    $item.Password = $webapp.processModel.password
                    $item.OU = (Get-ADComputer $_ | select DistinguishedNAme)
                    $item.IPAddress = (Get-NetIPAddress -AddressFamily IPv4)
                    $item.Administrators = (Get-LocalGroupMember -Group "Administrators")



                    $obj = New-Object PSObject -Property $item
                    $list += $obj
                }



                $list | select -Property "Server","WebAppName", "Version", "State", "UserIdentityType", "Username", "Password", "OU", "Ip Address", "Administrators"

        }

    } catch {
        Add-Content .\failedservers.txt -Force -Value $computer
    }
} 

$output | Export-Csv -Path .\output.csv
#Stop-Transcript

我非常感谢您提供任何有关如何使其正常工作或改进代码本身的意见。预先感谢!

powershell iis scripting audit
1个回答
0
投票

对于OU属性,您将要引用$env:COMPUTERNAME而不是$_

$item.OU = (Get-ADComputer $env:COMPUTERNAME |Select -Expand DistinguishedName)

对于IPAddressAdministrators字段,您将要使用-join创建相关值的逗号分隔列表:

$item.IPAddress = (Get-NetIPAddress -AddressFamily IPv4).IPAddress -join ','
$item.Administrators = (Get-LocalGroupMember -Group "Administrators").Name -join ','
© www.soinside.com 2019 - 2024. All rights reserved.