2010-09-20 57 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