在我的连续交付管道中,我想运行Powershell脚本,该脚本启动用于更新数据库的.NET Core应用程序。问题是用户使用的TFS代理无权连接到MSSQL服务器。这就是为什么我想以其他用户身份运行此过程。我现在正在做的是
$username = 'DOMAIN\username'
$password = 'password'
$securePassword = ConvertTo-SecureString $password -AsPlainText -Force
$credential = New-Object System.Management.Automation.PSCredential -ArgumentList $username, $securePassword
Start-Process -FilePath 'dotnet' -ArgumentList 'MyApp.dll' -NoNewWindow -Wait -Credential $credential
运行此脚本会导致Powershell窗口冻结。我无法做Ctrl+C
也不能Ctrl+Z
。相同的命令,但没有-Credential
部分可以正常工作。在我的本地计算机上,即使使用-Credential
,一切都可以正常工作,因此这必须是某种配置问题。
我一直在寻找答案,偶然发现了this SO question,但是this comment并没有太大帮助。
我试图为Bypass
和Unrestricted
设置执行策略。我还尝试在本地组策略编辑器>计算机配置> Windows组件> Windows PowerShell中将Turn on Script Execution
配置为
允许所有脚本,但也没有任何运气。
答案 0 :(得分:0)
尝试一下:
Start-Process -FilePath 'dotnet' -ArgumentList 'MyApp.dll' -NoNewWindow -Credential $credential -PassThru| Wait-Process -Timeout 5 -ErrorAction Stop
与其直接给-Wait
。
PS:您也可以尝试一下,这样可以帮助您。