# ================= НАСТРОЙКИ DIRECTUM 5.2 =================
\$Server = "192.168.1.100" # IP-адрес или имя сервера
\$Database = "DirectumDB" # Имя базы данных
\$User = "ИвановИИ" # Ваш логин
\$Password = "ВашПароль" # Ваш пароль
\$Interval = 10 # Интервал между попытками в секундах
# Стандартный путь к программе
\$DirectumPath = "C:\Program Files (x86)\NPO Computer\Directum\sbmain.exe"
# ==========================================================
Clear-Host
Write-Host "=== Автоматический штурм лицензий DIRECTUM 5.2 запущен ===" -ForegroundColor Cyan
Write-Host "Мониторинг запущен для пользователя: \$User" -ForegroundColor Gray
# Создаем объект для имитации нажатий клавиш и управления окнами
\$wshell = New-Object -ComObject WScript.Shell
while (\$true) {
Write-Host "[\$(Get-Date -Format 'HH:mm:ss')] Попытка подключения..." -ForegroundColor White
# 1. Запускаем DIRECTUM (без пароля, только сервер, база и логин)
\$Arguments = "-S=`"$Server`" -D=`"$Database`" -U=`"$User`""
\$Process = Start-Process -FilePath DirectumPath -ArgumentList Arguments -PassThru
# 2. Ждем появления окна ввода пароля (максимум 5 секунд)
\$Timeout = 5
WindowFound = false
for (i = 0; i -lt Timeout; i++) {
# Пытаемся сделать окно DIRECTUM активным
if (\$wshell.AppActivate("Вход в систему DIRECTUM")) {
WindowFound = true
break
}
Start-Sleep -Milliseconds 500
}
if (\$WindowFound) {
Start-Sleep -Milliseconds 300 # Короткая пауза для стабильности
# 3. «Печатаем» пароль и нажимаем Enter
\$wshell.SendKeys(\(Password)\)wshell.SendKeys("{ENTER}")
# 4. Ждем, чтобы понять: пустило нас или выскочила ошибка «Нет лицензий»
Start-Sleep -Seconds 3
# Проверяем, существует ли еще процесс.
# Если лицензии нет, DIRECTUM выведет ошибку или закроется.
if (\$Process.HasExited) {
Write-Host " [Результат]: Мест нет. Окно закрылось." -ForegroundColor Yellow
} else {
# Если окно ошибки «Превышено число лицензий» открылось, у него будет другой заголовок.
# Нам нужно закрыть DIRECTUM, чтобы запустить его заново на следующем круге.
if (\$wshell.AppActivate("DIRECTUM")) {
Write-Host " [Результат]: Обнаружено окно ошибки. Закрываем..." -ForegroundColor Yellow
\$wshell.SendKeys("{ENTER}") # Закрываем нажатием ОК на ошибке
Start-Sleep -Milliseconds 500
Stop-Process -Id \$Process.Id -Force -ErrorAction SilentlyContinue
} else {
# Если процесс активен и окон ошибок нет — значит мы успешно зашли!
Write-Host " [Успех]: Лицензия поймана! Приятной работы." -ForegroundColor Green
break
}
}
} else {
Write-Host " [Ошибка]: Окно авторизации не появилось. Проверьте параметры запуска." -ForegroundColor Red
Stop-Process -Id \$Process.Id -Force -ErrorAction SilentlyContinue
}
Write-Host "Ожидание \$Interval сек перед следующей попыткой..." -ForegroundColor Gray
Start-Sleep -Seconds \$Interval
}