# PowerShell-скрипт для деплоя сайта через SFTP # Параметры подключения к серверу $HOST = "kpa39l.myjino.ru" $PORT = "2222" $USERNAME = "kpa39l_dedinit" $REMOTE_PATH = "/domains/dedinit.ru" $LOCAL_PATH = "public" # Путь к исполняемому файлу WinSCP $WINSCP_PATH = "C:\Program Files (x86)\WinSCP\WinSCP.exe" # Проверяем, установлен ли WinSCP if (-Not (Test-Path $WINSCP_PATH)) { Write-Host "WinSCP не найден по пути $WINSCP_PATH" Write-Host "Пожалуйста, установите WinSCP или укажите правильный путь к исполняемому файлу" exit 1 } # Проверяем, существует ли локальная папка if (-Not (Test-Path $LOCAL_PATH)) { Write-Host "Локальная папка $LOCAL_PATH не существует" exit 1 } # Создаем временный скрипт для WinSCP $TEMP_SCRIPT = [System.IO.Path]::GetTempFileName() $TEMP_SCRIPT += ".txt" # Формируем команды для WinSCP $SCRIPT_CONTENT = @" open sftp://${USERNAME}@${HOST}:${PORT} -hostkey=""*"" -rawsettings Password=-Zp4ep747t25 synchronize remote ${LOCAL_PATH}/ ${REMOTE_PATH}/ -delete -transfer=binary close exit "@ # Записываем команды в временный файл Set-Content -Path $TEMP_SCRIPT -Value $SCRIPT_CONTENT try { # Выполняем команды через WinSCP Write-Host "Начинаем деплой содержимого папки ${LOCAL_PATH} на сервер ${HOST}..." Start-Process -FilePath $WINSCP_PATH -ArgumentList "/script=$TEMP_SCRIPT" -Wait -NoNewWindow Write-Host "Деплой завершен успешно!" } catch { Write-Host "Произошла ошибка при деплое: $_" exit 1 } finally { # Удаляем временный файл if (Test-Path $TEMP_SCRIPT) { Remove-Item $TEMP_SCRIPT } }