【问题标题】:Run Startup Script as another Windows user on Google Compute Engine在 Google Compute Engine 上以另一个 Windows 用户身份运行启动脚本
【发布时间】:2020-03-07 07:23:37
【问题描述】:

我需要在 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 Compute 实例中设置的默认用户。

是否有人在 Google Compute Engine 上使用过 Windows 并以其他用户身份成功运行启动脚本?

【问题讨论】:

    标签: javascript windows cmd google-cloud-platform google-compute-engine


    【解决方案1】:

    帐户nt authority\system 是一个内置系统帐户,属于管理员组。此帐户不是用户。 Google Compute Engine 实例以此帐户运行启动脚本。

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

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

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

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

    Windows Schtasks.exe

    【讨论】:

    • 感谢您的回答。我最终查看了任务计划程序,发现 GCEStartup 以nt authority\system 运行。我将运行 GCEStartup 的用户更改为我自己的管理员帐户。我不想添加自己的计划任务的原因是我需要将脚本作为字符串通过 GCE 发送,因为它是动态创建的。
    • 嘿@antoniozzo,你是如何更改运行 GCEStartup 的用户的?
    【解决方案2】:

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

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

    gcloud 计算实例创建 example-windows-instance --scopes storage-ro \ --metadata windows-startup-script-url=gs://bucket/startupscript.ps1

    注意:为避免 Powershell 中 && 的不一致,请将您的启动脚本更改为: cd /用户/管理员/文档; whoami >> log.txt

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-02-04
      • 1970-01-01
      • 1970-01-01
      • 2018-05-07
      • 1970-01-01
      • 1970-01-01
      • 2019-01-15
      相关资源
      最近更新 更多