вот как я бы сделал то, что я думаю вы пытаетесь сделать ... [ ухмылка ]
что он делает ...
- создает список систем для проверки связи
заменяет весь материал #region/#endregion
вызовом Get-Content
или каким-либо другим способом загрузки списка в виде имен системы в виде простого текста. - устанавливает различные константы
- перебирает список систем
- перебирает счетчик тестов
- получает
$False/$True
ответ от Test-Connection
- записывает "pingable" информацию на экран
- создает
[PSCustomObject]
с желаемыми свойствами - отправляет это в
$Results
collection - отображает коллекция на экране
- сохраняет коллекцию в файл CSV
вот код ...
#region >>> fake reading in a text file
# in real life, use Get-Content
$ComputerList = @(
'LocalHost'
'10.0.0.1'
'127.0.0.1'
'BetterNotBeThere'
)
#endregion >>> fake reading in a text file
$TestCount = 3
$DateTimeFormat = 'yyyy-MM-dd HH:mm:ss.ff'
$LogDir = $env:TEMP
$PingLog = 'PingLog_-_{0}.csv' -f (Get-Date).Date.ToString('yyyy-MM-dd')
$FullPingLog = Join-Path -Path $LogDir -ChildPath $PingLog
$Results = foreach ($CL_Item in $ComputerList)
{
foreach ($TC_Item in 1..$TestCount)
{
$Pingable = Test-Connection -ComputerName $CL_Item -Count 1 -Quiet
if ($Pingable)
{
Write-Host ('Ping of {0} was successful.' -f $CL_Item) -ForegroundColor 'Green'
}
else
{
Write-Warning (' Unable to Ping {0} ...' -f $CL_Item)
}
}
[PSCustomObject]@{
ComputerName = $CL_Item
Pingable = $Pingable
TimeStamp = Get-Date -Format $DateTimeFormat
}
}
# show on screen
$Results |
# this forces things to show immediately
# otherwise the "Write-*" calls might interleave with the output stream
Out-Host
# send to CSV
$Results |
Export-Csv -LiteralPath $FullPingLog -NoTypeInformation
вывод на экран ...
Ping of LocalHost was successful.
Ping of LocalHost was successful.
Ping of LocalHost was successful.
WARNING: Unable to Ping 10.0.0.1 ...
WARNING: Unable to Ping 10.0.0.1 ...
WARNING: Unable to Ping 10.0.0.1 ...
Ping of 127.0.0.1 was successful.
Ping of 127.0.0.1 was successful.
Ping of 127.0.0.1 was successful.
WARNING: Unable to Ping BetterNotBeThere ...
WARNING: Unable to Ping BetterNotBeThere ...
WARNING: Unable to Ping BetterNotBeThere ...
ComputerName Pingable TimeStamp
------------ -------- ---------
LocalHost True 2020-04-10 19:47:33.98
10.0.0.1 False 2020-04-10 19:47:45.62
127.0.0.1 True 2020-04-10 19:47:45.65
BetterNotBeThere False 2020-04-10 19:47:45.68
содержимое файла PingLog_-_2020-04-10.csv
...
"ComputerName","Pingable","TimeStamp"
"LocalHost","True","2020-04-10 19:47:33.98"
"10.0.0.1","False","2020-04-10 19:47:45.62"
"127.0.0.1","True","2020-04-10 19:47:45.65"
"BetterNotBeThere","False","2020-04-10 19:47:45.68"