1

Я хочу добавить IP-адрес в таблицу, где статус служб выбирается из списка имен хостов, сохраненных в файле TXT. Один хост может содержать более одной службы. Имя службы начинается с I. Как я это делаю

 $servers=Get-Content c:\servers.txt
    $servers|Foreach-Object{Get-Service -ComputerName $_ -Name I*}  | Select-Object -Property  ServiceName, Status | ConvertTo-Html -Head $htmlhead | Out-String

1 ответ1

1

Исходя из ваших комментариев, вот сценарий, который я бы использовал для такого сценария:

# Gettings the server list from text file
$servers = Get-Content c:\servers.txt

# Creating an empty array
$array = @()

# Starting the loop for each server in the list
foreach ($server in $servers) 
{
    # Getting the server's IP. Other methods could apply
    $IP = [System.Net.Dns]::GetHostAddresses("$server").IPAddressToString

    # Getting the list of services
    $services = Get-Service -ComputerName $server -Name I*

    # Starting the loop for each service in the list
    foreach ($service in $services)
    {
        # Creating a new PS object and adding values
        $Object = New-Object PSObject
        $Object | Add-Member -MemberType NoteProperty -Name "Hostname" -Value $server
        $Object | Add-Member -MemberType NoteProperty -Name "IP" -Value $IP
        $Object | Add-Member -MemberType NoteProperty -Name "Service" -Value $service.Name
        $Object | Add-Member -MemberType NoteProperty -Name "Status" -Value $service.Status

        #Feeding the array with the values
        $array += $Object
    }
}

# Now converting the array to HTML
$array | ConvertTo-Html -Head $htmlhead | Out-String

В консоли массив $ будет выглядеть так:

Пожалуйста, попробуйте и дайте нам знать, если это соответствует вашим потребностям. Возможно, вам придется адаптироваться в соответствии с вашей средой.

Надеюсь это поможет !

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .