mostrar traps snmp

param($lista)
$arch = ".\salida.csv"
"hostname`tcomunidad`ttrap`tvalor" > $arch

function check-ping ([string]$pc) {
$HostVivo = Get-WmiObject -Class Win32_PingStatus -Filter "Address='$pc'"
if (($HostVivo.StatusCode -ne "0") -or ($pc -eq $null)){
return $false
}
else{
return $true
}
}

function nulo ($txthost,$txtout){
write-host "$txthost" -fore cyan
write-output "txtout" out-file -append $arch
}

$listaS = gc $lista

foreach ($s in $listaS){
if (-not $(check-ping $s)){nulo "$s`tno responde (por wmi)" "$s`tno responde (por wmi)";continue}
$baseKey = [Microsoft.Win32.RegistryKey]::OpenRemoteBaseKey("LocalMachine", $s)
$key = $baseKey.OpenSubKey("SYSTEM\\CurrentControlSet\\Services\\SNMP\\Parameters\\TrapConfiguration", $false)
if ($key -eq $null){nulo "$s`t$dirBase no existe" "$s`t$dirBase no existe";continue}
$comunidades = $key.GetSubKeyNames()
if ($comunidades -eq $null){nulo "$s`tNo hay comunidades definidas" "$s`tno hay comunidades definidas";continue}
foreach ($comunidad in $comunidades){
$com = $Key.OpenSubKey("$comunidad", $false)
$traps = $com.getValueNames()
if ($traps -eq $null){nulo "$s`tNo hay traps configurados definidos en la comunidad $com" "$s`tNo hay traps definidos en la comunidad $com";continue}
foreach ($trap in $traps){
$val = $com.GetValue($trap)
}
write-output "$s`t$comunidad`t$trap`t$val" out-file -append $arch

write-host "`t$s" -fore cyan
write-host "`t`tcomunidad: $comunidad" -fore green
write-host "`t`t trap: $trap" -fore green
write-host "`t`t valor: $val`n" -fore green
}
}
$com.Close()
$key.Close()
$baseKey.Close()