BUILTIN\Administrators 和普通管理员组之间的区别

Difference between BUILTIN\Administrators and normal Administrators Group

我有一个脚本可以在 VM 上启动应用程序并记录应用程序的一些数据。由于 Powershell 脚本不允许我 运行 应用程序在前台,我决定在 2 分钟后安排一个任务,然后继续轮询任务完成。

我正在使用这个命令来注册我的任务

 $password= "password" | ConvertTo-SecureString -asPlainText -Force; 
 $username = "name";
 $credential = New-Object System.Management.Automation.PSCredential($username,$password);
 Invoke-Command -VMName INSTANCE_ID -Credential $credential -ScriptBlock 
      {
        $gettime = (Get-Date).AddMinutes(2);
        $run = $gettime.ToString('HH:mm');
        $action = New-ScheduledTaskAction -Execute 'C:\logging.bat';
        $trigger = New-ScheduledTaskTrigger -Once -At $run;
        $principal = New-ScheduledTaskPrincipal -GroupID "BUILTIN\Administrators" -RunLevel Highest;
        Register-ScheduledTask -Action $action -Trigger $trigger -Principal $principal -TaskName "ID_Logging_Task" -Description "my description"
       }

它工作正常,但它有一个问题,它 运行 只有在用户登录时才能正常工作。更多上下文 - https://docs.microsoft.com/en-us/powershell/module/scheduledtasks/new-scheduledtaskprincipal?view=windowsserver2022-ps(示例 2)

所以我查看了 Register-ScheduledTask 的文档,看到我可以在注册任务时向命令提供用户名和密码。所以我使用了具有管理员权限的帐户的用户名和 运行 新命令:

 $password= "password" | ConvertTo-SecureString -asPlainText -Force; 
 $username = "name";
 $credential = New-Object System.Management.Automation.PSCredential($username,$password);
 Invoke-Command -VMName INSTANCE_ID -Credential $credential -ScriptBlock 
      {
        $gettime = (Get-Date).AddMinutes(2);
        $run = $gettime.ToString('HH:mm');
        $action = New-ScheduledTaskAction -Execute 'C:\logging.bat';
        $trigger = New-ScheduledTaskTrigger -Once -At $run;
        Register-ScheduledTask -Action $action -Trigger $trigger -TaskName "ID_Logging_Task" -RunLevel Highest -User "myUser" -Password "myPassword" -Description "my description"
       }

“myUser”是这台机器的管理员。这解决了 运行 无需手动登录即可执行任务的问题,但现在我的应用程序是在后台而不是前台启动的,这是 运行 执行这些计划任务的重点。

我的问题是 BUILTIN\Administrators 和管理员帐户之间有什么区别。我该如何解决我的问题?我想 运行 使用 -GroupID“BUILTIN\Administrators” 的权限执行我的任务,而无需实际登录机器。

群与账号的区别

BuiltIn\Administrators 是您可以加入的群组。

管理员是默认帐户,通常在新 Windows 安装时被禁用。

有一种方法可以解决这个问题,可能比看起来更容易。

实现你想要的

I have a script which launches an app on the VM and logs some data for the app

让我们把它分成三部分

正在启动 VM

如果您希望您的 VM 始终 运行ning,您可以将其设置为 'Always Start'。这个选项很棒,因为它会与主机一起启动虚拟机,你甚至可以指定一个启动延迟,这很棒,因为这可以减轻磁盘和 cpu 的压力,因为启动虚拟机会导致两者的峰值这些资源。

如果您这样做,这将负责启动 VM。

正在启动应用程序

对于下一篇文章,这与您已经拥有的用于 运行 计划任务的语法一样简单。如果您想 运行 作为域帐户并 运行 作为管理员,只需将域帐户设为系统上 'Administrators' 组的成员即可。

运行 在前台

这是问题所在,但我不明白为什么这是个问题。当用户登录到计算机时,计划任务只会 运行 在前台。

有了这个选项,您可以在用户登录计算机时让应用程序出现在用户的会话中,例如 Kiosk 应用程序或 Point-Of-sale 系统、仪表板显示等。

如果您将某个应用设置为 运行,无论用户是否登录,那么它 将始终 运行 在后台运行。

你确定这很重要吗?

启动时在前台制作应用程序运行 如果您希望某个应用无需登录即可 运行,它会在后台 运行。

如果你真的想要到运行在前台,那么设置机器自动登录就可以了,如果是自动登录,那么它就会登录并显示桌面,然后定时任务可以改成'Run only when a user is logged in',这样就会运行在前台。

但是,为什么有人需要 VM 中的应用程序 ,它在前台本质上是无头的 到 运行?