【问题标题】:Why does the TeamCity command line runner execute under "System"?为什么 TeamCity 命令行运行程序在“系统”下执行?
【发布时间】: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


【解决方案1】:

您是否尝试在更改凭据后重新启动服务? 我的意思是 teamcity 服务器和构建代理

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-07
    • 1970-01-01
    • 1970-01-01
    • 2011-07-10
    • 1970-01-01
    相关资源
    最近更新 更多