我正在编写一个 puppet 脚本来自动在 Windows 2008 R2 SP2 上创建 TeamCity 代理。
为此,我需要通过命令行设置自定义 TeamCity 服务用户帐户。
到目前为止,我已经尝试了以下一系列命令:
1)授予我的自定义帐户“作为服务登录权利”:
ntrights +r SeServiceLogonRight -u teamcity@omnicorp
Windows 确认命令成功运行:
授予 teamcity@omnicorp SeServiceLogonRight ...成功
2)设置服务用户账户:
(Get-WmiObject Win32_Service -Filter “name='TCBuildAgent'”)。更改($Null,$Null,$Null,$Null,$Null,$Null,'teamcity@omnicorp','密码')
...命令失败,错误 21:
__GENUS : 2
__CLASS : __PARAMETERS
__SUPERCLASS :
__DYNASTY : __PARAMETERS
__RELPATH :
__PROPERTY_COUNT : 1
__DERIVATION : {}
__SERVER :
__NAMESPACE :
__PATH :
返回值 :21
PSComputerName:
以下是我目前所知道的情况:
- 错误 21 转换为“无效参数已传递给服务。”
- 用户名/密码有效 - 我知道这一点,因为我能够通过 services.msc 管理单元进行此更改
- 每当我手动应用自定义用户时,上述命令就会开始起作用(我已经在许多新虚拟机上进行了测试)。
- 这告诉我
ntrights
单凭这一点是不足以允许域帐户被服务用户使用的。
这就是我被困住的地方。所有证据表明ntrights
已经足够,但仍然缺少一些东西。
答案1
您可以尝试这个:
(Get-WmiObject Win32_Service -Filter "name='TCBuildAgent'").Change($Null,$Null,$Null,$Null,$Null,$False,'teamcity@omnicorp','password')
第6个参数对应“DesktopInteract”,正常情况下,该服务不能被授予与桌面交互的权限,除非是本地系统账户。