将Windows服务登录设置为GMSA帐户

问题描述

我有一个由第三方供应商创建的服务,每次安装该软件实例时,我都必须手动进入并将登录帐户更改为GMSA帐户。

认情况下,此服务是使用登录帐户作为本地系统创建的。当我运行下面的Powershell代码时,我得到的返回值为21,其中包含无效的参数:

'''

$ServiceObject  = get-wmiobject -Class Win32_Service -filter "Name='$ServiceName'"
$ServiceObject.StopService() | out-null

# Change logon as settings
$ServiceObject.Change($null,$null,$GMSAServiceAccount,$null) 
$ServiceObject.StartService()

'''

我确实在测试中发现是否以与GMSA相同的域中的其他用户身份手动登录了Service Account。然后运行上面的脚本,它运行成功。我还缺少其他步骤吗?

解决方法

我们使用这段代码为gMSA帐户配置服务:

$serviceName = 'myService' 
$ServiceObject = Get-WmiObject -Class Win32_Service -Filter "Name='$serviceName'" 
$ServiceObject.StopService() | out-null

# Change logon as settings
$ServiceObject.Change($null,$null,"$env:USERDOMAIN\$gMSA_Name$",$null)
$ServiceObject.StartService()

确保gMSA帐户名后面有$。这表明它是一个gMSA帐户。