尝试拥有在本地安装了部署代理的 Azure DevOps 发布管道,以有权访问本地数据库的特定用户身份运行控制台应用程序。
这是工作流程
Azure 发布管道调用-> 本地代理运行-> PS 脚本运行-> 控制台 exe
我正在通过以下内联脚本在管道中使用 PowerShell 任务:
$CMD = '$CMD = 'C:\ScheduledScripts\Adm\SpecToHobImport\SpecToHobImport.exe''
$user = $Env:userid
$password = $Env:pass
$dates = '$(startDate) $(endDate)'
$securePassword = ConvertTo-SecureString $password -AsPlainText -Force
$credential = New-Object System.Management.Automation.PSCredential $user, $securePassword
Start-Process -FilePath $CMD -Credential $credential -ArgumentList "$(startDate) $(endDate)"
Run Code Online (Sandbox Code Playgroud)
我知道用户 ID 和密码以及命令行参数正在正确传递,但无论控制台应用程序多么简单,当代理运行 powershell 脚本时它都会崩溃。我尝试在各种服务帐户(系统、管理员等)下运行 DevOps 代理服务,我可以在安装了代理的服务器上手动运行脚本,并且脚本和控制台应用程序手动运行良好。
当我运行 Release 管道时,它会在 DevOps 中报告它运行成功,我只能从代理服务器上的 Windows 事件日志中检测到控制台应用程序已运行并立即崩溃。
我在 EventLog 中得到以下两个条目:
Faulting application name: conhost.exe, version: 6.3.9600.17415, time stamp: 0x5450410b
Faulting module name: USER32.dll, …Run Code Online (Sandbox Code Playgroud) console powershell azure-devops azure-pipelines azure-pipelines-release-pipeline