rudimko
15-01-2014, 12:24
Доброго дня!
Ситуация следующая: подключаюсь к COM-объекту к программе 1С8 для выявления информации о рабочих процессах, но возникла сложность, попробую ее описать.
Если вдруг кому знакомо, то подключение к 1С8:
$connector = New-Object -ComObject V82.COMConnector
$agent = $connector.ConnectAgent('tcp://HOST_SERVER:1540')
$clusters = $agent.GetClusters()
foreach ($cluster in $clusters) {}
$administratorCluster = ""
$passwordCluster = ""
$agent.Authenticate($cluster, $AdministratorCluster, $PasswordCluster)
Далее получаем список соединений:
$connections = $agent.GetConnections($cluster)
foreach ($connection in $connections) {}
Все нужные параметры находятся в $connection
$connection.infoBase - это название базы с которой работает текущее соединение, выводит String
$connection.process - параметры процесса
$connection.process.PID - ID процесса
$connection.process.MemorySize - Отжираемая память
$connection.process.HostName - Имя хоста сервера
Какова цель и какие затыки у меня возникли:
-----------------------------------------------------
Цель:
1. необходимо выявлять рабочие процессы ($connection.process), которые выжирают через-чур много памяти и рубить их (это понятно)
2. необходимо снять информацию с рабочего процесса перед действием №1 (информационная база, соединения на данном рабочем процессе)
Затык:
Т.к. структура COM 1С8 слегка убогая (обратная =\), а именно: переменной $connection выявляем соединение, а переменной $connection.process выявляем рабочий процесс и далее нужные параметры через ".", НО (!!!) рабочему процессу могут принадлежать несколько соединений...
Вопрос:
Как сгруппировать рабочие процессы? Т.е. создать новые объекты и сделать обратную структуру, а именно: Рабочий процесс (с такими же параметрами) -> Соединение (с параметров используемой информационной базы)
Если написал хаотично и не понятно, прошу заранее извинения, в голове каша. ;) Заранее спасибо за помощь!
Ситуация следующая: подключаюсь к COM-объекту к программе 1С8 для выявления информации о рабочих процессах, но возникла сложность, попробую ее описать.
Если вдруг кому знакомо, то подключение к 1С8:
$connector = New-Object -ComObject V82.COMConnector
$agent = $connector.ConnectAgent('tcp://HOST_SERVER:1540')
$clusters = $agent.GetClusters()
foreach ($cluster in $clusters) {}
$administratorCluster = ""
$passwordCluster = ""
$agent.Authenticate($cluster, $AdministratorCluster, $PasswordCluster)
Далее получаем список соединений:
$connections = $agent.GetConnections($cluster)
foreach ($connection in $connections) {}
Все нужные параметры находятся в $connection
$connection.infoBase - это название базы с которой работает текущее соединение, выводит String
$connection.process - параметры процесса
$connection.process.PID - ID процесса
$connection.process.MemorySize - Отжираемая память
$connection.process.HostName - Имя хоста сервера
Какова цель и какие затыки у меня возникли:
-----------------------------------------------------
Цель:
1. необходимо выявлять рабочие процессы ($connection.process), которые выжирают через-чур много памяти и рубить их (это понятно)
2. необходимо снять информацию с рабочего процесса перед действием №1 (информационная база, соединения на данном рабочем процессе)
Затык:
Т.к. структура COM 1С8 слегка убогая (обратная =\), а именно: переменной $connection выявляем соединение, а переменной $connection.process выявляем рабочий процесс и далее нужные параметры через ".", НО (!!!) рабочему процессу могут принадлежать несколько соединений...
Вопрос:
Как сгруппировать рабочие процессы? Т.е. создать новые объекты и сделать обратную структуру, а именно: Рабочий процесс (с такими же параметрами) -> Соединение (с параметров используемой информационной базы)
Если написал хаотично и не понятно, прошу заранее извинения, в голове каша. ;) Заранее спасибо за помощь!