Я борюсь с этим уже день. В основном я хочу сделать резервную копию базы данных MySQL в нашем веб-пространстве с помощью сценария PowerShell, который ежедневно запускается на моем компьютере с Windows.
Когда я использую Putty и ввожу следующую команду, создается файл резервной копии:
mysqldump XXXX --add-drop-table -u XXXX -p******* > backup/backup.sql
Но когда я запускаю его из PowerShell, он не создает файл резервной копии, даже когда я вызываю ту же самую команду:
$sshsession = New-SSHSession -ComputerName $sshserver -Credential $Creds -Force -Verbose
[string]$backupcmd = "mysqldump XXXX --add-drop-table -u XXXX -p******* > backup/backup.sql"
Write-Output $backupcmd
$backupdb = Invoke-SSHCommand -SSHSession $sshsession -Command "$backupcmd"
Похоже, у Posh-SSH проблемы с оператором ">", может не хватает времени на выполнение, не знаю. Также пробовал такие вещи, как Timeout на Invoke-SSHCommand, но пока ничего не работало.
Я не могу делать такие вещи, как crons на удаленном сервере, это просто веб-пространство с ограниченными функциями. Также не работает запуск bash-скрипта, у меня нет прав на выполнение скриптов на удаленном сервере.
Извини, я новенький. Я хотел запустить запрос mysql с помощью sshcommand






Если вам нужна именно команда mysqldump, вы можете использовать параметр --result-file или просто параметр -r.
В этом случае это будет выглядеть так:
$ backupcmd = "mysqldump XXXX --add-drop-table -u XXXX -p ******* -r backup / backup.sql"
Я не проводил тесты, потому что в настоящее время у меня нет доступного POSH, но вы можете обратиться к документации: https://dev.mysql.com/doc/refman/8.0/en/mysqldump.html#option_mysqldump_result-file
Расскажите нам, что так получилось.
Надеюсь это поможет.
Предположительно,
Invoke-SSHCommandсоздает процесс непосредственно из указанной командной строки, не запуская его из оболочки. Однако оператор перенаправления - это встроенная функция оболочки. Попробуйте изменить командную строку на"cmd /c mysqldump ... > backup/backup.sql". В качестве альтернативы запустите удаленную команду черезplink(инструмент пакетного выполнения из PuTTY люкс).