-
Notifications
You must be signed in to change notification settings - Fork 1
/
1C82CheckDatabaseAccess.ps1
106 lines (99 loc) · 5.65 KB
/
1C82CheckDatabaseAccess.ps1
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
# PowerShell-скрипт «1C82CheckDatabaseAccess.ps1» проверяет доступность базы данных на сервере приложений 1С 8.2 путем попытки подключения к базе.
# Скрипт предназначен для работы в качестве пользовательского сенсора PRTG.
# Результат выполнения возвращается в стандартный поток вывода в формате, требуемом для пользовательского сенсора PRTG.
# Код возврата соответствует формату для пользовательского сенсора PRTG.
# Версия скрипта: 0.1.1
# Подробное описание по использованию скрипта смотрите в файле «README.md».
# Параметры запуска скрипта
# .\1C82CheckDatabaseAccess.ps1 -serverName <имя_сервера> -databaseName <имя_базы_данных> [-Verbose]
# или
# .\1C82CheckDatabaseAccess.ps1 <имя_сервера> <имя_базы_данных> [-Verbose]
# -serverName <имя_сервера>
# Имя или IP-адрес сервера приложений 1С
# -databaseName <имя_базы_данных>
# Имя базы данных на сервере приложений 1С
# -Verbose
# Включение вывода подробных сообщений об ошибках (опционально, использовать только при отладке)
[CmdletBinding()]
Param (
# Имя или IP-адрес сервера приложений 1С
[string]$serverName,
# Имя базы данных на сервере приложений 1С
[string]$databaseName
)
try {
# Создать COM-объект для подключения к серверу приложений 1С
$connector = New-Object -ComObject "V82.ComConnector"
# Подключиться к серверу приложений 1С с указанными параметрами
$connection = $connector.Connect("Srvr=`"$serverName`";Ref=`"$databaseName`";")
}
catch {
# Вывести в консоль тип ошибки (для подробного вывода)
Write-Verbose $_.GetType()
# Вывести в консоль текст ошибки (для подробного вывода)
Write-Verbose $_.ToString()
if ($_.ToString().IndexOf("Идентификация пользователя не выполнена") -ne -1) {
Write-Verbose "Анализируемая база данных доступна"
Write-Host "0:Database available"
# OK
exit 0
}
elseif ($_.ToString().IndexOf("Начало сеанса с информационной базой запрещено") -ne -1) {
Write-Verbose "Анализируемая база данных заблокирована"
Write-Host "1:Database blocked"
# Warning
exit 1
}
elseif ($_.ToString().IndexOf("Информационная база не обнаружена") -ne -1) {
Write-Verbose "Проверьте имя анализируемой базы данных"
Write-Host "2:Database not found"
# System Error
exit 2
}
elseif ($_.ToString().IndexOf("Сервер 1С:Предприятия не обнаружен") -ne -1) {
Write-Verbose "Проверьте имя сервера приложений 1С"
Write-Host "3:Server name cannot be resolved"
# System Error
exit 2
}
elseif ($_.ToString().IndexOf("Ошибка при выполнении операции с информационной базой") -ne -1) {
Write-Verbose "Проверьте имя или IP-адрес сервера приложений 1С"
Write-Host "4:Server not found"
# System Error
exit 2
}
elseif ($_.ToString().IndexOf("Несоответствие версий клиента и сервера 1С:Предприятия") -ne -1) {
Write-Verbose "Проверьте версию зарегистрированного dll-файла `"comcntr.dll`""
Write-Host "5:Server version incorrect"
# Protocol Error
exit 3
}
elseif ($_.ToString().IndexOf("Не удалось получить фабрику класса COM для компонента") -ne -1) {
if ($_.ToString().IndexOf("CLSID {00000000-0000-0000-0000-000000000000}") -eq -1) {
Write-Verbose "Не совпадают разрядности PowerShell и зарегистрированного dll-файла `"comcntr.dll`""
Write-Verbose "Запустите данный скрипт из 32-битной версии PowerShell"
Write-Host "6:COM bit width incorrect"
# System Error
exit 2
}
else {
Write-Verbose "Не зарегистрирован dll-файл `"comcntr.dll`""
Write-Verbose "Для регистрации выполните команду `"regsvr32.exe comcntr.dll`""
Write-Host "7:COM class unregistered"
# System Error
exit 2
}
}
elseif ($_.ToString().IndexOf("Не удается загрузить тип COM") -ne -1) {
Write-Verbose "Не удается загрузить тип COM"
Write-Host "8:COM error loading"
# System Error
exit 2
}
else {
Write-Verbose "Неизвестная ошибка"
Write-Host "-1:Unknown error"
# System Error
exit 2
}
}