Я пытаюсь выполнить приложение DbUp, используя развертывание Octopus.
Инструкция говорит использовать этот простой скрипт:
& .\DbUp.exe | Write-Host
Но проблема в том, что я не мог найти способ передать пользовательские учетные данные для запуска процесса. Я попытался напрямую использовать объект Process:
"DbUp Deployment Script starting." | Write-Host
$pinfo.Username = $OctopusParameters['serviceCustomAccountName']
$pinfo.Domain = "DOMAIN"
$pinfo.Password = (ConvertTo-SecureString -String $OctopusParameters['serviceCustomAccountPassword'] -AsPlainText -Force)
$pinfo.FileName = "C:\DbUp.exe"
$pinfo.RedirectStandardError = $true
$pinfo.RedirectStandardOutput = $true
$pinfo.UseShellExecute = $false
$pinfo.Arguments = ""
$p = New-Object System.Diagnostics.Process
$p.StartInfo = $pinfo
$p.Start()
$p.WaitForExit()
$p.StandardOutput.ReadToEnd() | Write-Host
$p.StandardError.ReadToEnd() | Write-Host
"DbUp Deployment Script finished." | Write-Host
Но этот подход приводит к тому, что StandardOutput не передается в журнал Octopus:
DbUp Deployment Script starting.
True
DbUp Deployment Script finished.
Похоже, что DbUp.exe вообще не выполняется, потому что к базе данных не применяются никакие изменения.
Есть ли способ запустить процесс с помощью оператора вызова (& .\DbUp.exe) и передачи пользовательских учетных данных? Если нет, то по какой причине Octopus не выбирает консольное приложение для вывода?
Start-Process -FilePath "C:\DbUp.exe" -Credential ($creds) | Write-Host
- person Miłosz Wierzbicki   schedule 11.12.2015Start-Process -FilePath "path" -ArgumentList "arguments" -Credential (Get-Credential) -RedirectStandardOutput "c:\test.txt"
И если у вас есть логи, зачем вам перенаправлятьstdout
в консоль? - person sodawillow   schedule 11.12.2015