我试图在我们的团队项目之一中使用PowerShell创建预构建步骤,以增加该VS解决方案中所有程序集/应用程序的构建编号。这是为TFS2015更新2.从PowerShell的构建步骤访问TFS TeamProjectCollection
我发现了一些示例代码在这里和那里在线,并拼凑在一起,我想象会工作。我可以在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
有错误,我得到的是:
Exception calling "GetService" with "1" argument(s): "TF30063: You are not authorized to access 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)
抛出异常:
Exception calling "GetService" with "1" argument(s): "TF400324: Team Foundation services are not available from the server.
我也尽我所能在修改TFS权限的Windows帐户TFS服务运行以确保那里没有问题。我很确定我将它添加到了我的身份所在的所有角色/组中,但仍然无法验证身份。
在这一点上我很茫然。有人可以帮助我弄清楚如何使用定义的凭证正确连接到TFS服务器,或帮助我调整服务帐户,身份,配置选择等的权限;需要访问teamProjectCollection。
您使用哪种构建系统? vNext或XAML?根据您的描述,您希望增加内部版本号,但是powershell脚本正在获取构建定义。你想达到什么功能? –