Необходимо запустить скрипт для нескольких хостов в CSV - PullRequest
0 голосов
/ 06 ноября 2019

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

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

Бонусные баллы, если вы можете помочь мне вывести результаты в журнал!

Я действительно хочу как-то объединить функциональность этого скрипта,

https://gallery.technet.microsoft.com/scriptcenter/ping-multiple-ip-addresses-3ac09a06

и приведенный ниже

Param(
    [Parameter(Mandatory=$true, ValueFromPipeline=$false, HelpMessage="HostName or IP Address")]
    [string]$HostName
)

[Console]::BackgroundColor = "Magenta"
Clear-Host
Write-Host $HostName
$LastState = $null
$LastTime = $null
do {
    $CurrentState = Test-Connection -ComputerName $HostName -Count 1 -Quiet
    if ($CurrentState -ne $LastState) {
        $Now = Get-Date

        if ($LastTime -eq $null) {
            $Delta = ""
        } else {
            $Delta = ":  Duration was " + ($Now-$LastTime).TotalSeconds + " seconds "
        }

        if ($CurrentState -eq $true) {
            Write-Host "Responding " (Get-Date) $Delta -ForegroundColor Green
        } else {
            Write-Host "Stopped " (Get-Date) $Delta -ForegroundColor Red
        }
    }
    $LastState = $CurrentState
    $LastTime = $Now
    # Give the CPU a break
    Start-Sleep -Seconds 1
} while (1 -eq 1)

1 Ответ

0 голосов
/ 06 ноября 2019

если этот скрипт делает то, что вы хотите, то вам действительно нужно настроить его так, чтобы он принимал ввод csvВ настоящее время он явно не позволяет вводить данные из канала. Поэтому вам нужно изменить ValueFromPipeline = $ false на ValueFromPipeline = $ true. Затем возьмите свой CSV-файл и передайте имя хоста в ваш скрипт.

$hosts = Import-Csv .\HostTest.csv
foreach($endpoint in $hosts){.\testHost.ps1 $endpoint.Name}

Для вашего второго запроса базовая регистрация очень проста с powershell. Везде, где вы сейчас записываете вывод в оболочку хоста, добавьте или замените строку на:

Add-Content -Path path\to\log.file -Value "The same info you're writing to the host shell"

Вы также можете использовать Set-Content -Path path \ to \ log $ date.file для создания новогофайлы для каждого процесса.

...