我一直在使用 powershell 创建计划任务,以在 Window Server 2016 上使用组托管服务帐户(唯一允许的类型)。大约一年前在 5 台 2016 VM 上执行此操作,并且运行完美,每台虚拟机都设置为在工作周的某一天重新启动。直到最新的 Windows 更新。
$action = New-ScheduledTaskAction C:\Windows\System32\WindowsPowerShell\v1.0\Powershell.exe -Argument "C:\MAINTENANCE\REBOOT\REBOOT.bat"
$trigger = New-ScheduledTaskTrigger -Weekly -DaysOfWeek Tuesday -At 1:15am
$principal = New-ScheduledTaskPrincipal -UserID domain\gmsa$ -LogonType Password -RunLevel Highest
Register-ScheduledTask "Reboot Server Tuesday" –Action $action –Trigger $trigger –Principal $principal -Description "Reboot Server on Tuesday"
这是 bat 文件:
C:\Windows\System32\shutdown.exe -r -f -t 10
它不再起作用了。所以我尝试了:
$action = New-ScheduledTaskAction -Execute "C:\Windows\System32\shutdown.exe" -Argument "-r -f -t 10"
$trigger = New-ScheduledTaskTrigger -Weekly -DaysOfWeek Tuesday -At 12:01AM
$principal = New-ScheduledTaskPrincipal -UserID domain\gmsa$ -LogonType Password -RunLevel Highest
$setting = New-ScheduledTaskSettingsSet -Compatibility V1
Register-ScheduledTask "Tuesday GIS03 REBOOT Test" –Action $action -Settings $setting –Trigger $trigger –Principal $principal -Description "Tuesday GIS03 REBOOT"
我以为我需要使用 -Compatibility 将任务设置为“配置为:Windows Server 2016”,但它什么也没做,任务仍然是“配置为:Windows 7”
任务抛出了“返回代码 2147942401”,并且没有重新启动服务器。Microsoft 没有暗示存在带有 -Compatibility 标志的“Server 2016”选项。
尝试过
$action = New-ScheduledTaskAction -Execute "C:\Windows\System32\WindowsPowerShell\v1.0\Powershell.exe" -Argument "Restart-Computer -force"
相同的返回代码 2147942401,但 PS 窗口中的 Restart-Computer -force 工作正常。
是的,gmsa 帐户有权在 loc sec pol 中以批处理作业身份登录,是的,gmsa 帐户对 bat 文件所在的文件夹具有正确的权限,是的,gmsa 帐户在过去一年中成功重启了服务器,没有进行任何其他更改。我们将这些投入生产,通常会忘记它们,因为在它们上运行的应用程序配置一次即可完成,并且运行可靠。没有其他用户登录到服务器,我可以自己重启。此外,同一个 gmsa 帐户正在运行其他几个任务,没有问题(备份、事件日志扫描某些代码),只是没有重启。
那么发布最新的 WU 后,人们如何使用任务计划程序重新启动 Server 2016?