GCE Windows 实例不是 运行 启动脚本
GCE Windows Instance not running startup scripts
我一直在尝试将我的启动脚本应用到 Google Compute Engine 上的新 Windows 实例,如 here 所述,但是当我检查这些实例时,没有它们的踪迹永远被执行。这是我 运行ning:
的 gcloud 命令
gcloud 计算实例创建 "my-instance"
--项目"my-project"
--zone "us-central1-a"
--机器类型"g1-small"
--网络"default"
--元数据"gce-initial-windows-user=my-user""gce-initial-windows-password=my-pass"
--维护政策"MIGRATE"
--范围"storage-ro"
--tags "http-server" "https-server"
--图片“https://www.googleapis.com/compute/v1/projects/windows-cloud/global/images/windows-server-2008-r2-dc-v20150110”
--boot-disk-type "pd-standard"
--boot-disk-device-name "my-instance"
--metadata-from-file sysprep-oobe-script-ps1=D:\Path\To\startup.ps1
我尝试使用所有 3 种启动类型(sysprep-specialize-script-ps1、sysprep-oobe-script-ps1、windows-startup-script-ps1) 但 none 有效。在任务计划程序或事件查看器中也看不到任何指示。当我手动 运行 它时,我系统上的文件存在并且确实有效。我怎样才能让它工作?
调试 Powershell 脚本的一个好方法是让它们写入串行控制台 (COM1)。您将能够从 GCE 的串行端口输出中看到脚本的输出。
gcloud compute instances get-serial-port-output my-instance --zone
us-central1-a
如果没有脚本,您会看到如下内容:
Calling oobe-script from metadata.
attributes/sysprep-oobe-script-bat value is not set or metadata server is not reachable.
attributes/sysprep-oobe-script-cmd value is not set or metadata server is not reachable.
attributes/sysprep-oobe-script-ps1 value is not set or metadata server is not reachable.
Running schtasks with arguments /run /tn GCEStartup
--> SUCCESS: Attempted to run the scheduled task "GCEStartup".
-------------------------------------------------------------
Instance setup finished. windows is ready to use.
-------------------------------------------------------------
Booting on date 01/25/2015 06:26:26
attributes/windows-startup-script-bat value is not set or metadata server is not reachable.
attributes/windows-startup-script-cmd value is not set or metadata server is not reachable.
attributes/windows-startup-script-ps1 value is not set or metadata server is not reachable.
确保 ps1 文件的内容实际附加到实例。
gcloud compute instances describe my-instance --zone us-central1-a
--format json
JSON 转储应该包含 powershell 脚本。
最后,调试 Powershell 启动脚本的一个好方法是将输出写入串行控制台。
您可以打印日志消息并在 Google 开发人员控制台 > 计算 > 计算引擎 > VM 实例 >(实例名称)中查看它们。然后滚动到底部并单击 "Serial console".
的展开选项
Function Write-SerialPort ([string] $message) {
$port = new-Object System.IO.Ports.SerialPort COM1,9600,None,8,one
$port.open()
$port.WriteLine($message)
$port.Close()
}
Write-SerialPort ("Testing GCE Startup Script")
这个命令对我有用,我必须确保脚本是用 ascii 编写的。 Powershell ISE 使用破坏 gcloud 计算的不同编码写入。
gcloud compute instances create testwin2 --zone us-central1-a
--metadata-from-file sysprep-oobe-script-ps1=testconsole.ps1 --image windows-2008-r2
我一直在尝试将我的启动脚本应用到 Google Compute Engine 上的新 Windows 实例,如 here 所述,但是当我检查这些实例时,没有它们的踪迹永远被执行。这是我 运行ning:
的 gcloud 命令gcloud 计算实例创建 "my-instance"
--项目"my-project"
--zone "us-central1-a"
--机器类型"g1-small"
--网络"default"
--元数据"gce-initial-windows-user=my-user""gce-initial-windows-password=my-pass"
--维护政策"MIGRATE"
--范围"storage-ro"
--tags "http-server" "https-server"
--图片“https://www.googleapis.com/compute/v1/projects/windows-cloud/global/images/windows-server-2008-r2-dc-v20150110”
--boot-disk-type "pd-standard"
--boot-disk-device-name "my-instance"
--metadata-from-file sysprep-oobe-script-ps1=D:\Path\To\startup.ps1
我尝试使用所有 3 种启动类型(sysprep-specialize-script-ps1、sysprep-oobe-script-ps1、windows-startup-script-ps1) 但 none 有效。在任务计划程序或事件查看器中也看不到任何指示。当我手动 运行 它时,我系统上的文件存在并且确实有效。我怎样才能让它工作?
调试 Powershell 脚本的一个好方法是让它们写入串行控制台 (COM1)。您将能够从 GCE 的串行端口输出中看到脚本的输出。
gcloud compute instances get-serial-port-output my-instance --zone us-central1-a
如果没有脚本,您会看到如下内容:
Calling oobe-script from metadata.
attributes/sysprep-oobe-script-bat value is not set or metadata server is not reachable.
attributes/sysprep-oobe-script-cmd value is not set or metadata server is not reachable.
attributes/sysprep-oobe-script-ps1 value is not set or metadata server is not reachable.
Running schtasks with arguments /run /tn GCEStartup
--> SUCCESS: Attempted to run the scheduled task "GCEStartup".
-------------------------------------------------------------
Instance setup finished. windows is ready to use.
-------------------------------------------------------------
Booting on date 01/25/2015 06:26:26
attributes/windows-startup-script-bat value is not set or metadata server is not reachable.
attributes/windows-startup-script-cmd value is not set or metadata server is not reachable.
attributes/windows-startup-script-ps1 value is not set or metadata server is not reachable.
确保 ps1 文件的内容实际附加到实例。
gcloud compute instances describe my-instance --zone us-central1-a --format json
JSON 转储应该包含 powershell 脚本。
最后,调试 Powershell 启动脚本的一个好方法是将输出写入串行控制台。
您可以打印日志消息并在 Google 开发人员控制台 > 计算 > 计算引擎 > VM 实例 >(实例名称)中查看它们。然后滚动到底部并单击 "Serial console".
的展开选项Function Write-SerialPort ([string] $message) {
$port = new-Object System.IO.Ports.SerialPort COM1,9600,None,8,one
$port.open()
$port.WriteLine($message)
$port.Close()
}
Write-SerialPort ("Testing GCE Startup Script")
这个命令对我有用,我必须确保脚本是用 ascii 编写的。 Powershell ISE 使用破坏 gcloud 计算的不同编码写入。
gcloud compute instances create testwin2 --zone us-central1-a --metadata-from-file sysprep-oobe-script-ps1=testconsole.ps1 --image windows-2008-r2