无法通过命令行设置服务用户帐户

我正在编写一个puppet脚本来在Windows 2008 R2 SP2上自动创buildTeamCity代理。
为此,我需要通过命令行设置一个自定义的TeamCity服务用户帐户。

到目前为止,我已经尝试了这一系列的命令:

1)授予我的自定义帐户“作为服务权限login”:

ntrights + r SeServiceLogonRight -u teamcity @ omnicorp

Windows确认命令成功工作:

将SeServiceLogonRight授予teamcity @ omnicorp …成功

2)设置服务用户帐号:

(Get-WmiObject Win32_Service -Filter“name ='TCBuildAgent'”)。Change($ Null,$ Null,$ Null,$ Null,$ Null,$ Null,'teamcity @ omnicorp','password')

…命令失败,错误21:

__GENUS:2
__CLASS:__PARAMETERS
__SUPERCLASS:
__DYNASTY:__PARAMETERS
__RELPATH:
__PROPERTY_COUNT:1
__指令:{}
__SERVER:
__NAMESPACE:
__PATH:
返回值: 21
PSComputerName:

以下是我所知道的:

  • 错误21转换为 “传递给服务的参数无效”。
  • 用户名/密码是有效的 – 我知道这是因为我能够通过services.mscpipe理单元进行此更改
  • 每当我手动应用自定义用户,上面的命令开始工作(我已经testing了许多新的虚拟机)。
  • 这就告诉我, ntrights是不足以允许域帐户被服务用户使用的。

这是我卡住的地方。 所有的证据表明ntrights是足够的,但还是有东西丢失。

你可以试试这个:

 (Get-WmiObject Win32_Service -Filter "name='TCBuildAgent'").Change($Null,$Null,$Null,$Null,$Null,$False,'teamcity@omnicorp','password') 

第六个参数对应于“DesktopInteract”,通常情况下,服务不能被授予与桌面交互的权限,除非是本地系统帐户。