2016-08-01 7 views
0

Я создал следующий сценарий PowerShell.Ошибка сценария резервного копирования PowerShell MySQL в планировщике заданий 0x00041301

$root = 'C:\Backups\My Website\Database Dumps\' 

$dateString = (Get-Date).ToString("yyyy-MM-dd") 

$fileName = $dateString + "-MyWebsiteDbBackup.sql" 

$backupFilePath = ($root + $fileName) 

$command = ("mysqldump -u root wpdatabase > " + "`"$backupFilePath`"") 

Write-Host $command 

Invoke-Expression $command 

Его функция должна составлять ежедневную резервную копию базы данных MySQL для моего веб-сайта WordPress.

Когда я запускаю скрипт в PowerShell ISE, он работает нормально, и файл дампа MySQL создается без проблем.

Однако в планировщике заданий он застрял при запуске с кодом 0x00041301.

Для получения справки, я использую технику my.cnfdescribed here. И я задал задачу запустить, вошел ли пользователь в систему или нет.

КОД UPDATE

На основании ответа vonPryz в.

$root = 'C:\Backups\My Website\Database Dumps\' 

$dateString = (Get-Date).ToString("yyyy-MM-dd") 

$fileName = $dateString + "-MyWebsiteDbBackup.sql" 

$backupFilePath = ($root + $fileName + " 2>&1") 

$command = ("mysqldump -u root wpdatabase > " + "`"$backupFilePath`"") 

Write-Host $command 

$output = Invoke-Expression $command 

$output | Out-File C:\mysqlBackupScriptOutput.txt 

Теперь это дает мне ошибку говоря illegal character in path

Что я делаю неправильно?

+1

В качестве примечания стороны: '$ dateString = (Get-Date) .ToString (" yyyy-MM-dd ")' будет более читаемым. – vonPryz

+0

Спасибо, ты прав. Я обновлю это. – Ciwan

+0

Удалите '2> & 1' из строки, которую вы назначаете $ backupFilePath, и посмотрите, все ли вы получаете незаконные символы (> является незаконным символом пути). –

ответ

0

Задача Планировщик 0x00041301means что задача выполнена. Это может означать, что mysqldump подсказывает что-то. Может быть, пароль или какой-то диалог подтверждения. Какая учетная запись пользователя является выполняемой задачей?

Чтобы отладить, вам нужно будет отобразить вывод процесса, чтобы узнать, что происходит. Попробуйте использовать Tee-Object для отправки копии в файл.

+0

Спасибо, Von, если я сделаю это в конце 'Invoke-Expression $ command | Tee-Object -FilePath "C: \ commandoutput.txt" | Out-Null' будет ли он создавать этот текстовый файл? Или мне нужно сначала иметь это место? – Ciwan

+0

Нет, похоже, что нет. Сначала попробую создать файл. – Ciwan

+0

Хорошо, это тоже не помогло. После запуска задачи команда 'commandoutput.txt' была пуста! – Ciwan