gifts2017

Блокировка подключения к 1с средствами VBS.

Опубликовал lex Lex (ligsht) в раздел Администрирование - Защита, права, пароли

Установка блокировки доступа к безе и сброс подвисших соединений.

Файл VBScript для установки блокировки доступа пользователей к базе 1с для проведения плановых работ. Данный скрипт устанавливает блокировку подключений без ключа "/UC" и делает перезапуск службы агента 1с для сброса подвисших соединений.

После проведения данных действий, можно проводить обслуживание базы запустив 1с с ключем "/UC" где в качестве кода указать код установленный в настройках скрипта.

По истечении времени блокировки, доступ к базе будет открыт.

//---------------------------------------------------------------------------------

' VBScript Blocked1cForBackUp.vbs
' Sample script to Blocked 1c and Stop or Start a Service
' [url]www.computerperformance.co.[/url]
' Created by Lex  21/07/2016 Version 1.0
' -------------------------------------------------------' 
Sub RestartService
        Dim objWMIService, objItem, objService
        Dim colListOfServices, strComputer, strService, intSleep 
        strComputer = "."
        intSleep = 15000 ' Время между остановкой и запуском службы
        ' Имя службы которую необходимо перезапустить
        strService = " '1C:Enterprise 8.2 Server Agent (x86-64)' "
        Set objWMIService = GetObject("winmgmts:" _
        & "{impersonationLevel=impersonate}!\\" _
        & strComputer & "\root\cimv2")
        Set colListOfServices = objWMIService.ExecQuery _
        ("Select * from Win32_Service Where Name ="_
        & strService & " ")
        For Each objService in colListOfServices
        objService.StopService()
        WSCript.Sleep intSleep
        objService.StartService()
        Next 
End Sub


Sub BlockedConnect
        Dim Connector,AgentConnection,Cluster,WorkingProcess,WorkingProcessConnection,ibDesc,connections,ConnectString
        NameLogFile = "monopoly.log" 'Имя Log файла
        'Установим путь к лог файлу как и путь запуска скрипта
        Out=Replace(WSH.ScriptFullName, WSH.ScriptName, NameLogFile )
        Set fs = CreateObject("Scripting.FileSystemObject") 
        Set OutFile = fs.OpenTextFile(Out, 8, True)
            'Указываем имя пользователя с правами доступа к консоли 
            AdminName = "Администратор" 
            'Указываем пароль
            UserPass = "Пароль"
            'Укажем IP Сервера с базами  1c 
            ServerName    =    "192.168.1.11"
            'Укажем Имя базы
            BaseName    =    "Test"
        WScript.Quit (0)
        Set Connector = CreateObject("V82.COMConnector")
        Set AgentConnection = Connector.ConnectAgent(ServerName)
        Set Cluster = AgentConnection.GetClusters()(0)
        AgentConnection.Authenticate Cluster, "", ""
        For Each WorkProcess In AgentConnection.GetWorkingProcesses(Cluster)
        ConnectString = WorkProcess.HostName & ":" & WorkProcess.MainPort
            Set WorkProcessConnection = Connector.ConnectWorkingProcess(ConnectString)
         
        WorkProcessConnection.AddAuthentication AdminName, UserPass
        BaseList = WorkProcessConnection.GetInfoBases()
            For i = LBound(BaseList) To UBound(BaseList)
                If BaseList(i).Name = BaseName Then
                    Set Base = BaseList(i)
                    Connections = WorkProcessConnection.GetInfoBaseConnections(Base)
                    LockMessageText = vbCrLf + "БАЗА ЗАКРЫТА НА СОЗДАНИЕ РЕЗЕРВНОЙ КОПИИ!" + vbCrLf + " ВРЕМЯ ОЖИДАНИЯ ОКОЛО 5 - 10 МИНУТ." 
                    LockPermissionCode = "Kod" ' Код блокировки базы 
                    test=WorkProcessConnection.GetInfoBases()
                    Base.ConnectDenied = True
                    Base.DeniedFrom = CStr(Now())
                    Base.DeniedTo = CStr(Now() + 1/300)
                                
                    Base.DeniedMessage = LockMessageText
                    Base.PermissionCode = LockPermissionCode
                        OutFile.WriteLine(CStr(Now) + " Установлено сообщение для пользователей: "+LockMessageText)
                        OutFile.WriteLine(CStr(Now) + " Установлен код доступа " + LockPermissionCode)
                        OutFile.WriteLine(CStr(Now) + " Установлена блокировка с "+CStr(Base.DeniedFrom)+" по "+ CStr(Base.DeniedTo))
        
                    WorkProcessConnection.UpdateInfoBase(Base)
                    OutFile.Close()  
        
                End If
            Next
        Next

End Sub 
On Error Resume Next 
BlockedConnect()
RestartService()

//---------------------------------------------------------------------------------

Скачать файлы

Наименование Файл Версия Размер
monopoly_1.0 1
.vbs 3,24Kb
21.07.16
1
.vbs 1.0 3,24Kb Скачать

См. также

Подписаться Добавить вознаграждение
В этой теме еще нет сообщений.
Для написания сообщения необходимо авторизоваться
Прикрепить файл
Дополнительные параметры ответа