Una secuencia de comandos de inicio es un archivo que realiza tareas durante el proceso de inicio de una instancia de máquina virtual (VM). Las secuencias de comandos de inicio se pueden aplicar a todas las VMs de un proyecto o a una sola VM. Las secuencias de comandos de inicio especificadas por los metadatos a nivel de VM anulan las secuencias de comandos de inicio especificadas por los metadatos a nivel de proyecto. Además, las secuencias de comandos de inicio solo se ejecutan cuando hay una red disponible. En este documento se describe cómo usar secuencias de comandos de inicio en instancias de máquina virtual de Windows Server. Para obtener información sobre cómo añadir una secuencia de comandos de inicio a nivel de proyecto, consulta gcloud compute project-info add-metadata
.
Las secuencias de comandos de inicio de Windows deben ser de shell de comandos (.cmd
), de PowerShell (.ps1
) o de archivos por lotes (.bat
), y deben tener la extensión de archivo adecuada.
Si especificas una secuencia de comandos de inicio mediante uno de los procedimientos de este documento, Compute Engine hará lo siguiente:
Copia la secuencia de comandos de inicio en la VM.
El Programador de tareas ejecuta la secuencia de comandos de inicio como la
LocalSystem
cuenta cuando se inicia la VM.
Para obtener información sobre las distintas tareas relacionadas con las secuencias de comandos de inicio y cuándo realizar cada una de ellas, consulta el documento de descripción general de las secuencias de comandos de inicio.
Antes de empezar
- Consulta la descripción general de las secuencias de comandos de inicio.
- Consulta información básica sobre los metadatos de las VMs.
-
Si aún no lo has hecho, configura la autenticación.
La autenticación verifica tu identidad para acceder a Google Cloud servicios y APIs. Para ejecutar código o ejemplos desde un entorno de desarrollo local, puedes autenticarte en Compute Engine seleccionando una de las siguientes opciones:
Select the tab for how you plan to use the samples on this page:
Console
When you use the Google Cloud console to access Google Cloud services and APIs, you don't need to set up authentication.
gcloud
-
Instala Google Cloud CLI. Después de la instalación, inicializa la CLI de Google Cloud ejecutando el siguiente comando:
gcloud init
Si utilizas un proveedor de identidades (IdP) externo, primero debes iniciar sesión en la CLI de gcloud con tu identidad federada.
- Set a default region and zone.
REST
Para usar las muestras de la API REST de esta página en un entorno de desarrollo local, debes usar las credenciales que proporciones a la CLI de gcloud.
Instala Google Cloud CLI. Después de la instalación, inicializa la CLI de Google Cloud ejecutando el siguiente comando:
gcloud init
Si utilizas un proveedor de identidades (IdP) externo, primero debes iniciar sesión en la CLI de gcloud con tu identidad federada.
Para obtener más información, consulta el artículo Autenticarse para usar REST de la documentación sobre autenticación de Google Cloud .
Claves de metadatos para secuencias de comandos de inicio de Windows
Una secuencia de comandos de inicio se transfiere a una VM desde una ubicación especificada por una clave de metadatos. Una clave de metadatos especifica si la secuencia de comandos de inicio se almacena localmente, en Cloud Storage o se transfiere directamente a la VM. La clave de metadatos que utilices también puede depender del tamaño o del tipo de archivo de la secuencia de comandos de inicio.
En la siguiente tabla se muestran las claves de metadatos que puede usar para los scripts de inicio de Windows y se indica qué clave debe usar en función de la ubicación de almacenamiento, el tamaño y el tipo de archivo del script de inicio.
Clave de metadatos Usar para sysprep-specialize-script-ps1
Transferir una secuencia de comandos de PowerShell sin firmar que esté almacenada localmente o que se haya añadido directamente y que tenga un tamaño de hasta 256 KB sysprep-specialize-script-cmd
Transferir una secuencia de comandos de shell que esté almacenada localmente o que se haya añadido directamente y que tenga un tamaño de hasta 256 KB sysprep-specialize-script-bat
Transferir una secuencia de comandos de un archivo por lotes almacenado de forma local o añadido directamente, con un tamaño de hasta 256 KB sysprep-specialize-script-url
Enviar un archivo de proceso por lotes, un shell de comandos, un script de PowerShell firmado o sin firmar, o un archivo ejecutable almacenado en Cloud Storage que tenga un tamaño superior a 256 KB windows-startup-script-ps1
Transferir una secuencia de comandos de PowerShell sin firmar que esté almacenada localmente o que se haya añadido directamente y que tenga un tamaño de hasta 256 KB windows-startup-script-cmd
Transferir una secuencia de comandos de shell que esté almacenada localmente o que se haya añadido directamente y que tenga un tamaño de hasta 256 KB windows-startup-script-bat
Enviar una secuencia de comandos de un archivo por lotes almacenado de forma local o añadido directamente y que tenga un tamaño de hasta 256 KB windows-startup-script-url
Enviar un archivo de proceso por lotes, un shell de comandos, un script de PowerShell firmado o sin firmar, o un archivo ejecutable almacenado en Cloud Storage que tenga un tamaño superior a 256 KB Para obtener más información sobre el orden de ejecución de los distintos tipos de scripts de inicio, consulta el repositorio GoogleCloudPlatform/compute-image-windows en GitHub.
Orden de ejecución de las secuencias de comandos de inicio de Windows
Puedes usar varias secuencias de comandos de inicio. Las secuencias de comandos de inicio almacenadas localmente o añadidas directamente se ejecutan antes que las secuencias de comandos de inicio almacenadas en Cloud Storage. El tipo de archivo que contiene la secuencia de comandos también influye en el orden de ejecución. En la siguiente tabla se muestra, en función de la clave de metadatos, el orden de ejecución de las secuencias de comandos de inicio de Windows.
Clave de metadatos Orden de ejecución sysprep-specialize-script-ps1
Primero durante el arranque inicial sysprep-specialize-script-cmd
Segundo durante el arranque inicial sysprep-specialize-script-bat
Tercero durante el arranque inicial sysprep-specialize-script-url
Cuarto durante el arranque inicial windows-startup-script-ps1
Primero durante cada inicio después del inicio inicial windows-startup-script-cmd
Segundo durante cada inicio después del inicio inicial windows-startup-script-bat
Tercera durante cada arranque después del arranque inicial windows-startup-script-url
Cuarto durante cada inicio después del inicio inicial Transferir directamente una secuencia de comandos de inicio de Windows
Transfiere directamente el contenido de un archivo por lotes, un shell de comandos o una secuencia de comandos de inicio de PowerShell sin firmar a una VM de Windows Server. En los siguientes procedimientos se muestra cómo transferir una secuencia de comandos de PowerShell sin firmar.
Consola
Transferir una secuencia de comandos de inicio de Windows directamente a una máquina virtual nueva
En la Google Cloud consola, ve a la página Crear una instancia.
En Disco de arranque, selecciona Cambiar y haz lo siguiente:
- En la pestaña Imágenes públicas, elige un sistema operativo Windows Server.
- Haz clic en Seleccionar.
Despliega la sección Opciones avanzadas y haz lo siguiente:
- Despliega la sección Gestión.
En la sección Metadatos, haz clic en Añadir elemento para definir la clave y el valor:
Clave: se ha asignado el valor
windows-startup-script-ps1
.Las secuencias de comandos de inicio que se transfieren a la VM mediante claves de metadatos que empiezan por
windows-startup-script
se ejecutan en cada arranque después del arranque inicial de la VM.Valor: añade la siguiente secuencia de comandos:
# Installing IIS Import-Module servermanager Install-WindowsFeature Web-Server -IncludeAllSubFeature # Ensure the directory exists if (-not (Test-Path("C:\inetpub\wwwroot"))) {New-Item "C:\inetpub\wwwroot" -Type Directory} # Write the expanded string out to the file, overwriting the file if it already exists. "<html><body><p>Windows startup script added directly.</p></body></html>" | Out-File -FilePath C:\inetpub\wwwroot\index.html -Encoding ascii -Force
Haz clic en Crear.
Transferir una secuencia de comandos de inicio de Windows directamente a una VM que ya existe
En la consola de Google Cloud , ve a la página Instancias de VM.
Haz clic en el nombre de la VM.
Haz clic en Editar.
En Metadatos, especifique lo siguiente:
key
:windows-startup-script-ps1
value
: el contenido de la secuencia de comandos de inicio
Verificar la secuencia de comandos de inicio
Una vez que se haya iniciado la VM, consulta la IP externa en un navegador web para verificar que la secuencia de comandos de inicio ha creado el sitio web. Es posible que tengas que esperar unos 10 minutos para que finalice la secuencia de comandos de inicio de muestra.
gcloud (Bash)
Transferir una secuencia de comandos de inicio de Windows directamente a una máquina virtual nueva
Transfiere el contenido de una secuencia de comandos de inicio directamente a una VM de Windows Server cuando la crees mediante el siguiente comando
gcloud compute instances create
:gcloud compute instances create VM_NAME \ --image-project=windows-cloud \ --image-family=windows-2019-core \ --metadata=windows-startup-script-ps1='Import-Module servermanager Install-WindowsFeature Web-Server -IncludeAllSubFeature "<html><body><p>Windows startup script added directly.</p></body></html>" > C:\inetpub\wwwroot\index.html'
Sustituye VM_NAME por el nombre de la VM.
Transferir una secuencia de comandos de inicio de Windows directamente a una VM que ya existeAñade la secuencia de comandos de inicio directamente a una VM que ya tengas con el siguiente
gcloud compute instances add-metadata
comando:gcloud compute instances add-metadata VM_NAME \ --image-project=windows-cloud \ --image-family=windows-2019-core \ --metadata=windows-startup-script-ps1='Import-Module servermanager Install-WindowsFeature Web-Server -IncludeAllSubFeature "<html><body><p>Windows startup script added directly.</p></body></html>" > C:\inetpub\wwwroot\index.html'
Sustituye VM_NAME por el nombre de la VM.
Verificar la secuencia de comandos de inicioUna vez que se haya iniciado la VM, consulta la IP externa en un navegador web para verificar que la secuencia de comandos de inicio ha creado el sitio web. Puede que tengas que esperar unos 10 minutos a que termine la secuencia de comandos de inicio de muestra.
gcloud (símbolo del sistema)
Transferir una secuencia de comandos de inicio de Windows directamente a una máquina virtual nueva
Transfiere el contenido de una secuencia de comandos de inicio directamente a una VM de Windows Server cuando la crees mediante el siguiente comando
gcloud compute instances create
:gcloud compute instances create VM_NAME ^ --image-project=windows-cloud ^ --image-family=windows-2019-core ^ --metadata=windows-startup-script-ps1='Import-Module servermanager Install-WindowsFeature Web-Server -IncludeAllSubFeature "<html><body><p>Windows startup script added directly.</p></body></html>" > C:\inetpub\wwwroot\index.html'
Sustituye VM_NAME por el nombre de la VM.
Transferir una secuencia de comandos de inicio de Windows directamente a una VM que ya existeAñade la secuencia de comandos de inicio directamente a una VM que ya tengas con el siguiente
gcloud compute instances add-metadata
comando:gcloud compute instances add-metadata VM_NAME ^ --image-project=windows-cloud ^ --image-family=windows-2019-core ^ --metadata=windows-startup-script-ps1='Import-Module servermanager Install-WindowsFeature Web-Server -IncludeAllSubFeature "<html><body><p>Windows startup script added directly.</p></body></html>" > C:\inetpub\wwwroot\index.html'
Sustituye VM_NAME por el nombre de la VM.
Verificar la secuencia de comandos de inicioUna vez que se haya iniciado la VM, consulta la IP externa en un navegador web para verificar que la secuencia de comandos de inicio ha creado el sitio web. Puede que tengas que esperar unos 10 minutos a que termine la secuencia de comandos de inicio de muestra.
gcloud (PowerShell)
Transferir una secuencia de comandos de inicio de Windows directamente a una máquina virtual nueva
Transfiere el contenido de una secuencia de comandos de inicio directamente a una VM de Windows Server cuando la crees mediante el siguiente comando
gcloud compute instances create
:gcloud compute instances create VM_NAME ` --image-project=windows-cloud ` --image-family=windows-2019-core ` --metadata=windows-startup-script-ps1='Import-Module servermanager Install-WindowsFeature Web-Server -IncludeAllSubFeature "<html><body><p>Windows startup script added directly.</p></body></html>" > C:\inetpub\wwwroot\index.html'
Sustituye VM_NAME por el nombre de la VM.
Transferir una secuencia de comandos de inicio de Windows directamente a una VM que ya existeAñade la secuencia de comandos de inicio directamente a una VM que ya tengas con el siguiente
gcloud compute instances add-metadata
comando:gcloud compute instances add-metadata VM_NAME ` --image-project=windows-cloud ` --image-family=windows-2019-core ` --metadata=windows-startup-script-ps1='Import-Module servermanager Install-WindowsFeature Web-Server -IncludeAllSubFeature "<html><body><p>Windows startup script added directly.</p></body></html>" > C:\inetpub\wwwroot\index.html'
Sustituye VM_NAME por el nombre de la VM.
Verificar la secuencia de comandos de inicioUna vez que se haya iniciado la VM, consulta la IP externa en un navegador web para verificar que la secuencia de comandos de inicio ha creado el sitio web. Puede que tengas que esperar unos 10 minutos a que termine la secuencia de comandos de inicio de muestra.
REST
Transferir una secuencia de comandos de inicio de Windows directamente a una máquina virtual nueva
Transfiere el contenido de una secuencia de comandos de inicio directamente a una VM de Windows Server cuando la crees mediante el siguiente
instances.insert
método.POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances { ... "networkInterfaces": [ { "accessConfigs": [ { "type": "ONE_TO_ONE_NAT" } ] } ], "metadata": { "items": [ { "key": "windows-startup-script-ps1", "value": "Import-Module servermanager\nInstall-WindowsFeature Web-Server -IncludeAllSubFeature\necho '<html><body><p>Windows startup script added directly.</p></body></html>' > C:\\inetpub\\wwwroot\\index.html" } ] }, ... }
Haz los cambios siguientes:
PROJECT_ID: el ID del proyecto.
ZONE: la zona en la que se creará la VM.
Transferir una secuencia de comandos de inicio de Windows directamente a una VM que ya existe
Obtén el valor de
metadata.fingerprint
de la VM mediante el métodoinstances.get
:GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME
Haz los cambios siguientes:
PROJECT_ID: el ID del proyecto en el que se encuentra la VM.
ZONE: la zona de la VM.
VM_NAME: el nombre de la VM.
Transfiere la secuencia de comandos de inicio mediante el valor
fingerprint
, junto con la clave y el valor de metadatos de la secuencia de comandos de inicio, en una llamada al métodoinstances.setMetadata
:POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME/setMetadata { "fingerprint": FINGERPRINT, "items": [ { "key": "windows-startup-script-ps1", "value": "Import-Module servermanager\nInstall-WindowsFeature Web-Server -IncludeAllSubFeature\necho '<html><body><p>Windows startup script added directly.</p></body></html>' > C:\\inetpub\\wwwroot\\index.html" } ], ... }
Haz los cambios siguientes:
PROJECT_ID: el ID del proyecto en el que se encuentra la VM.
ZONE: la zona de la VM.
VM_NAME: el nombre de la VM.
FINGERPRINT: el valor
metadata.fingerprint
obtenido mediante el métodoinstances.get
.
Verificar la secuencia de comandos de inicio
Una vez que se haya iniciado la VM, consulta la IP externa en un navegador web para verificar que la secuencia de comandos de inicio ha creado el sitio web. Es posible que tengas que esperar unos 10 minutos para que finalice la secuencia de comandos de inicio de muestra.
Transferir una secuencia de comandos de inicio de Windows desde un archivo local
Puedes almacenar una secuencia de comandos de inicio en un archivo por lotes local, una secuencia de comandos de shell de comandos o una secuencia de comandos de PowerShell sin firmar en tu estación de trabajo y pasar el archivo local como metadatos a una VM cuando la crees. No puedes usar archivos almacenados en máquinas virtuales como secuencias de comandos de inicio.
Antes de transferir una secuencia de comandos de inicio de Windows de un archivo local a una máquina virtual, haz lo siguiente:
Crea un archivo local (
.ps1
) para almacenar la secuencia de comandos de inicio.Tenga en cuenta la ruta relativa de la interfaz de línea de comandos de gcloud a la secuencia de comandos de inicio.
Añade la siguiente secuencia de comandos de inicio al archivo:
# Installing IIS Import-Module servermanager Install-WindowsFeature Web-Server -IncludeAllSubFeature # Ensure the directory exists if (-not (Test-Path("C:\inetpub\wwwroot"))) {New-Item "C:\inetpub\wwwroot" -Type Directory} # Write the expanded string out to the file, overwriting the file if it already exists. "<html><body><p>Windows startup script passed from a file on your local workstation.</p></body></html>" | Out-File -FilePath C:\inetpub\wwwroot\index.html -Encoding ascii -Force
gcloud (Bash)
Transferir una secuencia de comandos de inicio de Windows de un archivo local a una máquina virtual nueva
Crea una VM y transfiere el contenido de un archivo local para usarlo como secuencia de comandos de inicio con el
gcloud compute instances create
comando con la marca--metadata-from-file
:gcloud compute instances create VM_NAME \ --image-project=windows-cloud \ --image-family=windows-2019-core \ --metadata-from-file=windows-startup-script-ps1=FILE_PATH
Haz los cambios siguientes:
- VM_NAME: el nombre de la VM
- FILE_PATH: la ruta relativa al archivo de secuencia de comandos de inicio
Para transferir una secuencia de comandos de inicio a una VM que ya existe desde un archivo local, usa el siguiente
gcloud compute instances add-metadata
comando:gcloud compute instances add-metadata VM_NAME \ --metadata-from-file=windows-startup-script-ps1=FILE_PATH
Haz los cambios siguientes:
- VM_NAME: el nombre de la VM
- FILE_PATH: la ruta relativa al archivo de secuencia de comandos de inicio
Consulta la IP externa en un navegador web para verificar que la secuencia de comandos de inicio ha creado el sitio web. Puede que tengas que esperar unos 10 minutos a que termine la secuencia de comandos de inicio de muestra.
gcloud (símbolo del sistema)
Transferir una secuencia de comandos de inicio de Windows de un archivo local a una máquina virtual nueva
Crea una VM y transfiere el contenido de un archivo local para usarlo como secuencia de comandos de inicio con el
gcloud compute instances create
comando con la marca--metadata-from-file
:gcloud compute instances create VM_NAME ^ --image-project=windows-cloud ^ --image-family=windows-2019-core ^ --metadata-from-file=windows-startup-script-ps1=FILE_PATH
Haz los cambios siguientes:
- VM_NAME: el nombre de la VM
- FILE_PATH: la ruta relativa al archivo de secuencia de comandos de inicio
Para transferir una secuencia de comandos de inicio a una VM que ya existe desde un archivo local, usa el siguiente
gcloud compute instances add-metadata
comando:gcloud compute instances add-metadata VM_NAME ^ --metadata-from-file=windows-startup-script-ps1=FILE_PATH
Haz los cambios siguientes:
- VM_NAME: el nombre de la VM
- FILE_PATH: la ruta relativa al archivo de secuencia de comandos de inicio
Consulta la IP externa en un navegador web para verificar que la secuencia de comandos de inicio ha creado el sitio web. Puede que tengas que esperar unos 10 minutos a que termine la secuencia de comandos de inicio de muestra.
gcloud (PowerShell)
Transferir una secuencia de comandos de inicio de Windows de un archivo local a una máquina virtual nueva
Crea una VM y transfiere el contenido de un archivo local para usarlo como secuencia de comandos de inicio con el
gcloud compute instances create
comando con la marca--metadata-from-file
:gcloud compute instances create VM_NAME ` --image-project=windows-cloud ` --image-family=windows-2019-core ` --metadata-from-file=windows-startup-script-ps1=FILE_PATH
Haz los cambios siguientes:
- VM_NAME: el nombre de la VM
- FILE_PATH: la ruta relativa al archivo de secuencia de comandos de inicio
Para transferir una secuencia de comandos de inicio a una VM que ya existe desde un archivo local, usa el siguiente
gcloud compute instances add-metadata
comando:gcloud compute instances add-metadata VM_NAME ` --metadata-from-file=windows-startup-script-ps1=FILE_PATH
Haz los cambios siguientes:
- VM_NAME: el nombre de la VM
- FILE_PATH: la ruta relativa al archivo de secuencia de comandos de inicio
Consulta la IP externa en un navegador web para verificar que la secuencia de comandos de inicio ha creado el sitio web. Puede que tengas que esperar unos 10 minutos a que termine la secuencia de comandos de inicio de muestra.
Transferir una secuencia de comandos de inicio de Windows desde Cloud Storage
Puedes almacenar una secuencia de comandos de inicio como un archivo por lotes, una secuencia de comandos de shell de comandos, una secuencia de comandos de PowerShell firmada o sin firmar, o un archivo ejecutable en Cloud Storage y pasárselo a una VM cuando la crees. Después de añadir una secuencia de comandos de inicio a Cloud Storage, tendrás una URL que podrás usar para hacer referencia a la secuencia de comandos de inicio al crear una VM.
Antes de añadir una secuencia de comandos de inicio desde un segmento de Cloud Storage, haz lo siguiente:
Crea un archivo para almacenar la secuencia de comandos de inicio. En este ejemplo se usa un archivo de PowerShell (
.ps1
).Añade la siguiente secuencia de comandos de PowerShell al archivo, que instala un servidor web y crea una página web sencilla:
# Installing IIS Import-Module servermanager Install-WindowsFeature Web-Server -IncludeAllSubFeature # Ensure the directory exists if (-not (Test-Path("C:\inetpub\wwwroot"))) {New-Item "C:\inetpub\wwwroot" -Type Directory} # Write the expanded string out to the file, overwriting the file if it already exists. "<html><body><p>Windows startup script passed from Cloud Storage.</p></body></html>" | Out-File -FilePath C:\inetpub\wwwroot\index.html -Encoding ascii -Force
Implicaciones para la seguridad
De forma predeterminada, los propietarios y editores de proyectos pueden acceder a los archivos de Cloud Storage del mismo proyecto, a menos que haya controles de acceso explícitos que lo impidan.
Si el segmento u objeto de Cloud Storage es menos seguro que los metadatos, existe el riesgo de que se produzca una elevación de privilegios si se modifica la secuencia de comandos de inicio y se reinicia la VM. Esto se debe a que, después de reiniciar la VM, la secuencia de comandos de inicio se ejecuta como
LocalSystem
y, a continuación, puede usar los permisos de la cuenta de servicio adjunta para acceder a otros recursos.
Consola
Transferir un script de inicio almacenado en Cloud Storage a una máquina virtual nueva
En la Google Cloud consola, ve a la página Crear una instancia.
En Disco de arranque, selecciona Cambiar y haz lo siguiente:
- En la pestaña Imágenes públicas, elige un sistema operativo Windows Server.
- Haz clic en Seleccionar.
En la sección Identidad y acceso a la API, selecciona una cuenta de servicio que tenga el rol Lector de objetos de Storage.
Despliega la sección Opciones avanzadas y sigue estos pasos:
- Despliega la sección Gestión.
En la sección Metadatos, añade valores para lo siguiente:
Clave: la clave de metadatos. Especifica la
windows-startup-script-url
clave de metadatos para que la secuencia de comandos se ejecute durante cada arranque después del arranque inicial.Valor: el valor de los metadatos. Define la ubicación de Cloud Storage del archivo de secuencia de comandos de inicio con uno de los siguientes formatos:
- URL autenticada:
https://storage.googleapis.com/BUCKET/FILE
- URI de gcloud storage:
gs://BUCKET/FILE
Haz los cambios siguientes:
- BUCKET: el nombre del segmento que contiene el archivo de secuencia de comandos de inicio
- FILE: el nombre del archivo de secuencia de comandos de inicio
- URL autenticada:
Para crear la VM, haz clic en Crear.
Transferir una secuencia de comandos de inicio almacenada en Cloud Storage a una VM que ya existe
En la consola de Google Cloud , ve a la página Instancias de VM.
Haz clic en el nombre de la VM.
Haz clic en Editar.
En Metadatos, añade los siguientes valores:
- URL autenticada:
https://storage.googleapis.com/BUCKET/FILE
- URI de gcloud storage:
gs://BUCKET/FILE
- URL autenticada:
Verificar la secuencia de comandos de inicio
Consulta la IP externa en un navegador web para verificar que la secuencia de comandos de inicio ha creado el sitio web. Es posible que tengas que esperar unos 10 minutos a que termine la secuencia de comandos de inicio de muestra.
gcloud (Bash)
Transferir un script de inicio almacenado en Cloud Storage a una VM nueva
Para pasar una secuencia de comandos de inicio almacenada en Cloud Storage a una VM de Windows Server, usa el siguiente
gcloud compute instances create
comando. Para el valor de la marca--scopes
, usastorage-ro
para que la VM pueda acceder a Cloud Storage.gcloud compute instances create VM_NAME \ --image-project=windows-cloud \ --image-family=windows-2019-core \ --scopes=storage-ro \ --metadata=windows-startup-script-url=CLOUD_STORAGE_URL
Haz los cambios siguientes:
- VM_NAME: el nombre de la VM.
-
CLOUD_STORAGE_URL: los valores de los metadatos. Define la ubicación del archivo de secuencia de comandos de inicio con uno de los siguientes formatos:
-
URL autenticada:
https://storage.googleapis.com/BUCKET/FILE
-
URI de gcloud storage:
gs://BUCKET/FILE
-
URL autenticada:
Para pasar una secuencia de comandos de inicio almacenada en Cloud Storage a una máquina virtual que ya tengas, usa el siguiente
gcloud compute instances add-metadata
comando:gcloud compute instances add-metadata VM_NAME \ --metadata=windows-startup-script-url=CLOUD_STORAGE_URL
Haz los cambios siguientes:
- VM_NAME: el nombre de la VM.
-
CLOUD_STORAGE_URL: los valores de los metadatos. Define la ubicación del archivo de secuencia de comandos de inicio con uno de los siguientes formatos:
-
URL autenticada:
https://storage.googleapis.com/BUCKET/FILE
-
URI de gcloud storage:
gs://BUCKET/FILE
-
URL autenticada:
Consulta la IP externa en un navegador web para verificar que la secuencia de comandos de inicio ha creado el sitio web. Es posible que tengas que esperar unos 10 minutos a que termine la secuencia de comandos de inicio de muestra.
gcloud (símbolo del sistema)
Transferir un script de inicio almacenado en Cloud Storage a una VM nueva
Para pasar una secuencia de comandos de inicio almacenada en Cloud Storage a una VM de Windows Server, usa el siguiente
gcloud compute instances create
comando. Para el valor de la marca--scopes
, usastorage-ro
para que la VM pueda acceder a Cloud Storage.gcloud compute instances create VM_NAME ^ --image-project=windows-cloud ^ --image-family=windows-2019-core ^ --scopes=storage-ro ^ --metadata=windows-startup-script-url=CLOUD_STORAGE_URL
Haz los cambios siguientes:
- VM_NAME: el nombre de la VM.
-
CLOUD_STORAGE_URL: los valores de los metadatos. Define la ubicación del archivo de secuencia de comandos de inicio con uno de los siguientes formatos:
-
URL autenticada:
https://storage.googleapis.com/BUCKET/FILE
-
URI de gcloud storage:
gs://BUCKET/FILE
-
URL autenticada:
Para pasar una secuencia de comandos de inicio almacenada en Cloud Storage a una máquina virtual que ya tengas, usa el siguiente
gcloud compute instances add-metadata
comando:gcloud compute instances add-metadata VM_NAME ^ --metadata=windows-startup-script-url=CLOUD_STORAGE_URL
Haz los cambios siguientes:
- VM_NAME: el nombre de la VM.
-
CLOUD_STORAGE_URL: los valores de los metadatos. Define la ubicación del archivo de secuencia de comandos de inicio con uno de los siguientes formatos:
-
URL autenticada:
https://storage.googleapis.com/BUCKET/FILE
-
URI de gcloud storage:
gs://BUCKET/FILE
-
URL autenticada:
Consulta la IP externa en un navegador web para verificar que la secuencia de comandos de inicio ha creado el sitio web. Es posible que tengas que esperar unos 10 minutos a que termine la secuencia de comandos de inicio de muestra.
gcloud (PowerShell)
Transferir un script de inicio almacenado en Cloud Storage a una VM nueva
Para pasar una secuencia de comandos de inicio almacenada en Cloud Storage a una VM de Windows Server, usa el siguiente
gcloud compute instances create
comando. Para el valor de la marca--scopes
, usastorage-ro
para que la VM pueda acceder a Cloud Storage.gcloud compute instances create VM_NAME ` --image-project=windows-cloud ` --image-family=windows-2019-core ` --scopes=storage-ro ` --metadata=windows-startup-script-url=CLOUD_STORAGE_URL
Haz los cambios siguientes:
- VM_NAME: el nombre de la VM.
-
CLOUD_STORAGE_URL: los valores de los metadatos. Define la ubicación del archivo de secuencia de comandos de inicio con uno de los siguientes formatos:
-
URL autenticada:
https://storage.googleapis.com/BUCKET/FILE
-
URI de gcloud storage:
gs://BUCKET/FILE
-
URL autenticada:
Para pasar una secuencia de comandos de inicio almacenada en Cloud Storage a una máquina virtual que ya tengas, usa el siguiente
gcloud compute instances add-metadata
comando:gcloud compute instances add-metadata VM_NAME ` --metadata=windows-startup-script-url=CLOUD_STORAGE_URL
Haz los cambios siguientes:
- VM_NAME: el nombre de la VM.
-
CLOUD_STORAGE_URL: los valores de los metadatos. Define la ubicación del archivo de secuencia de comandos de inicio con uno de los siguientes formatos:
-
URL autenticada:
https://storage.googleapis.com/BUCKET/FILE
-
URI de gcloud storage:
gs://BUCKET/FILE
-
URL autenticada:
Consulta la IP externa en un navegador web para verificar que la secuencia de comandos de inicio ha creado el sitio web. Es posible que tengas que esperar unos 10 minutos a que termine la secuencia de comandos de inicio de muestra.
REST
Transferir un script de inicio almacenado en Cloud Storage a una máquina virtual nueva
Para pasar una secuencia de comandos de inicio almacenada en Cloud Storage a una VM de Windows Server, usa el siguiente
instances.insert
método. En el camposcopes
, añadehttps://www.googleapis.com/auth/devstorage.read_only
para que la VM pueda acceder a Cloud Storage.POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances { ... "networkInterfaces": [ { "accessConfigs": [ { "type": "ONE_TO_ONE_NAT" } ] } ], "serviceAccounts": [ { "email": "default", "scopes": [ "https://www.googleapis.com/auth/devstorage.read_only" ] } ], "metadata": { "items": [ { "key": "windows-startup-script-url", "value": "CLOUD_STORAGE_URL" }, ... ] }, ... }
Haz los cambios siguientes:
PROJECT_ID: el ID del proyecto.
ZONE: la zona en la que se creará la VM.
CLOUD_STORAGE_URL: el valor de los metadatos. Define la ubicación del archivo de la secuencia de comandos de inicio en Cloud Storage con uno de los siguientes formatos:
- URL autenticada:
https://storage.googleapis.com/BUCKET/FILE
- URI de gcloud storage:
gs://BUCKET/FILE
- URL autenticada:
Transferir una secuencia de comandos de inicio almacenada en Cloud Storage a una VM que ya existe
Obtén el valor de
metadata.fingerprint
de la VM mediante el métodoinstances.get
:GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME
Haz los cambios siguientes:
PROJECT_ID: el ID del proyecto en el que se encuentra la VM.
ZONE: la zona de la VM.
VM_NAME: el nombre de la VM
Transfiere la secuencia de comandos de inicio mediante el valor
fingerprint
, junto con la clave y el valor de metadatos de la secuencia de comandos de inicio, en una llamada al métodoinstances.setMetadata
:POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME/setMetadata { "fingerprint": FINGERPRINT, "items": [ { "key": "windows-startup-script-url", "value": "CLOUD_STORAGE_URL" } ], ... }
Haz los cambios siguientes:
PROJECT_ID: el ID del proyecto en el que se encuentra la VM.
ZONE: la zona de la VM.
VM_NAME: el nombre de la VM.
FINGERPRINT: el valor
metadata.fingerprint
obtenido mediante el métodoinstances.get
.CLOUD_STORAGE_URL: el valor de los metadatos. Define la ubicación del archivo de la secuencia de comandos de inicio en Cloud Storage con uno de los siguientes formatos:
- URL autenticada:
https://storage.googleapis.com/BUCKET/FILE
- URI de gcloud storage:
gs://BUCKET/FILE
- URL autenticada:
Verificar la secuencia de comandos de inicio
Consulta la IP externa en un navegador web para verificar que la secuencia de comandos de inicio ha creado el sitio web. Es posible que tengas que esperar unos 10 minutos a que termine la secuencia de comandos de inicio de muestra.
Acceder a metadatos desde una secuencia de comandos de inicio de Windows
En una secuencia de comandos de inicio, puedes acceder a los valores de los metadatos. Por ejemplo, puedes usar el mismo script para varias máquinas virtuales y parametrizar cada script individualmente transfiriendo diferentes valores de metadatos a cada máquina virtual.
Para acceder a un valor de metadatos personalizado desde una secuencia de comandos de inicio, haz lo siguiente:
Crea una secuencia de comandos de inicio que consulte el valor de una clave de metadatos. Por ejemplo, la siguiente secuencia de comandos de inicio de PowerShell (
.ps1
) consulta el valor de la clave de metadatosfoo
.$METADATA_VALUE = (Invoke-RestMethod -Headers @{'Metadata-Flavor' = 'Google'} -Uri "http://metadata.google.internal/computeMetadata/v1/instance/attributes/foo") # Installing IIS Import-Module servermanager Install-WindowsFeature Web-Server -IncludeAllSubFeature # Ensure the directory exists if (-not (Test-Path("C:\inetpub\wwwroot"))) {New-Item "C:\inetpub\wwwroot" -Type Directory} # Write the expanded string out to the file, overwriting the file if it already exists. "<html><body><p>Accessing metadata value of foo: $METADATA_VALUE</p></body></html>" | Out-File -FilePath C:\inetpub\wwwroot\index.html -Encoding ascii -Force
Define el valor de la clave de metadatos
foo
al crear una VM con el siguientegcloud compute instances create
comando. En este ejemplo, la secuencia de comandos de inicio se transfiere a la VM desde un archivo local.gcloud
gcloud compute instances create VM_NAME \ --image-project=windows-cloud \ --image-family=windows-2019 \ --metadata-from-file=windows-startup-script-ps1=FILE_PATH \ --metadata=foo=bar
Haz los cambios siguientes:
VM_NAME: el nombre de la VM
FILE_PATH: la ruta relativa al archivo de secuencia de comandos de inicio
Para obtener más información sobre cómo especificar un par clave-valor de metadatos, consulta Definir y quitar metadatos personalizados.
Consulta la IP externa en un navegador web para verificar que la secuencia de comandos de inicio muestra el valor de
foo
. Es posible que tengas que esperar unos 10 minutos a que termine la secuencia de comandos de inicio de muestra.
Volver a ejecutar una secuencia de comandos de inicio de Windows
Para volver a ejecutar una secuencia de comandos de inicio en una VM de Windows, haz lo siguiente:
Ejecuta el siguiente comando:
C:\Program Files\Google\Compute Engine\metadata_scripts\run_startup_scripts.cmd
Ver la salida de una secuencia de comandos de inicio de Windows
Para ver la salida de una secuencia de comandos de inicio de Windows Server, puede usar cualquiera de las siguientes opciones y buscar eventos
GCEMetadataScripts
:Puerto serie 1 en la Google Cloud consola. Para obtener más información, consulta Ver salidas de puertos serie.
Registro de aplicación del Visor de eventos de Windows.
IAP Desktop desde una estación de trabajo Windows. Para obtener más información, consulta el repositorio GoogleCloudPlatform/iap-desktop en GitHub.
Siguientes pasos
Consulta cómo usar secuencias de comandos de inicio en máquinas virtuales de Linux.
Consulta cómo añadir una secuencia de comandos de apagado.
A menos que se indique lo contrario, el contenido de esta página está sujeto a la licencia Reconocimiento 4.0 de Creative Commons y las muestras de código están sujetas a la licencia Apache 2.0. Para obtener más información, consulta las políticas del sitio web de Google Developers. Java es una marca registrada de Oracle o sus afiliados.
Última actualización: 2025-09-12 (UTC).
-