0

Я пытаюсь применить свои сценарии запуска к новым экземплярам Windows в Google Compute Engine, как описано here, однако, когда я проверяю экземпляры, их следы никогда не выполняются. Вот команда gcloud Я бегу:GCE Экземпляр Windows не запускает сценарии запуска

экземпляры gcloud Compute создать "свой-экземпляр" --project "мой-проект"
--zone "нам-central1-а"
--Машина типа "g1-маленький"
--network "по умолчанию"
--metadata "GCE-начально-окна пользователь = мой пользователь" "GCE-начально-окна-пароль = мой проход"
--maintenance- политика "МИГРАЦИЯ"
--scopes "storage-ro" --tags "http-server" "https-server"
--image "https://www.googleapis.com/compute/v1/projects/windows-cloud/global/images/windows-server-2008-r2-dc-v20150110 "
--boot-диск типа "PD-стандарт"
-устройство-имя-диска --boot "моя инстанция"
--metadata-из-файла Sysprep-OOBE-скрипт-ps1 = D : \ Path \ To \ startup.ps1

Я попытался использовать все 3 типа запуска (sysprep-specialize-script-ps1, sysprep-oobe-script-ps1, windows-startup-script-ps1), но никто не работал. Невозможно увидеть какие-либо индикаторы в планировщике заданий или в средстве просмотра событий. Файл в моей системе существует и работает, когда я запускаю его вручную. Как я могу заставить это работать?

+0

Если вы не получили здесь никакой полезной помощи, попробуйте Server Fault. Установлен ли PowerShell и работает на создаваемых вами машинах? Вы пытались поставить сценарий где-то удаленно? – spirulence

+0

Да PowerShell работает над новыми экземплярами, так как я могу использовать RDP в них и запускать команды PS вручную – robarelli

ответ

1

Хорошим способом отладки сценариев Powershell является их запись на последовательную консоль (COM1). Вы сможете увидеть вывод сценария из вывода последовательного порта GCE.

экземпляры gcloud Compute получить-последовательный порта-вывод моей инстанции --zone нам-central1-а

Если нет сценария вы увидите что-то вроде:

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 описывают мой инстанции --zone нас-central1-а --format

JSON

JSON свалка должна содержать скрипт Powershell внутри него.

Наконец, отличным способом отладки сценариев запуска Powershell является запись вывода на последовательную консоль.

Вы можете распечатать сообщения журнала и просмотреть их в консоли разработчика Google> Compute> Compute Engine> экземпляры виртуальных машин> (имя экземпляра). Затем прокрутите страницу вниз и нажмите кнопку «Расширить» для «Последовательная консоль».

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 создать testwin2 --zone нас-central1-а --metadata-из-файла Sysprep-OOBE-скрипт-ps1 = testconsole.ps1 --image окна-2008-r2

+0

Я добавил эту функцию в свой скрипт и выяснил, что мой сценарий действительно работает и что была некоторая ошибка, из-за которой он терпел неудачу молча , Благодаря! – robarelli

0

Я попробовал функцию Write-SerialPort в моем сценарии запуска powershell, но это шоу не может открываться или не закрываться каждый раз.

поэтому я стараюсь Write-Output, и он работает.

Смежные вопросы