问题描述
我有一个由第三方供应商创建的服务,每次安装该软件实例时,我都必须手动进入并将登录帐户更改为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帐户。