运行 作为 Windows Compute Engine 上的另一个 Windows 用户启动脚本

Run Startup Script as another Windows user on Google Compute Engine

我需要 运行 我的启动脚本作为 Windows 上的管理员用户。目前我有这个:

vm.create({
  ...config,
  metadata: {
    items: [
      {
        key: "windows-startup-script-cmd",
        value: "cd /Users/admin/Documents && whoami >> log.txt",
      },
    ],
  },
});

这会创建一个 log.txt,当前用户是 nt authority\system,而不是您在 Google 计算实例中设置的默认用户。

有没有人在 Google Compute Engine 上使用 Windows 作为另一个用户成功地 运行 启动脚本?

帐户 nt authority\system 是属于 Administrators 组的内置系统帐户。此帐户不是用户。 Google Compute Engine 实例 运行 作为此帐户的启动脚本。

您的问题不清楚 Administrator 帐户是什么意思。该术语通常用于表示 a) 名为 Administrator 的用户帐户和 b) 具有提升权限的帐户。

启动系统帐号是Administrator,但不是名为Administrator的用户帐号。这些是不同的概念。我不建议您 运行 需要访问名为 Administrator 的用户的脚本。相反,设计您的启动脚本来执行作为系统帐户的一部分所需的任务。

请注意,管理员帐户可以有任何名称。 Administrator 的用法只是一种约定。启动脚本未以用户身份登录,因此您 运行 启动脚本作为登录用户(此时未登录)的目标是不可能的。您必须事先知道用户名,用户名必须有密码并且必须启用。 None 其中存在于新实例的第一次启动时。

您可以使用启动脚本中的 schtasks 命令以任何用户名将任务安排到 运行。必须启用用户帐户并设置密码。

Windows Schtasks.exe

请查看 Google 文档 [1],其中概述了如何向新实例提供存储在 Cloud Storage 上的启动脚本或将启动脚本应用于 运行 个实例。

为此,您可以创建一个 .ps1 文件并将其存储到云存储桶中。 然后通过以下 gcloud 命令调用它:

gcloud compute instances 创建示例-windows-instance --scopes storage-ro \ --metadata windows-startup-script-url=gs://bucket/startupscript.ps1

注意:为避免 Powershell 中 && 的不一致,请将您的启动脚本更改为: CD /Users/admin/Documents ; whoami >> log.txt

[1] https://cloud.google.com/compute/docs/startupscript#providing_a_startup_script