TFS 2017生成:无法运行PowerShell

TFS 2017生成:无法运行PowerShell,powershell,tfs,tfsbuild,Powershell,Tfs,Tfsbuild,我们正在使用TFS 2017,它配置了多个版本。不久前,我们开始在第二步中出现错误,即运行PowerShell脚本(第一步是获取源代码): 4小时前的一次构建工作正常。没有对文件或文件系统进行任何更改。我正在等待网络团队的消息,看看他们是否对构建帐户做了什么 什么会突然导致此错误?如何修复它?注意:我尚未尝试将其关闭或再次打开。根据错误消息“##[error]访问被拒绝””,似乎是权限问题 只需尝试以下项目来缩小问题范围: 在获取源文件步骤中启用清理选项:将清理设置为 True并选择清除选项下

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

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


什么会突然导致此错误?如何修复它?注意:我尚未尝试将其关闭或再次打开。

根据错误消息“
##[error]访问被拒绝”
”,似乎是权限问题

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

  • 获取源文件步骤中启用清理选项:将
    清理设置为
    
    True
    并选择
    清除选项下的
    源目录
  • 检查代理服务帐户是否具有正确的访问权限 访问脚本

  • 尝试更改另一个具有正确权限的帐户
    作为服务帐户访问代理工作文件夹,然后生成队列 再说一遍

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


如果仍然不起作用,只需打开变量选项卡(设置为true)中的
system.debug
,即可捕获日志并在此处共享以进行进一步的故障排除。

根据错误消息“
#[error]访问被拒绝”
”,似乎是权限问题

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

  • 获取源文件步骤中启用清理选项:将
    清理设置为
    
    True
    并选择
    清除选项下的
    源目录
  • 检查代理服务帐户是否具有正确的访问权限 访问脚本

  • 尝试更改另一个具有正确权限的帐户
    作为服务帐户访问代理工作文件夹,然后生成队列 再说一遍

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


如果仍然不起作用,只需打开变量选项卡(设置为true)中的
system.debug
,即可捕获日志并在此处共享以进行进一步的故障排除。

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

我在调试中运行了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 ##

看起来powershell任务在执行脚本时运行某种安全检查

我在调试中运行了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 ##

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

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

是的,显然是一些奇怪的、新的权限问题,特别是在时间方面。事件查看器说赛门铁克声纳正在阻止它。有什么我可以提供给网络人员的信息可以让它得到修复,你知道吗?@DaveJohnson似乎是赛门铁克声纳阻止了它的运行。请尝试为PowerShell.exe创建异常,然后重试。你也可以尝试在TFS服务器上部署一个新的代理,然后检查它是否有效。是的,这显然是一些奇怪的、新的权限问题,特别是在时间方面。事件查看器说赛门铁克声纳正在阻止它。有什么我可以提供给网络人员的信息可以让它得到修复,你知道吗?@DaveJohnson似乎是赛门铁克声纳阻止了它的运行。请尝试为PowerShell.exe创建异常,然后重试。您还可以尝试在TFS服务器本身上部署一个新代理,然后检查它是否有效。