使用服务帐户为其他用户执行自动签入(TFS / Powershell)

时间:2014-04-17 18:16:41

标签: powershell tfs tfs2012

我正在尝试使用TFS版本控制做一些可能有点不寻常的事情,我不知道如何去做。我们正在使用第三方工具,该工具只能通过生成保存其配置的按需XML文件来备份。我们想在TFS上每台机器执行这些XML文件的夜间备份。我为TFS中的每台机器创建了一个文件夹,文件将在导出后进行检查。

我们要设置运行Powershell脚本的计划任务,该脚本检出计算机指定文件夹中的现有文件,将当前配置XML导出到计算机的TFS映射文件夹,然后检入该文件夹。现在如果我将任务设置为在我自己的计算机上使用自己的凭据运行,则整个过程正常运行。但是,这需要在许多计算机上运行,​​每台计算机都有自己的主用户,该用户拥有TFS工作区。

这可以通过在每台计算机上创建Windows计划任务并将该用户的凭据作为应运行脚本的上下文提供当前脚本的编写方式来实现。但是,此配置会破坏每个用户更改其密码的第二个。为了解决这个问题,我创建了一个服务帐户来运行它,但当我尝试在新帐户下运行它时,TFS不确定它应该使用哪个工作区并告诉我“无法确定工作区。你。也许可以通过运行'tf workspaces / collection:TeamProjectCollectionUrl'来解决这个问题。“当我使用此命令指定工作区时,我被告知服务帐户没有使用工作区的权限。

我觉得必须有一个更简单/更好的方法来解决这个问题。任何人都可以提供一些关于在拥有私有工作区的用户以外的帐户上下文中运行时通过powershell进行自动签入的指导吗?

1 个答案:

答案 0 :(得分:1)

你的方法听起来是正确的。您的脚本需要使用 tf workspace 命令创建工作区,然后才能检测到文件更改并将其签入服务器。

听起来你无法做到这一点,因为你有权限问题。由于您的服务帐户的行为方式与您团队中的用户相同,因此您的服务帐户应具有与用户相同的权限。

尝试以下命令:

TFSSecurity /imx Identity [/collection:CollectionURL] [/server:ServerURL]

使用此选项可验证服务帐户的TFS标识是否为正确组的成员并具有正确的权限。

要创建工作区,您的服务帐户必须是包含相关团队项目的项目收藏的项目收集有效用户组的成员。