2010-09-20 35 views
2

我们使用InvokeProcess操作定制了构建过程,该操作运行部署我们sln的powershell脚本。原因TFS InvokeProcess构建活动在其他凭据下运行

问题是这个脚本必须在给定的用户(而不是tfsbuild用户)下运行。

我们该如何实现这一目标?

  • 方案1:使InvokeProcess 运行作为不同的用户 -
  • 方案2:充分利用PowerShell脚本本身 运行为不同的用户

问题是,我不知道该怎样想法做任何这些。

回答

3

我创建了一个博客帖子上这如何可以实现这一点:Customize Team Build 2010 – Part 9: Impersonate activities (run under other credentials)

+0

谢谢!我是新来的wwf和自定义构建过程。你能简要概述开始使用你的代码的步骤吗?我应该建立一个DLL吗?把它放在哪里?从哪里调用它?我正在使用InvokeProcess活动块,我猜应该从using块中调用这个块,但是怎么做呢?非常感谢您的时间。 – Larsi 2010-09-20 09:34:38

+0

你可以在系列的其余部分找到这些答案:http://www.ewaldhofman.nl/?tag=/build+2010+customization – 2010-09-20 10:00:28

+0

好的,谢谢。我想我得到了大部分答案,但我无法弄清楚为什么我们需要创建一个模板项目(第4部分)。如果它不足以创建新的代码活动,那么将它添加到工具箱(选择项目)并开始使用它? (当然在构建控制器上添加一条路径)。无法理解模板项目发生了什么。谢谢你的澄清。 – Larsi 2010-09-20 11:27:03

2

纯PowerShell的选项,假设你有PowerShell 2.0中的TeamBuild的机器上,就是用一个后台作业。开始作业允许您指定另一个帐户的凭据来执行工作。在你的脚本起转后台作业后,你可能会想等待作业完成,并从主脚本如抢的结果输出:

$cred = Get-Credential 
$job = Start-Job -ScriptBlock { ls c:\windows\system32 -r *.sys } -Cred $cred 
Wait-Job $job 
Receive-Job $job 

对于捕捉,存储和检索的凭据,关于这个问题,请看这个blog post for a good treatise