Я работал сегодня вечером, чтобы перезаписать существующий скрипт проверки работоспособности сервера, чтобы сохранить его значения в хэш-таблице, и эта часть работает нормально. Тем не менее, я хочу, чтобы результаты попадали в CSV-файл, и этот файл был заполнен только серверами, где я отметил их как требующие действия. В настоящее время они генерируют идентификатор события 7011 или не проходят тест ping на Test-Connection
.hashtable filter/select
Вот код:
$CheckServer = @{}
$Servers = (Get-Content $Dir\Test.txt)
foreach ($Server in $Servers) {
$CheckServer.EventID7011 = Get-Eventlog -LogName System -ComputerName $Server -Newest 1 |
Where-Object {$_.EventId -eq 7011} | select Message
if ($CheckServer.EventID -ne $Null) {
$CheckServer.Server = "$Server"
$CheckServer.ActionReq = "Yes"
}
$CheckServer.Ping = Test-Connection -ComputerName $Server -Count 1 -Quiet
if (! $CheckServer.Ping) {
$CheckServer.Server = "$Server"
$CheckServer.ActionReq ="Yes"
$CheckServer.Ping = "Offline"
} else {
$CheckServer.Server = "$Server"
$CheckServer.ActionReq = "No"
$CheckServer.Ping = "Online"
}
New-Object -TypeName PSObject -Property $CheckServer |
Export-Csv "ScanResults.csv" -NoTypeInformation -Append
}
мне нужен правильный код в конце концов, как он стоит, скрипт отлично работает для сбора/хранения данных в хэш-массиве $CheckServer
, но я бы например, выбирать только те серверы, для которых требуется действие. Итак, если я сканирую 100 серверов, и 2 из них находятся в состоянии отказа ping, я хочу только те, которые были выбраны и отправлены в Export-Csv
.
Куда вы застряли? Вы можете фильтровать с помощью 'Where-Object' и экспортировать его в csv с помощью' Export-Csv' –
Thx для быстрого ответа - я не включил код, который я пытался использовать за последние несколько часов - я просто оставил его незавершенным. Теперь он отлично работает, чтобы отображать ВСЕ результаты, но я хочу показывать только те серверы, на которых я ранее устанавливал «ActionReq = Да», когда они терпят неудачу при подключении к тестированию, или регистрировать идентификатор события sys 7011. – Kenny