новое событие
Информационный поток
Задания вакансии материалы разработки сообщения форума
Форум

Обсуждение к заданию: Написать скрипт CMD или PowerShell для определения активных пользователей в базе

    • #1
    • 28.12.2020 17:18
    0
    Требуется написать скрипт для командной строки или PowerShell, на выходе которого должно быть понятно, находится ли кто-нибудь в базе в данный момент, или нет. Желательно также вывести список акт...  Подробнее>>
    • #2
    • 28.12.2020 17:18
    0
    Без расширений и доработок
    • #3
    • 28.12.2020 21:08
    0
    не 1с?
    тогда вот
    users --help
    Использование: users [КЛЮЧ]… [ФАЙЛ]
    Выводит список подключенных пользователей в соответствии с ФАЙЛОМ.
    Если ФАЙЛ не задан, используется /var/run/utmp. Часто в качестве ФАЙЛА
    задают /var/log/wtmp.

    --help показать эту справку и выйти
    --version показать информацию о версии и выйти

    Оперативная справка GNU coreutils: <https://www.gnu.org/software/coreutils/>
    Об ошибках в переводе сообщений «users» сообщайте по адресу <gnu@d07.ru>
    Полная документация: <https://www.gnu.org/software/coreutils/users>
    • #4
    • 29.12.2020 13:10
    0
    ПРИМЕР:
    $returnStateOK = 0
    $returnStateWarning = 1
    $returnStateCritical = 2
    $returnStateUnknown = 3

    #$ErrorActionPreference = "SilentlyContinue"


    #В дальнейшем это будут аргументы передаваемые скрипту
    $platform1c_obj = "V83.COMConnector"
    $service1c_name = "1C:Enterprise 8.3 Server Agent*"
    $agent1c_connection = "tcp://localhost"
    $checkServices = $true



    #Замер времени исполнения скрипта
    $watch = [System.Diagnostics.Stopwatch]::StartNew()
    $watch.Start() #Запуск таймера


    #$output += "Status of the 1C Server:<br>"

    $output += "<div class='plsatin-ps-style'>"

    if ($checkServices) {
    $output += "<table>"
    #Проверяем запущены ли необходимые службы, если нет, запускаем.
    $mssqlsrv = Get-Service "MSSQLSERVER"
    if ($mssqlsrv.Status -ne "Running") {
    $output += "<tr><td class='IconErrorEncoded'></td>
    <td>The MS SQL Server service was not started</td></tr>"
    $output += "<tr><td class='IconInfoEncoded'></td>
    <td>Start MS SQL Server service ...</td></tr>"

    Start-Service $mssqlsrv

    if ($mssqlsrv.Status -ne "Running") {
    Write-Host $mssqlsrv
    Write-Host $output
    [System.Environment]::Exit($returnStateCritical)
    } else {
    $output += "<tr><td class='IconSuccessEncoded'></td>
    <td>The MS SQL Server service is started</td></tr>"
    }
    } else {
    $output += "<tr><td class='IconSuccessEncoded'></td>
    <td>The MS SQL Server service is running</td></tr>"
    }

    $1cagent = Get-Service $service1c_name
    if ($1cagent.Status -ne "Running") {
    $output += "<tr><td class='IconErrorEncoded'></td>
    <td>The 1C Server Agent service was not started</td></tr>"
    $output += "<tr><td class='IconInfoEncoded'></td>
    <td>Start the service of the 1C Server Agent ...</td></tr>"

    Start-Service $1cagent

    if ($1cagent.Status -ne "Running") {
    Write-Host $1cagent
    Write-Host $output
    [System.Environment]::Exit($returnStateCritical)
    } else {
    $output += "<tr><td class='IconSuccessEncoded'></td>
    <td>1C Server Agent service is started</td></tr>"
    }
    } else {
    $output += "<tr><td class='IconSuccessEncoded'></td>
    <td>The 1C Server Agent service is running</td></tr>"
    }

    $output += "</table>"
    }


    #Создаем COM объект 1С
    $comobj1c = New-Object -ComObject $platform1c_obj
    #Подключаемя к агенту сервера 1С
    $connect1c = $comobj1c.ConnectAgent($agent1c_connection)
    #Получаем доступные кластеры на данном сервере
    $cluster1c = $connect1c.GetClusters()

    #Подключаемся к кластеру
    #При условии что кластер только один, тоесть выбираем первый - [0]
    $connect1c.Authenticate($cluster1c[0],"","")

    #Получаем список сессий
    $sessions1c = $connect1c.GetSessions($cluster1c[0])

    $output += "1C application sessions: "

    $output += $sessions1c | Select-Object SessionID, Host, userName, dbProcTook, StartedAt, LastActiveAt | ConvertTo-Html -Fragment
    $output += "</div>"

    $sessionsCount = $sessions1c.Count

    $watch.Stop() #Остановка таймера
    #$output += $watch.Elapsed #Время выполнения
    #$output += "<br>Date time: " + (Get-Date) + "<br>"


    Write-Host $output
    Write-Host " |1c_sessions=$sessionsCount;;;;"

    [System.Environment]::Exit($returnStateOK)
    • #5
    • 31.12.2020 20:27
    0
    щедро
Для участия в обсуждении Вам необходимо авторизоваться либо   зарегистрироваться