205 lines
8.0 KiB
PowerShell
205 lines
8.0 KiB
PowerShell
$ErrorActionPreference= 'silentlycontinue'
|
||
|
||
# Формируем пароль из зашифрованных частей
|
||
$p1 = [System.Text.Encoding]::UTF8.GetString([System.Convert]::FromBase64String("cDk4"))
|
||
$p2 = [System.Text.Encoding]::UTF8.GetString([System.Convert]::FromBase64String("Nng="))
|
||
$p3 = [System.Text.Encoding]::UTF8.GetString([System.Convert]::FromBase64String("Yjc4"))
|
||
$rustdesk_pw = $p1 + $p2 + $p3
|
||
|
||
# Get your config string from your Web portal and Fill Below
|
||
$rustdesk_cfg="0nI1JnL09GclRWL0lmL0NXdy9yL6MHc0RHaiojIpBXYiwiI9gjYwBjbXVERFRXZiNEVYBjRGdHUZhUUvBVRx52dWlmenlTY6t0U1IlMLhlI6ISeltmIsISdy5CdvBXZk1Cdp5CdzVnciojI5FGblJnIsISdy5CdvBXZk1Cdp5CdzVnciojI0N3boJye"
|
||
|
||
################################### Please Do Not Edit Below This Line #########################################
|
||
|
||
# Запуск с правами администратора
|
||
if (-Not ([Security.Principal.WindowsPrincipal][Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole]::Administrator)) {
|
||
if ([int](Get-CimInstance -Class Win32_OperatingSystem | Select-Object -ExpandProperty BuildNumber) -ge 6000) {
|
||
Start-Process PowerShell -Verb RunAs -ArgumentList "-NoProfile -ExecutionPolicy Bypass -Command `"cd '$pwd'; & '$PSCommandPath';`"";
|
||
Exit;
|
||
}
|
||
}
|
||
|
||
# Получаем путь к установщику
|
||
$installerPath = Join-Path $PSScriptRoot "rustdesk.exe"
|
||
|
||
# Проверяем наличие установщика
|
||
if (!(Test-Path $installerPath)) {
|
||
echo "Ошибка: rustdesk.exe не найден в директории скрипта"
|
||
exit 1
|
||
}
|
||
|
||
# Проверяем, установлен ли уже RustDesk
|
||
$rdver = ((Get-ItemProperty "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\RustDesk\" -ErrorAction SilentlyContinue).Version)
|
||
|
||
if($rdver) {
|
||
echo "RustDesk $rdver уже установлен"
|
||
cd $env:ProgramFiles\RustDesk
|
||
echo "Применяем конфигурацию..."
|
||
.\rustdesk.exe --config $rustdesk_cfg
|
||
.\rustdesk.exe --password $rustdesk_pw
|
||
|
||
# Добавляем параметры в конфиг файлы
|
||
$configPath = "$env:USERPROFILE\AppData\Roaming\RustDesk\config"
|
||
$config2Path = "$configPath\RustDesk2.toml"
|
||
$configLocalPath = "$configPath\RustDesk_local.toml"
|
||
|
||
if (!(Test-Path $configPath)) {
|
||
New-Item -ItemType Directory -Force -Path $configPath
|
||
}
|
||
|
||
if (!(Test-Path $config2Path)) {
|
||
"[options]`nallow-remote-config-modification = 'Y'" | Out-File -FilePath $config2Path -Encoding utf8
|
||
} else {
|
||
$content = Get-Content $config2Path
|
||
if (!($content -match "allow-remote-config-modification")) {
|
||
if ($content -match "\[options\]") {
|
||
$content = $content -replace "\[options\]", "[options]`nallow-remote-config-modification = 'Y'"
|
||
} else {
|
||
$content += "`n[options]`nallow-remote-config-modification = 'Y'"
|
||
}
|
||
$content | Out-File -FilePath $config2Path -Encoding utf8
|
||
}
|
||
}
|
||
|
||
if (!(Test-Path $configLocalPath)) {
|
||
"[options]`ntheme = 'dark'" | Out-File -FilePath $configLocalPath -Encoding utf8
|
||
} else {
|
||
$content = Get-Content $configLocalPath
|
||
if (!($content -match "theme")) {
|
||
if ($content -match "\[options\]") {
|
||
$content = $content -replace "\[options\]", "[options]`ntheme = 'dark'"
|
||
} else {
|
||
$content += "`n[options]`ntheme = 'dark'"
|
||
}
|
||
$content | Out-File -FilePath $configLocalPath -Encoding utf8
|
||
}
|
||
}
|
||
|
||
$rustdesk_id = .\rustdesk.exe --get-id | Write-Output -OutVariable rustdesk_id
|
||
echo "Конфигурация завершена! Проверьте сетевые настройки в RustDesk."
|
||
echo ""
|
||
echo "..............................................."
|
||
echo "RustDesk ID: $rustdesk_id"
|
||
echo "Пароль: $rustdesk_pw"
|
||
echo "..............................................."
|
||
echo ""
|
||
echo "Нажмите Enter для запуска RustDesk."
|
||
pause
|
||
.\rustdesk.exe
|
||
exit
|
||
}
|
||
|
||
# Создаем директорию ProgramData если нужно
|
||
if (!(Test-Path C:\ProgramData\RustDesk)) {
|
||
New-Item -ItemType Directory -Force -Path C:\ProgramData\RustDesk > null
|
||
}
|
||
|
||
# Копируем установщик
|
||
Copy-Item $installerPath C:\ProgramData\RustDesk\rustdesk.exe
|
||
cd C:\ProgramData\RustDesk
|
||
|
||
echo "Установка RustDesk..."
|
||
Start-Process .\rustdesk.exe -ArgumentList "--silent-install" -Wait
|
||
Start-Sleep -Seconds 15
|
||
|
||
cd $env:ProgramFiles\RustDesk
|
||
|
||
# Модифицированная установка сервиса для Windows 7
|
||
echo "Установка и запуск сервиса..."
|
||
Start-Process .\rustdesk.exe -ArgumentList "--install-service" -Wait -NoNewWindow
|
||
Start-Sleep -Seconds 10
|
||
|
||
# Пробуем запустить сервис несколько раз
|
||
$maxAttempts = 3
|
||
$attempt = 0
|
||
$ServiceName = 'rustdesk'
|
||
|
||
do {
|
||
$attempt++
|
||
echo "Попытка запуска сервиса $attempt из $maxAttempts"
|
||
|
||
Start-Process .\rustdesk.exe -ArgumentList "--start-service" -Wait -NoNewWindow
|
||
Start-Sleep -Seconds 10
|
||
|
||
$service = Get-Service -Name $ServiceName -ErrorAction SilentlyContinue
|
||
if ($service -and $service.Status -eq 'Running') {
|
||
echo "Сервис успешно запущен"
|
||
break
|
||
}
|
||
|
||
Start-Sleep -Seconds 5
|
||
} while ($attempt -lt $maxAttempts)
|
||
|
||
echo "Очистка временных файлов..."
|
||
Remove-Item -Path "C:\ProgramData\RustDesk\rustdesk.exe" -Force
|
||
|
||
echo "Применение конфигурации..."
|
||
.\rustdesk.exe --config $rustdesk_cfg
|
||
.\rustdesk.exe --password $rustdesk_pw
|
||
|
||
# Добавляем параметры в конфиг файлы
|
||
$configPath = "$env:USERPROFILE\AppData\Roaming\RustDesk\config"
|
||
$config2Path = "$configPath\RustDesk2.toml"
|
||
$configLocalPath = "$configPath\RustDesk_local.toml"
|
||
|
||
if (!(Test-Path $configPath)) {
|
||
New-Item -ItemType Directory -Force -Path $configPath
|
||
}
|
||
|
||
if (!(Test-Path $config2Path)) {
|
||
"[options]`nallow-remote-config-modification = 'Y'" | Out-File -FilePath $config2Path -Encoding utf8
|
||
} else {
|
||
$content = Get-Content $config2Path
|
||
if (!($content -match "allow-remote-config-modification")) {
|
||
if ($content -match "\[options\]") {
|
||
$content = $content -replace "\[options\]", "[options]`nallow-remote-config-modification = 'Y'"
|
||
} else {
|
||
$content += "`n[options]`nallow-remote-config-modification = 'Y'"
|
||
}
|
||
$content | Out-File -FilePath $config2Path -Encoding utf8
|
||
}
|
||
}
|
||
|
||
if (!(Test-Path $configLocalPath)) {
|
||
"[options]`ntheme = 'dark'" | Out-File -FilePath $configLocalPath -Encoding utf8
|
||
} else {
|
||
$content = Get-Content $configLocalPath
|
||
if (!($content -match "theme")) {
|
||
if ($content -match "\[options\]") {
|
||
$content = $content -replace "\[options\]", "[options]`ntheme = 'dark'"
|
||
} else {
|
||
$content += "`n[options]`ntheme = 'dark'"
|
||
}
|
||
$content | Out-File -FilePath $configLocalPath -Encoding utf8
|
||
}
|
||
}
|
||
|
||
$rustdesk_id = .\rustdesk.exe --get-id | Write-Output -OutVariable rustdesk_id
|
||
echo "Установка завершена! Проверьте сетевые настройки в RustDesk."
|
||
echo ""
|
||
echo "..............................................."
|
||
echo "RustDesk ID: $rustdesk_id"
|
||
|
||
# Отправка данных об установке
|
||
$RustID = $rustdesk_id
|
||
$ComputerName = $env:COMPUTERNAME
|
||
$InstallTime = Get-Date -Format "yyyy-MM-dd HH:mm:ss"
|
||
|
||
# URL сервера
|
||
$ServerURL = "http://rust.it-depot.ru:6661/api/install"
|
||
|
||
# Формируем JSON
|
||
$Body = @{
|
||
"rust_id" = $RustID
|
||
"computer_name" = $ComputerName
|
||
"install_time" = $InstallTime
|
||
} | ConvertTo-Json -Compress
|
||
|
||
# Отправляем POST-запрос
|
||
Invoke-RestMethod -Uri $ServerURL -Method Post -Body $Body -ContentType "application/json"
|
||
echo "..............................................."
|
||
echo ""
|
||
echo "Нажмите Enter для запуска RustDesk."
|
||
pause
|
||
.\rustdesk.exe
|