【发布时间】:2012-12-14 03:06:35
【问题描述】:
在运行命令行构建时,我在使用 TeamCity 时遇到了一些身份验证问题。它与关于executing an svn checkout command 的现有问题有关,但我想在这里明确提出:
为什么当我执行此命令时,当 TeamCity 构建代理服务配置为在特定 Active Directory 帐户下运行,而不是本地系统帐户下运行:
echo "%username%"
我得到这个构建输出:
[20:52:04]: C:\TeamCity\buildAgent\work\b67560ceb299718c>echo "SYSTEM"
[20:52:04]: "SYSTEM"
这对我以我的 AD 服务帐户身份执行命令的尝试造成了严重破坏,为什么会发生这种情况?其他构建运行程序(即 MSBuild)正在以服务帐户的身份执行,为什么命令行没有发生这种情况?
更新 1: 使用 Exec 目标将命令包装在 MSBuild 脚本中执行相同的操作 - 当前用户仍然是“系统”。
更新 2:“set”命令的输出将用户名显示为“System”,但用户配置文件指向服务帐户的配置文件:
[13:38:28]: USERDNSDOMAIN=[domain.dns name]
[13:38:28]: USERDOMAIN=[domain]
[13:38:28]: USERNAME=SYSTEM
[13:38:28]: USERPROFILE=C:\Users\[service account]
【问题讨论】:
-
也许你应该使用 %user.name%?
-
问题不在于获取当前用户身份的能力,它工作得很好。问题是进程没有在预期的身份下运行。而且我不相信 %user.name% 是有效的语法。
-
我不相信具有 AD 身份的进程(构建代理)可以创建具有 SYSTEM 身份的进程。
-
啊,我明白你的意思了,这是代理属性,我指的是命令行属性。
标签: command-line authorization teamcity