TFS 2017 版本:无法 运行 PowerShell
TFS 2017 Build: Cannot Run PowerShell
我们使用的是 TFS 2017,它配置了多个构建。不久前,我们开始在第二步出现错误,即 运行 PowerShell 脚本(第一步是获取源代码):
2018-06-28T19:58:59.4326443Z ##[command]. 'K:\_work\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 小时前的构建运行良好。没有对文件或文件系统进行任何更改。我正在等待网络团队的消息,看看他们是否对构建帐户做了任何事情。
什么会突然导致这个错误,我该如何解决?注:我还没试过关机再开机
根据错误消息“##[error]Access is denied
”,似乎是权限问题。
只需尝试以下项目来缩小问题范围:
- 在 Get sources 步骤中启用 Clean 选项:将
Clean
设置为
True
和 select Sources Directory
在 Clean options.
下
检查代理服务帐户是否有正确的权限
访问脚本。
尝试将另一个具有正确权限的帐户更改为
访问 agent _work foler 作为服务帐户,然后队列构建
再次.
部署新代理,再试一次。
如果还是不行,只需在变量选项卡中打开 system.debug
(设置为 true)以捕获日志并在此处共享以进一步排除故障。
看起来 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 ##
在检查服务器时,我注意到事件查看器显示 Symantec SONAR 正在阻止电源 shell 脚本。在我们的网络团队为构建过程添加异常后,我们的构建再次按预期运行。
对我们来说,MCafee 阻止了 powershell。添加异常后,我们就很好了。
我们使用的是 TFS 2017,它配置了多个构建。不久前,我们开始在第二步出现错误,即 运行 PowerShell 脚本(第一步是获取源代码):
2018-06-28T19:58:59.4326443Z ##[command]. 'K:\_work\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 小时前的构建运行良好。没有对文件或文件系统进行任何更改。我正在等待网络团队的消息,看看他们是否对构建帐户做了任何事情。
什么会突然导致这个错误,我该如何解决?注:我还没试过关机再开机
根据错误消息“##[error]Access is denied
”,似乎是权限问题。
只需尝试以下项目来缩小问题范围:
- 在 Get sources 步骤中启用 Clean 选项:将
Clean
设置为True
和 selectSources Directory
在Clean options.
下
检查代理服务帐户是否有正确的权限 访问脚本。
尝试将另一个具有正确权限的帐户更改为
访问 agent _work foler 作为服务帐户,然后队列构建 再次.部署新代理,再试一次。
如果还是不行,只需在变量选项卡中打开 system.debug
(设置为 true)以捕获日志并在此处共享以进一步排除故障。
看起来 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 ##
在检查服务器时,我注意到事件查看器显示 Symantec SONAR 正在阻止电源 shell 脚本。在我们的网络团队为构建过程添加异常后,我们的构建再次按预期运行。
对我们来说,MCafee 阻止了 powershell。添加异常后,我们就很好了。