Я создаю сценарий для получения IP-адресов от CSV, а затем пытаюсь пинговать / подключаться к ним. В конце концов я выполню несколько команд против них и выведу все это как дополнительные данные в CSV. Прямо сейчас я работаю с 2 разными CSV (вход и выход), пока не выясню процесс добавления.
#Create a CSV
$CSVOutput = "$PSScriptRoot\Addresses scanned $(Get-Date -format “MM-dd-yyyy HHmm ss”).csv"
Write-Host "Creating output file " $CSVOutput
New-Item $CSVOutput -type file
$NewLine = "{0},{1}" -f "IPAddress", "Status"
$NewLine | add-content -path $CSVOutput
$inputCSV = "$PSScriptRoot\Addresses.csv"
$ipaddresses = import-csv $inputCSV | select-object "IPAddress" #$ColumnHeader
$inputCSV = "$PSScriptRoot\Addresses.csv"
$ipaddresses = import-csv $inputCSV
foreach($ip in $ipaddresses) {
Write-Host $ip
if (test-connection $ip.("IPAddress") -count 1 -quiet) {
$NewLine = "{0},{1}" -f $ip, "online"
$NewLine | add-content -path $CSVOutput
} else {
write-host $ip.("IPAddress") "Ping failed." -foreground red
$NewLine = "{0},{1}" -f $ip, "offline"
$NewLine | add-content -path $CSVOutput
}
}
По какой-то странной причине скрипт выводит IP-адрес в виде @{IPAddress=172.18.16.1}
, или, если я закомментирую вывод по конвейеру из строки импорта, я получу следующее: @{IPAddress=172.18.16.2; Status=}
. Пытаясь отладить это, я добавил Write-Host $ip
в качестве первой строки в цикле foreach
.
Я могу только догадываться, что я сталкиваюсь с какой-то проблемой объекта или строки, или я как-то вытягиваю дополнительное форматирование, но я не могу обойти это. Я хочу работать только с реальным IP-адресом, я не хочу, чтобы начальное и конечное форматирование @{}
Что я делаю неправильно? Как мне избавиться от лишнего форматирования?