TFS 2017构建:无法运行PowerShell

时间:2018-06-28 20:07:34

标签: powershell tfs tfsbuild

我们正在使用TFS 2017,并且已配置了多个内部版本。不久前,我们开始在第二步中出错,这是运行PowerShell脚本(第一步是获取源代码):

2018-06-28T19:58:59.4326443Z ##[command]. 'K:\_work\3\s\BuildScripts\MainPre.ps1' -env "test"
2018-06-28T19:58:59.6236482Z ##[error]Access is denied
2018-06-28T19:58:59.6266488Z ##[section]Finishing: PowerShell Script

4个小时前的构建工作正常。没有对该文件或文件系统进行任何更改。我正在等待网络团队的来信,看看他们是否对构建帐户做了任何操作。

什么可能突然导致此错误,我该如何解决?注意:我尚未尝试将其关闭然后再次打开。

3 个答案:

答案 0 :(得分:2)

基于错误消息“ ##[error]Access is denied”,似乎是权限问题。

只需尝试以下各项以缩小问题范围:

    获取来源步骤中
  • 启用清洁选项:将Clean设置为 True并在Sources Directory下选择Clean options.
  • 检查代理服务帐户是否具有以下权限: 访问脚本。

  • 尝试将另一个具有正确权限的帐户更改为
    以服务帐户的身份访问agent _work foler,然后将队列建立 再次。

  • 部署新代理,然后重试。

如果仍然无法解决问题,只需在变量标签中打开system.debug(设置为true)以捕获日志并在此处共享以进行进一步的故障排除。

答案 1 :(得分:1)

执行脚本时,powershell任务似乎在运行某种安全检查吗?

我在DEBUG中运行了powershell任务,您可以在此处看到该任务隐式运行一些安全工作。

这确实使我无法访问它:

##[debug]C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe 

-NoLogo -Sta -NoProfile -NonInteractive -ExecutionPolicy Unrestricted -Command "try { $null = [System.Security.Cryptography.ProtectedData] } catch { Write-Verbose 'Adding assemly: System.Security' ; Add-Type -AssemblyName 'System.Security' ; $null = [System.Security.Cryptography.ProtectedData] ; $Error.Clear() } ; Invoke-Expression -Command ([System.Text.Encoding]::UTF8.GetString([System.Security.Cryptography.ProtectedData]::Unprotect([System.Convert]::FromBase64String('AQAAANCMnd8BFdERjHoAwE/Cl+sBAAAARs9EULLEBU+ppaGEeISmGgAAAAACAAAAAAADZgAAwAAAABAAAABLYbw0iUTABtaCw2PJ5KrrAAAAAASAAACgAAAAEAAAAOg6VMmANxZJSRmKjPWauqRYAAAAqDSQVtB4LtvBaujeTs1GKn4CPFrW484weBNwtJ7aujcJLWV4wBLHD9n+IEVZ6z13oyIpyxUEceTtiMKnfuO8irwX9l5DoHqlMGU6mx1Q5kou2V6ITEcl0BQAAAD1h7qvkyE8+PcdKmVKLHVpqYO4mA=='), [System.Convert]::FromBase64String('8yTvn1ZlLZGC7M3ewDzbLw=='), [System.Security.Cryptography.DataProtectionScope]::CurrentUser))) ; if (!(Test-Path -LiteralPath variable:\LastExitCode)) { Write-Verbose 'Last exit code is not set.' } else { Write-Verbose ('$LastExitCode: {0}' -f $LastExitCode) ; exit $LastExitCode }"
2018-06-30T12:44:57.8488275Z ##

答案 2 :(得分:0)

在检查服务器时,我注意到事件查看器说Symantec SONAR阻止了Power Shell脚本。在我们的网络团队为构建过程添加了例外之后,我们的构建再次按预期工作。