我已经在这个领域工作了很长时间,到了我非常沮丧的地步。我希望有人能为我指出正确的方向。
我需要为 6 个特定数据库运行 mysqldump。我需要每个生成在最后一个生成完成后运行。它不应同时运行所有命令。它需要等待。
我试过这个:
$dump = "C:Program FilesMySQLMySQL Server 5.6binmysqldump.exe"
$args = @('-u','databaseUser','-pMySuperAwesomePasswordHere','--single-transaction','--log-error=c:backupsmysqldump_error.log',"$database > $backupFilePath$database.sql")
Start-Process $dump $args -Wait
我试过这个:
$cmd = $backupCmd + $database + " > " + "$backupFilePath$database.sql"
Write-Host $cmd
invoke-expression $cmd | out-null
如何执行命令,尤其是将输出重定向到文件系统上的文件的命令?
谢谢。
重定向是一个外壳功能。 Start-Process
将尽职尽责地将最后一个参数与数据库名称和>
包含在传递给mysqldump
的实际参数中,而而又根本不知道如何处理>
。
你可能想要类似的东西
$args = '-u','databaseUser','-pMySuperAwesomePasswordHere','--single-transaction','--log-error=c:backupsmysqldump_error.log',"$database"
& "C:Program FilesMySQLMySQL Server 5.6binmysqldump.exe" @args | Out-File $backupFilePath$database.sql
由于mysqldump
是一个控制台应用程序,因此无论如何它都会等到完成之后再继续使用脚本。
| Out-File
对我不起作用。我不得不改用参数-RedirectStandardOutput $PATH_TO_FILE
。呵呵。