Я пытаюсь запустить цикл foreach для get-content и convertfrom-json cmd. Теперь я знаю, что это может иметь проблемы, связанные с несколькими значениями результатов в переменной, мне интересно, как я могу продолжать передавать эту информацию остальной части сценария.
$testconv = Get-device * |select ID
$testid = $testconv.id
$conv = foreach ($id in $testid)
{
get-content "\\HDC-PRTG-03\System Information Database\Services\Device$id.Services" | Convertfrom-json
}
$rpccheck =$conv.message
$snmpcheck = $conv.message
$svcname = $conv.data.displayname
$svcstate=$conv.data.properties.state
if($RPCon = $rpccheck |select-string -pattern RPC -AllMatches){
write-host RPC Not enabled
}else{
write-host No RPC Enabled - Moving to Services List
Теперь, когда я запускаю это без $ conv =, превращая его в переменную, он возвращает
kind : Services
recievetime : 29-01-2018 14:43:32
error : 106
Message : SNMP Channels Not Available.
Что я и ожидаю. Тем не менее, когда я определяю переменную с $ conv =, он просто начинает говорить, что не может найти пути к файлам, которые я нахожу странной ошибкой, но эй хо.
У кого-нибудь из вас, умных парней, есть какие-либо указания на то, как я могу сохранить эти объекты из памяти в памяти, чтобы я мог продолжать выполнять циклы foreach против них. Основная функция этого сценария - запросить в локальном файле .services сведения о том, какие службы запущены на устройстве, а затем создать датчики для их мониторинга в рамках нашей установки PRTG. Поэтому мне нужно иметь возможность изменить ID устройства и применить к нему вещи.
Я подозреваю, что я могу использовать слишком много циклов foreach во всем сценарии, но, честно говоря, я на 100% из моей глубины
Любое руководство чрезвычайно ценится
Сэм