RustDesk/RustInstall.ps1

208 lines
8.3 KiB
PowerShell
Raw Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

$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 #########################################
# Run as administrator and stays in the current directory
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;
}
}
# Checks for the latest version of RustDesk
$url = 'https://www.github.com//rustdesk/rustdesk/releases/latest'
$request = [System.Net.WebRequest]::Create($url)
$response = $request.GetResponse()
$realTagUrl = $response.ResponseUri.OriginalString
$RDLATEST = $realTagUrl.split('/')[-1].Trim('v')
echo "RustDesk $RDLATEST is the latest version."
# Checks the version of RustDesk installed.
$rdver = ((Get-ItemProperty "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\RustDesk\").Version)
# Skips to inputting the configuration if the latest version of RustDesk is already installed.
if ($rdver -eq "$RDLATEST") {
echo "RustDesk $rdver is already installed."
cd $env:ProgramFiles\RustDesk
echo "Inputting configuration now."
.\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 "All done! Please double check the Network settings tab in RustDesk."
echo ""
echo "..............................................."
echo "RustDesk ID: $rustdesk_id"
echo "Password: $rustdesk_pw"
echo "..............................................."
echo ""
echo "Press Enter to open RustDesk."
pause
.\rustdesk.exe
exit
}
if (!(Test-Path C:\ProgramData\RustDesk)) {
New-Item -ItemType Directory -Force -Path C:\ProgramData\RustDesk > null
}
cd C:\ProgramData\RustDesk
echo "Downloading RustDesk version $RDLATEST."
powershell Invoke-WebRequest "https://github.com/rustdesk/rustdesk/releases/download/$RDLATEST/rustdesk-$RDLATEST-x86_64.exe" -Outfile "rustdesk.exe"
echo "Installing RustDesk version $RDLATEST."
Start-Process .\rustdesk.exe --silent-install
Start-Sleep -Seconds 10
$ServiceName = 'rustdesk'
$arrService = Get-Service -Name $ServiceName -ErrorAction SilentlyContinue
if ($arrService -eq $null) {
echo "Installing service."
cd $env:ProgramFiles\RustDesk
Start-Process .\rustdesk.exe --install-service -wait -Verbose
Start-Sleep -Seconds 20
}
while ($arrService.Status -ne 'Running') {
Start-Service $ServiceName
Start-Sleep -seconds 5
$arrService.Refresh()
}
echo "Please wait a few seconds."
Start-Sleep -Seconds 10
Remove-Item -Path "C:\ProgramData\RustDesk\rustdesk.exe" -Force
echo "Temporary installation files have been cleaned up."
cd $env:ProgramFiles\RustDesk
echo "Inputting configuration now."
.\rustdesk.exe --config $rustdesk_cfg
.\rustdesk.exe --password $rustdesk_pw
# Удаляем ярлык с общего рабочего стола, если он был создан
$publicDesktop = "C:\Users\Public\Desktop\RustDesk.lnk"
if (Test-Path $publicDesktop) {
Remove-Item -Path $publicDesktop -Force
echo "Removed RustDesk shortcut from Public Desktop."
}
# Создаем папку RustDesk в меню Пуск и перемещаем туда ярлык
$startMenuPath = "C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Critical Fixes\RustDesk"
if (!(Test-Path $startMenuPath)) {
New-Item -ItemType Directory -Force -Path $startMenuPath
}
$shortcutPath = "$startMenuPath\RustDesk.lnk"
$shell = New-Object -ComObject WScript.Shell
$shortcut = $shell.CreateShortcut($shortcutPath)
$shortcut.TargetPath = "$env:ProgramFiles\RustDesk\rustdesk.exe"
$shortcut.Save()
echo "Created RustDesk shortcut in Start Menu under Critical Fixes\RustDesk."
# Добавляем параметры в конфигурационные файлы
$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 "All done! Please double check the Network settings tab in RustDesk."
echo ""
echo "..............................................."
echo "RustDesk ID: $rustdesk_id"
$RustID = $rustdesk_id
$ComputerName = $env:COMPUTERNAME
$InstallTime = Get-Date -Format "yyyy-MM-dd HH:mm:ss"
$ServerURL = "http://rust.it-depot.ru:6661/api/install"
$Body = @{
"rust_id" = $RustID
"computer_name" = $ComputerName
"install_time" = $InstallTime
} | ConvertTo-Json -Compress
Invoke-RestMethod -Uri $ServerURL -Method Post -Body $Body -ContentType "application/json"
echo "..............................................."
echo ""
echo "Press Enter to open RustDesk."
pause
.\rustdesk.exe