Пинг нескольких IP / HostNames - PullRequest
0 голосов
/ 28 февраля 2020

Я просто пытаюсь сделать простую проверку IP / Hostname. Одна часть, с которой я борюсь, - это заставить пинговать каждый элемент из списка. Он показывает только результат первого или последнего.

Я пытался добавить элементы из текстового поля в массив и пинговать их таким образом, и он дал те же результаты.

Вот мой текущий код.

[System.Windows.Forms.Application]::EnableVisualStyles()

function ping-list{
$IPStatus.Text = ""

$names = @($IPList.text)
$Names | ForEach-Object{
  if (Test-Connection -ComputerName $_ -Count 1){
   $IPStatus.Text += "$_ is Online"
   Write-Host "$_ is Online"
  }
  else{
    $IPStatus.Text += "$_ is Offline"
    Write-Host "$_ is Offline"
  }
  }
}

$Pinger                          = New-Object system.Windows.Forms.Form
$Pinger.ClientSize               = '657,557'
$Pinger.text                     = "Pinger"
$Pinger.TopMost                  = $false

$IPStatus                        = New-Object system.Windows.Forms.TextBox
$IPStatus.multiline              = $true
$IPStatus.width                  = 234
$IPStatus.height                 = 498
$IPStatus.enabled                = $true
$IPStatus.location               = New-Object System.Drawing.Point(408,45)
$IPStatus.Font                   = 'Microsoft Sans Serif,10'
$IPStatus.Text                   = "Ready"

$IPList                          = New-Object system.Windows.Forms.TextBox
$IPList.multiline                = $true
$IPList.width                    = 234
$IPList.height                   = 498
$IPList.enabled                  = $true
$IPList.location                 = New-Object System.Drawing.Point(15,45)
$IPList.Font                     = 'Microsoft Sans Serif,10'
$IPList.Text                     = @("127.0.0.1")

$PingButton                      = New-Object system.Windows.Forms.Button
$PingButton.text                 = "button"
$PingButton.width                = 60
$PingButton.height               = 30
$PingButton.location             = New-Object System.Drawing.Point(298,240)
$PingButton.Font                 = 'Microsoft Sans Serif,10'
$PingButton.Add_Click({ping-list})

$Pinger.controls.AddRange(@($IPStatus,$IPList,$PingButton))

$Pinger.Add_Shown(            {$Pinger.Activate()})
$Pinger.ShowDialog()

1 Ответ

1 голос
/ 28 февраля 2020

$ IPList.text получает весь текст в текстовом поле.

Вместо этого используйте Линии

function ping-list{
    $IPStatus.Text = ""

    $Names = @($IPList.Lines)
    $Names | ForEach-Object{
        if (Test-Connection -ComputerName $_ -Count 1){
            $IPStatus.Text += "$_ is Online`r`n"
            Write-Host "$_ is Online"
        }
        else{
            $IPStatus.Text += "$_ is Offline`r`n"
            Write-Host "$_ is Offline"
        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...