Сценарии аудита Powershell IIS - PullRequest
0 голосов
/ 28 мая 2020

Я нахожусь на ранних стадиях изучения PowerShell, и я пытаюсь собрать сценарий, который удаленно собирает информацию с наших серверов IIS, но у меня возникает несколько проблем.

Первая состоит в том, что столбцы IP-адрес и OU остаются пустыми в выходном файле. Во-вторых, я не могу отформатировать столбец группы администраторов так, чтобы в каждой строке была одна группа или разделена запятыми.

Это текущая версия кода:

$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

Я был бы очень признателен за любой вклад о том, как заставить его работать должным образом или улучшить сам код. Заранее спасибо!

1 Ответ

0 голосов
/ 29 мая 2020

Для свойства OU вы захотите указать $env:COMPUTERNAME вместо $_:

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

Для полей IPAddress и Administrators, которые вы захотите использовать -join для создания списков соответствующих значений, разделенных запятыми:

$item.IPAddress = (Get-NetIPAddress -AddressFamily IPv4).IPAddress -join ','
$item.Administrators = (Get-LocalGroupMember -Group "Administrators").Name -join ','
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...