0

我已经做了很长时间了,到了让我非常沮丧的地步。我希望有人能指出我正确的方向。

我需要为 6 个特定数据库运行 mysqldump。我需要每个产卵在最后一个完成后运行。它不应同时运行所有命令。它需要等待。

我试过这个:

$dump = "C:\Program Files\MySQL\MySQL Server 5.6\bin\mysqldump.exe"
$args = @('-u','databaseUser','-pMySuperAwesomePasswordHere','--single-transaction','--log-error=c:\backups\mysqldump_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

如何执行命令,尤其是将输出重定向到文件系统上的文件的命令?

谢谢你。

4

1 回答 1

2

重定向是一个shell功能。Start-Process将尽职尽责地将最后一个参数包含在数据库名称中,并且>在传递给mysqldump它的实际参数中,反过来根本不知道如何处理>

你可能想要类似的东西

$args = '-u','databaseUser','-pMySuperAwesomePasswordHere','--single-transaction','--log-error=c:\backups\mysqldump_error.log',"$database"
& "C:\Program Files\MySQL\MySQL Server 5.6\bin\mysqldump.exe" @args | Out-File $backupFilePath\$database.sql

由于mysqldump它是一个控制台应用程序,它无论如何都会等到它完成后再继续执行脚本。

于 2014-03-03T11:26:48.780 回答