2017-05-11 29 views
0

我是TFS的新手,需要幫助來克服以下問題。使用特定用戶從TFS構建服務器調用批處理腳本

我有有執照的測試工具,臺式機和自動測試使用該工具開發。該工具的許可證綁定到登錄到該桌面的用戶。 現在我爲自動化測試創建了一個批處理文件,我想從TFS調用這個批處理文件。我已經在桌面上安裝了TFS代理,該工具在TFS服務器上配置了一個運行此批處理文件的構建定義,一切運行良好,直到這裏。

問題是,當TFS代理程序調用批處理腳本時(我認爲)它作爲SYSTEM用戶而不是被綁定到許可證的用戶。由於此許可證檢查失敗,我的測試無法運行。 有什麼辦法可以告訴TFS使用特定的用戶來運行批處理腳本嗎?

回答

0

批處理腳本使用生成服務帳戶運行。如果要使用特定帳戶運行批處理腳本,則需要更改生成代理服務帳戶。

對於TFS 2015年生成代理,運行以下命令:

C:\Agent\Agent\VsoAgent.exe /ChangeWindowsServiceAccount 

請參閱本文件更改的帳戶:https://www.visualstudio.com/en-us/docs/build/actions/agents/v1-windows

如果使用TFS 2017年生成代理,只是re-configure,並指定當你重新配置它的帳戶。

+0

如果代理使用一個以上的項目它了沒有好主意切換代理的身份。 – k7s5a

0

您可以使用PowerShell的包裝腳本開始與不同身份執行。

param (

    [Parameter(Mandatory=$True)] 
    [string]$username, 
    [Parameter(Mandatory=$True)] 
    [string]$password, 
    [Parameter(Mandatory=$True)] 
    [string]$executable, 
    [Parameter(Mandatory=$False)] 
    [string[]]$arguments, 
    [Parameter(Mandatory=$False)] 
    [string]$workingDirectory 
) 


$secpassword = $password | ConvertTo-SecureString -asPlainText -Force 
$password = $null 
$credentials = New-Object System.Management.Automation.PSCredential($username,$secPassword) 

$workingDirectory = if([string]::IsNullOrEmpty($workingDirectory)){(Get-Item -Path ".\").FullName} 

Start-Process $executable -ArgumentList $arguments -WorkingDirectory $workingDirectory -Credential ($credentials) 

使用密碼在您的構建或發佈定義中創建一個隱藏變量「密碼」,並將隱藏的可見性設置爲隱藏。

調用此腳本與PowerShell的步驟:

-username "username" -password = $(password) -executable "myExecutable" -arguments '-param "param1"','-param2 "param2"','-param3"d:\directory\with blanks in a path\"' 
相關問題