сделай улучшения и самой системы запускающейся через гитхаб actions минимум 10 улучшений. Предотвращай ошибки. Предоставляй полный готовый к работе код
name: Mas

on: [push, workflow_dispatch]

jobs:
build:
runs-on: windows-latest

steps:

Шаг 1: Проверка кода репозитория
name: Checkout repository
uses: actions/checkout@v3
Шаг 2: Скачать ngrok
name: Download ngrok
run: Invoke-WebRequest https://bin.equinox.io/c/bNyj1mQVY4c/ngrok-v3-stable-windows-amd64.zip -OutFile ngrok.zip
Шаг 3: Распаковать ngrok
name: Extract ngrok
run: Expand-Archive ngrok.zip -DestinationPath .\ngrok
Шаг 4: Аутентификация ngrok
name: Authenticate ngrok
run: .\ngrok\ngrok.exe authtoken $Env:NGROK_AUTH_TOKEN
env:
NGROK_AUTH_TOKEN: ${{ secrets.NGROK_AUTH_TOKEN }}
Шаг 5: Настройка DNS на Cloudflare
name: Set DNS to Cloudflare
run: |
$adapters = Get-NetAdapter | Where-Object { $_.Status -eq 'Up' }
foreach ($adapter in $adapters) {
Set-DnsClientServerAddress -InterfaceIndex $adapter.InterfaceIndex -ServerAddresses @("1.1.1.1","1.0.0.1")
}
shell: pwsh
Шаг 6: Оптимизация производительности системы
name: Optimize System Performance
run: |
Установка плана электропитания на Высокую производительность
powercfg -duplicatescheme SCHEME_MIN
Отключение анимаций и эффектов для повышения производительности
Set-ItemProperty -Path 'HKCU:\Control Panel\Desktop' -Name 'WindowMetrics' -Value ''
Set-ItemProperty -Path 'HKCU:\Control Panel\Desktop\WindowMetrics' -Name 'MinAnimate' -Value '0'
Отключение неиспользуемых сервисов
Stop-Service -Name "SysMain" -Force
Set-Service -Name "SysMain" -StartupType Disabled
shell: pwsh
Шаг 7: Включение Remote Desktop и создание пользователя
name: Enable Remote Desktop
run: |
Разрешение подключений через RDP
Set-ItemProperty -Path 'HKLM:\System\CurrentControlSet\Control\Terminal Server' -Name "fDenyTSConnections" -Value 0
Enable-NetFirewallRule -DisplayGroup "Remote Desktop"
Set-ItemProperty -Path 'HKLM:\System\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp' -Name "UserAuthentication" -Value 1
Проверка, существует ли пользователь 'runneradmin'
$userExists = Get-LocalUser -Name "runneradmin" -ErrorAction SilentlyContinue if (-not $userExists) {
Write-Output "Создание нового пользователя 'runneradmin'."
$password = ConvertTo-SecureString $env:RUNNER_ADMIN_PASSWORD -AsPlainText -Force
New-LocalUser -Name "runneradmin" -Password $password -FullName "Runner Admin" -Description "Admin user for RDP access"
Add-LocalGroupMember -Group "Administrators" -Member "runneradmin"
}
else {
Write-Output "Пользователь 'runneradmin' уже существует. Обновление пароля."

Обновление пароля существующего пользователя
$password = ConvertTo-SecureString $env:RUNNER_ADMIN_PASSWORD -AsPlainText -Force
Set-LocalUser -Name "runneradmin" -Password $password

Убедимся, что пользователь принадлежит к группе "Administrators"
$isMember = Get-LocalGroupMember -Group "Administrators" -Member "runneradmin" -ErrorAction SilentlyContinue
if (-not $isMember) {
Write-Output "Добавление пользователя 'runneradmin' в группу 'Administrators'."
Add-LocalGroupMember -Group "Administrators" -Member "runneradmin"
}
else {
Write-Output "Пользователь 'runneradmin' уже является членом группы 'Administrators'."
}
}
env:
RUNNER_ADMIN_PASSWORD: ${{ secrets.RUNNER_ADMIN_PASSWORD }}
shell: pwsh
Шаг 8: Создание туннеля ngrok для RDP
name: Create ngrok Tunnel for RDP
run: .\ngrok\ngrok.exe tcp 3389
Шаг 9: Отображение информации о туннеле ngrok
name: Display ngrok Tunnel Information
run: |
Start-Sleep -Seconds 10
.\ngrok\ngrok.exe tcp 3389 --log=stdout
shell: pwsh