【问题标题】:TFS build fails when running custom powershell script运行自定义 powershell 脚本时 TFS 构建失败
【发布时间】:2017-04-03 03:32:46
【问题描述】:

我已将 Powershell 脚本步骤添加到我的本地 TFS 2015 构建定义中。该脚本修改 AssemblyInfo.cs 文件中的程序集版本。

我在 PowerShell ISE 中使用 Build Agent 帐户测试了该脚本,它运行良好。但是,PowerShell 步骤在 TFS 构建中失败并出现访问被拒绝错误。

Build Agent 账户拥有C:\agent\_work\11\s\source\MyProject\Properties 文件夹的完全控制权限。

Get-Content : 拒绝访问路径“C:\agent_work\11\s\source\MyProject\Properties”。 在 C:\agent_work\11\s\source\MyProject\BuildScript\Update-AssembyInfoFile.ps1:64 char:10 + (获取内容 $file) | + ~~~~~~~~~~~~~~~~~ + CategoryInfo : PermissionDenied: (C:\agent_work...MyProject\Properties:String) [Get-Content],未经授权 访问异常 + FullyQualifiedErrorId : GetContentReaderUnauthorizedAccessError,Microsoft.PowerShell.Commands.GetContentCommand

【问题讨论】:

  • 你使用什么样的构建服务帐户,本地帐户或域帐户或系统帐户?请将构建代理服务器帐户更改为另一个计算机管理员帐户,然后重试。如果还是不行,请尝试使用“网络服务”帐号运行。
  • 也许您可以尝试安装Manifest Versioning Build Tasks extension 并使用步骤“Version .NET Assemblies”步骤在 build 中的 assemblyinfo.cs 文件中设置版本。
  • TFS 构建服务器在域构建代理帐户下运行,该帐户是我们 TFS Windows 2012 服务器中本地管理员组的成员。此外,构建代理帐户是域管理员组的成员。我在脚本中添加了额外的代码来显示运行脚本的域和用户名。输出确认脚本按预期由构建代理帐户运行。当我使用 登录到 TFS 构建服务器时
  • 当我使用 Build Agent 帐户登录到 TFS 构建服务器时,我可以毫无问题地读取 'C:\agent_work\11\s\source\MyProject\Properties\AssemblyInfo.cs 文件。

标签: powershell


【解决方案1】:

脚本错误是由于文件路径中缺少文件名引起的。 Access to the path 'C:\agent_work\11\s\source\MyProject\Properties' is denied 消息有点令人困惑,但它让您知道路径中缺少文件名。错误消息中的路径是文件夹名称而不是文件名。因此,发生了错误。

【讨论】:

  • 感谢分享。请将回复标记为答案。
猜你喜欢
  • 1970-01-01
  • 2013-08-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-11-22
  • 2019-10-27
相关资源
最近更新 更多