взято с "серого форума"
Цитата
'Скрипт демонстрирует возможность принудительного завершения процессов MS SQL Server, работающих
'с указанными базами данных. Если у вас SQL-версия 1С:Предприятия, данный код можно применять
'непосредственно перед пакетным запуском 1С:Предприятия, требующим монопольного входа в базу данных
'(например, при резервном копировании).
'ВНИМАНИЕ! Отредактируйте раздел "НАСТРОЙКИ СКРИПТА"!
'ВНИМАНИЕ! Чтобы опробовать скрипт, не производя деструктивных действий, достаточно закомментировать
'оператор "sql_SQL_DMO.KillProcess sql_ProcessID".
Option Explicit
Dim sql_ServerName 'Имя SQL-сервера
Dim sql_UserName 'Имя пользователя SQL-сервера
Dim sql_UserPassword 'Пароль пользователя SQL-сервера
Dim sql_SQL_DMO 'Объект "SQLDMO.SQLServer"
Dim sql_Processes 'Массив процессов SQL-сервера
Dim sql_Num 'Счётчик для перебора процессов SQL-сервера
Dim sql_LogPath 'Путь к файлу лога этого скрипта.
Dim sql_LogFile 'Поток текстового файла лога этого скрипта
Dim sql_FSO 'Объект "Scripting.FileSystemObject"
Dim sql_Bases 'Коллекция имён баз данных для проверки
Dim sql_Base 'Элемент коллекции имён баз данных для проверки
Set sql_Bases = CreateObject("Scripting.Dictionary")
'**************************************************************************************************
'->> НАСТРОЙКИ СКРИПТА
'**************************************************************************************************
'Имя SQL-сервера
sql_ServerName = "MyServer"
'Имя пользователя SQL-сервера
sql_UserName = "sa"
'Пароль пользователя SQL-сервера
sql_UserPassword = "Hjkds8udUy8"
'Путь к файлу лога этого скрипта.
sql_LogPath = "X:\BackUp1C\Kill_SQL_Processes.log"
'Перечень SQL-баз данных 1С для проверки
sql_Bases.Add 1, UCase("My_1C_Base1")
sql_Bases.Add 2, UCase("My_1C_Base2")
sql_Bases.Add 3, UCase("My_1C_Base3")
'**************************************************************************************************
'<<- НАСТРОЙКИ СКРИПТА
'**************************************************************************************************
Set sql_FSO = CreateObject("Scripting.FileSystemObject")
Set sql_LogFile = sql_FSO.CreateTextFile(sql_LogPath)
Set sql_SQL_DMO = CreateObject("SQLDMO.SQLServer")
sql_SQL_DMO.Connect sql_ServerName, sql_UserName, sql_UserPassword
Set sql_Processes = sql_SQL_DMO.EnumProcesses()
For sql_Num=1 To sql_Processes.Rows
Dim sql_DataBaseName
Dim sql_ComputerName
Dim sql_ProcessID
sql_ComputerName = UCase(Trim(sql_Processes.GetColumnString(sql_Num, 4)))
sql_DataBaseName = UCase(Trim(sql_Processes.GetColumnString(sql_Num, 7)))
sql_ProcessID = Trim(sql_Processes.GetColumnLong(sql_Num, 1))
For Each sql_Base In sql_Bases
If sql_Bases.Item(sql_Base) = sql_DataBaseName Then
sql_SQL_DMO.KillProcess sql_ProcessID
sql_LogFile.WriteLine CStr(Now) & " SQL-SERVER PROCESS WAS KILLED: ComputerName=" & sql_ComputerName & "; DataBaseName=" & sql_DataBaseName & ";"
Exit For
End If
Next
Next
sql_SQL_DMO.Close
sql_LogFile.Close
второй вариант - этим пользуюсь сам
Цитата
'Скрипт демонстрирует возможность принудительного завершения процессов "1cv7s.exe" на всех компьютерах
'указанного домена. Данный код можно применять непосредственно перед пакетным запуском 1С:Предприятия,
'требующим монопольного входа в базу данных (например, при резервном копировании).
'ВНИМАНИЕ! Задайте нужное значение переменной "DomainName"!
'ВНИМАНИЕ! Для успешной работы скрипта его желательно запускать с правами администратора домена.
'ВНИМАНИЕ! Чтобы опробовать скрипт, не производя деструктивных действий, достаточно закомментировать
'оператор "Proc.Terminate".
Option Explicit
On Error Resume Next
Dim DomainName 'Имя домена
DomainName = "MYDOMAIN"
Dim StrResult 'строка результата работы всей программы
StrResult = StrResult & CStr(Now) & " начало работы скрипта" & VbCrLf
Dim ADSI
Set ADSI = GetObject("WinNT://" & DomainName)
ADSI.Filter = Array("computer")
Dim Comp 'компьютер
Dim WMI 'объект WMI
Dim Proc 'процесс
Dim CurrName 'имя текущего компьютера
CurrName = GetNameComp()
'Цикл по компьютерам домена
For Each Comp In ADSI
If Comp.Name <> CurrName Then
Set WMI = GetObject("winmgmts:{ImpersonationLevel=Impersonate}!\\" & Trim(Comp.Name) & "\Root\CIMV2")
If Err.Number=0 Then
'Цикл по процессам компьютера
For Each Proc In WMI.ExecQuery("SELECT * FROM Win32_Process WHERE Name = '1cv7s.exe'")
StrResult = StrResult & _
CStr(Now) & " Computer=" & Comp.Name & " PID=" & Proc.ProcessId & _
VbCrLf
'Завершение процесса
Proc.Terminate
Next 'Цикл по процессам компьютера
Else 'Не удалось соединиться с компьютером
If Err.Number <> 462 Then 'The remote server machine does not exist or is unavailable
StrResult = StrResult & _
" " & CStr(Now) & " Computer=" & Comp.Name & " ERROR " & Err.Number & _
VbCrLf
End If
End If
Err.Clear
End If
Next 'Цикл по компьютерам домена
StrResult = StrResult & CStr(Now) & " конец работы скрипта" & VbCrLf
'Отображение результата
ShowInNotepad("Процессы 1cv7s.exe:" & VbCrLf & VbCrLf & StrResult)
'==========================================================================
'Процедура отображает переданную строку в блокноте
Sub ShowInNotepad(StrToFile)
Dim FSO 'Объект файловой системы Scripting.FileSystemObject
Dim TempPath 'Путь к временному файлу
Dim TxtFile 'Поток текстового файла
Set FSO = CreateObject("Scripting.FileSystemObject")
TempPath = GetTempPath() & "\" & FSO.GetTempName
Set TxtFile = FSO.CreateTextFile(TempPath)
TxtFile.WriteLine(StrToFile)
TxtFile.Close
CreateObject("WScript.Shell").Run "notepad.exe " & TempPath
WScript.Sleep 1000
FSO.DeleteFile TempPath
End Sub 'ShowInNotepad
'==========================================================================
'Функция возвращает путь к каталогу временных файлов текущего пользователя
Function GetTempPath()
GetTempPath = CreateObject("WScript.Shell").ExpandEnvironmentStrings("%TEMP%")
End Function 'GetTempPath
'==========================================================================
'Функция возвращает имя текущего компьютера
Function GetNameComp()
GetNameComp = CreateObject("WScript.Network").ComputerName
End Function 'GetNameComp
все скрипты на vbs