【发布时间】: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