![](/img/trans.png)
[英]TFS build powershell script step : Not able to access $(Date:yyyyMMdd) variable
[英]Access TFS TeamProjectCollection from build step with PowerShell
我正在尝试在我们的一个团队项目中使用powershell创建一个预构建步骤,以增加该VS解决方案中所有程序集/应用程序的构建号。 这是针对TFS2015更新2的。
我在网上到处都找到了一些示例代码,并拼凑出了我想像的效果。 我可以在TFS服务器上手动运行powershell脚本(已通过Windows帐户验证为服务器),它可以正常工作,但在构建过程中无法正常运行。
这是有问题的示例代码,我不断收到错误。 它与身份验证/与TFS服务器的连接有关:
$CollectionUrl=New-Object System.Uri("$env:SYSTEM_TEAMFOUNDATIONCOLLECTIONURI")
$BuildUrl="$env:BUILD_BUILDURI"
# get the team project collection
$TeamProjectCollection=[Microsoft.TeamFoundation.Client.TfsTeamProjectCollectionFactory]::GetTeamProjectCollection($CollectionUrl)
# get the build server
$BuildServer=$TeamProjectCollection.GetService([Microsoft.TeamFoundation.Build.Client.IBuildServer])
# get the build detail
$BuildDetail=$BuildServer.GetBuild($BuildUrl)
# get the build definition
$BuildDefinition=$BuildDetail.BuildDefinition
我得到的错误是:
带有“ 1”参数的异常调用“ GetService”:“ TF30063:您无权访问http:// servername / TPCName
我尝试使用上面的调用来获取TPC,以及它的构造方法,但都没有用。
$TeamProjectCollection=New-Object Microsoft.TeamFoundation.Client.TfsTeamProjectCollection($CollectionUrl)
因此,我开始尝试根据到服务器的登录凭据构建凭据对象,并查看是否可以通过这种方式连接到TPC。 仍然不起作用(在服务器上或在构建过程中),但是出现了不同的错误:
$netCred = New-Object System.Net.NetworkCredential($username,$password)
$basicCred = New-Object Microsoft.TeamFoundation.Client.BasicAuthCredential($netCred)
$tfsCred = New-Object Microsoft.TeamFoundation.Client.TfsClientCredentials($basicCred)
# get the team project collection
$TeamProjectCollection=New-Object Microsoft.TeamFoundation.Client.TfsTeamProjectCollection($CollectionUrl, $tfsCred)
引发异常:
带有“ 1”参数的异常调用“ GetService”:“ TF400324:服务器上没有Team Foundation服务。
我还尽力为TFS服务运行的Windows帐户修改TFS权限,以确保那里没有问题。 我相当确定我已将其添加到我的身份所在的所有角色/组中,但仍无法进行身份验证。
我现在不知所措。 有人可以帮助我确定如何使用定义的凭据正确连接到TFS服务器,还是可以帮助我调整服务帐户,身份,配置选择等的权限; 需要访问teamProjectCollection。
您需要专门指示TFS / VSTS允许执行中的构建回叫TFS / VSTS。 这样可以保护您的服务器免受恶意开发人员退出构建脚本的侵害。
您应该在构建的“选项”选项卡中看到“启用身份验证”选项。
**注意:您应该使用提供的Task SDK: https : //github.com/Microsoft/vsts-task-lib
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.