我有两个 Server 2019 域控制器,其中 DHCP 服务以负载平衡模式运行,可以同步租约但不包括范围选项或保留除非通过 PowerShell 指示这样做。所以我要做的就是安排Invoke-DhcpServerv4FailoverReplication -Force
每 10 分钟运行一次。
我没想到会这么难。我在 C:\Scripts\Sync-DhcpReservations.ps1 中有一个 PowerShell 脚本,其代码如下:
$ErrorActionPreference="Continue"
Start-Transcript -Path 'C:\Scripts\output.txt' -Append
Import-Module DhcpServer
Invoke-DhcpServerv4FailoverReplication -Force
Stop-Transcript
当我将其设置为在 NT_AUTHORITY\SYSTEM 帐户下的计划任务中运行时,它失败了,并且记录输出表明拒绝了对另一个域控制器的权限。这完全说得通(SYSTEM 仅对自身具有权限),因此我创建了一个组托管服务帐户:
New-ADServiceAccount -Name DC_gMSA -DNSHostName DC_gMSA.domain.net -PrincipalsAllowedToRetrieveManagedPassword "Domain Controllers"
很好。Test-ADServiceAccount DC_gMSA
在两个域控制器上都返回 true 结果。因此,我将计划任务配置为使用此 gMSA:
$Action = New-ScheduledTaskAction -Execute 'powershell.exe' `
-Argument '-NoProfile -NonInteractive -ExecutionPolicy Bypass -File "C:\Scripts\Sync-DhcpReservations.ps1"'
$Trigger = New-ScheduledTaskTrigger -Once -At (Get-Date) -RepetitionInterval (New-TimeSpan -Minutes 10) `
-RepetitionDuration (New-TimeSpan -Days 9999)
$Principal = New-ScheduledTaskPrincipal -UserId 'DOMAIN\DC_gMSA$' -LogonType Password -RunLevel Highest
$Settings = New-ScheduledTaskSettingsSet -MultipleInstances IgnoreNew
Register-ScheduledTask -Action $Action -Trigger $Trigger -Settings $Settings -Principal $Principal `
-TaskName 'Replicate DHCP Scope Options' -TaskPath \
最终结果:任务甚至无法启动。它失败并出现 101 和 104 事件,表明 gMSA 无权执行该任务。我没有得到 PowerShell 记录,因为该脚本从未被调用过。
显然,所有最强大的 AD 组(包括企业管理员)都创建了 gMSA。无论如何,我查看了 NTFS 权限,我不认为它们是问题所在。
有没有人遇到过类似的问题?
答案1
对于后人:我已经解决了这个问题。
首先,我已经配置好了,但忘了提到 gMSA 需要“以批处理方式登录”才能执行脚本。
其次,gMSA 不是作为域计算机之外的任何组的一部分创建的。我查看的是服务帐户上的 ACL,而不是组成员身份。所以我修复了这个问题。
第三,我必须重新启动两个 DC,gMSA 的权限才能生效。
答案2
简短版本:将 gMSA 帐户添加到域的“DHCP 管理员”组。
谢谢。我发布这个是为了希望它能帮助别人。你说:
gMSA 不是作为域计算机之外的任何组的一部分创建的。我查看的是服务帐户上的 ACL,而不是组成员身份。所以我修复了这个问题。
但是当您说“我解决了这个问题”时,我并不清楚您要解决什么问题或您做了什么来解决这个问题。
我尝试做和你完全相同的事情,但遇到了同样的问题。我在服务器上完成了所有正常的 gMSA 操作,并且 gMSA 已在我的所有其他服务器上运行。为了解决这个特定问题,我必须将 gMSA 帐户添加到域的“DHCP 管理员”组。这对我来说就是解决办法,可能就是你说“我解决了这个问题”时所指的。
干杯!