Un script de inicio es un archivo que realiza tareas durante el proceso de inicio de una instancia de máquina virtual (VM). Los scripts de inicio se pueden aplicar a todas las máquinas virtuales de un proyecto o a una sola máquina virtual. Los scripts de inicio especificados por metadatos a nivel de VM anulan los scripts de inicio especificados por metadatos a nivel de proyecto, y los scripts de inicio solo se ejecutan cuando hay una red disponible. Este documento describe cómo utilizar scripts de inicio en instancias de VM de Windows Server. Para obtener información sobre cómo agregar una secuencia de comandos de inicio a nivel de proyecto, consulta gcloud compute project-info add-metadata
.
Los scripts de inicio de Windows deben ser comandos de shell ( .cmd
), PowerShell ( .ps1
) o scripts de archivos por lotes ( .bat
) y deben tener la extensión de archivo adecuada.
Si especifica una secuencia de comandos de inicio mediante uno de los procedimientos de este documento, Compute Engine hace lo siguiente:
Copia el script de inicio a la VM
El Programador de tareas ejecuta el script de inicio como la cuenta
LocalSystem
cuando arranca la VM
Para obtener información sobre las diversas tareas relacionadas con los scripts de inicio y cuándo realizar cada una, consulte el documento de descripción general de los scripts de inicio .
Antes de comenzar
- Lea la descripción general de los scripts de inicio .
- Lea acerca de los conceptos básicos de los metadatos de VM .
- Si aún no lo has hecho, configura la autenticación. La autenticación es el proceso mediante el cual se verifica su identidad para acceder a Google Cloud servicios y API. Para ejecutar código o muestras 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
-
After installing the Google Cloud CLI, initialize it by running the following command:
gcloud init
If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.
- Set a default region and zone.
En la consola de Google Cloud, vaya a la página Crear una instancia .
Para Disco de arranque , seleccione Cambiar y haga lo siguiente:
- En la pestaña Imágenes públicas , elija un sistema operativo Windows Server.
- Haga clic en Seleccionar .
Expanda la sección Opciones avanzadas y haga lo siguiente:
- Expanda la sección Gestión .
En la sección Metadatos , haga clic en Agregar elemento para configurar la clave y el valor :
Clave : configurada en
windows-startup-script-ps1
.Los scripts de inicio pasados a la VM mediante claves de metadatos que comienzan con
windows-startup-script
se ejecutan en cada inicio después del inicio inicial de la VM.Valor : agregue el siguiente script:
# 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
Haga clic en Crear .
En la consola de Google Cloud, vaya a la página de instancias de VM .
Haga clic en el nombre de la máquina virtual.
Haga clic en Editar .
En Metadatos , especifique lo siguiente:
-
key
:windows-startup-script-ps1
-
value
: el contenido del script de inicio
-
PROJECT_ID : el ID del proyecto
ZONE : la zona para crear la nueva VM en
Obtenga el valor
tags.fingerprint
de la VM mediante el métodoinstances.get
.GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME
Reemplace lo siguiente:
PROJECT_ID : el ID del proyecto
ZONE : la zona de la VM
VM_NAME : la zona de la VM
Pase el script de inicio utilizando el valor
fingerprint
, junto con la clave de metadatos y el valor del script 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" } ], ... }
Reemplace lo siguiente:
PROJECT_ID : el ID del proyecto
ZONE : la zona de la VM
VM_NAME : la zona de la VM
FINGERPRINT : el valor
tags.fingerprint
obtenido utilizando el métodoinstances.get
Cree un archivo local (
.ps1
) para almacenar el script de inicio.Tenga en cuenta la ruta relativa desde la CLI de gcloud al script de inicio.
Agregue el siguiente script 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
- VM_NAME : el nombre de la VM
- FILE_PATH : la ruta relativa al archivo de script de inicio
- VM_NAME : el nombre de la VM
- FILE_PATH : la ruta relativa al archivo de script de inicio
- VM_NAME : el nombre de la VM
- FILE_PATH : la ruta relativa al archivo de script de inicio
- VM_NAME : el nombre de la VM
- FILE_PATH : la ruta relativa al archivo de script de inicio
- VM_NAME : el nombre de la VM
- FILE_PATH : la ruta relativa al archivo de script de inicio
- VM_NAME : el nombre de la VM
- FILE_PATH : la ruta relativa al archivo de script de inicio
Cree un archivo para almacenar el script de inicio. Este ejemplo utiliza un archivo PowerShell (
.ps1
).Agregue el siguiente script de PowerShell al archivo, que instala un servidor web y crea una página web simple:
# 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
De forma predeterminada, los propietarios y editores de proyectos pueden acceder a los archivos de Cloud Storage en el mismo proyecto, a menos que existan controles de acceso explícitos que no lo permitan.
Si el depósito u objeto de Cloud Storage es menos seguro que los metadatos, existe el riesgo de una escalada de privilegios si se modifica el script de inicio y se reinicia la VM. Esto se debe a que después de que la máquina virtual se reinicia, el script de inicio se ejecuta como
LocalSystem
y luego puede usar los permisos de la cuenta de servicio adjunta para acceder a otros recursos.En la consola de Google Cloud, vaya a la página Crear una instancia .
Para Disco de arranque , seleccione Cambiar y haga lo siguiente:
- En la pestaña Imágenes públicas , elija un sistema operativo Windows Server.
- Haga clic en Seleccionar .
En la sección Identidad y acceso a API , seleccione una cuenta de servicio que tenga la función Visor de objetos de almacenamiento .
Expanda la sección Opciones avanzadas y luego haga lo siguiente:
- Expanda la sección Gestión .
En la sección Metadatos , agregue valores para lo siguiente:
Clave : la clave de metadatos. Especifique la clave de metadatos
windows-startup-script-url
para que el script se ejecute durante cada inicio después del inicio inicial.Valor : el valor de los metadatos. Establezca la ubicación de Cloud Storage del archivo de script de inicio usando uno de los siguientes formatos:
- URL autenticada
https://storage.googleapis.com/ BUCKET / FILE
- URI de almacenamiento de gcloud :
gs:// BUCKET / FILE
Reemplace lo siguiente:
- BUCKET : el nombre del depósito que contiene el archivo de secuencia de comandos de inicio
- FILE : el nombre del archivo de script de inicio
- URL autenticada
Para crear la VM, haga clic en Crear .
En la consola de Google Cloud, vaya a la página de instancias de VM .
Haga clic en el nombre de la máquina virtual.
Haga clic en Editar .
En Metadatos , agregue los siguientes valores:
- URL autenticada
https://storage.googleapis.com/ BUCKET / FILE
- URI de almacenamiento de gcloud :
gs:// BUCKET / FILE
- URL autenticada
- VM_NAME : el nombre de la VM.
- CLOUD_STORAGE_URL : los valores de metadatos. Establezca la ubicación del archivo de secuencia de comandos de inicio utilizando uno de los siguientes formatos:
- URL autenticada
https://storage.googleapis.com/ BUCKET / FILE
- URI de almacenamiento de gcloud :
gs:// BUCKET / FILE
- URL autenticada
- VM_NAME : el nombre de la VM.
- CLOUD_STORAGE_URL : los valores de metadatos. Establezca la ubicación del archivo de secuencia de comandos de inicio utilizando uno de los siguientes formatos:
- URL autenticada
https://storage.googleapis.com/ BUCKET / FILE
- URI de almacenamiento de gcloud :
gs:// BUCKET / FILE
- URL autenticada
- VM_NAME : el nombre de la VM.
- CLOUD_STORAGE_URL : los valores de metadatos. Establezca la ubicación del archivo de secuencia de comandos de inicio utilizando uno de los siguientes formatos:
- URL autenticada
https://storage.googleapis.com/ BUCKET / FILE
- URI de almacenamiento de gcloud :
gs:// BUCKET / FILE
- URL autenticada
- VM_NAME : el nombre de la VM.
- CLOUD_STORAGE_URL : los valores de metadatos. Establezca la ubicación del archivo de secuencia de comandos de inicio utilizando uno de los siguientes formatos:
- URL autenticada
https://storage.googleapis.com/ BUCKET / FILE
- URI de almacenamiento de gcloud :
gs:// BUCKET / FILE
- URL autenticada
- VM_NAME : el nombre de la VM.
- CLOUD_STORAGE_URL : los valores de metadatos. Establezca la ubicación del archivo de secuencia de comandos de inicio utilizando uno de los siguientes formatos:
- URL autenticada
https://storage.googleapis.com/ BUCKET / FILE
- URI de almacenamiento de gcloud :
gs:// BUCKET / FILE
- URL autenticada
- VM_NAME : el nombre de la VM.
- CLOUD_STORAGE_URL : los valores de metadatos. Establezca la ubicación del archivo de secuencia de comandos de inicio utilizando uno de los siguientes formatos:
- URL autenticada
https://storage.googleapis.com/ BUCKET / FILE
- URI de almacenamiento de gcloud :
gs:// BUCKET / FILE
- URL autenticada
PROJECT_ID : el ID del proyecto.
ZONE : la zona para crear la nueva VM.
CLOUD_STORAGE_URL : el valor de metadatos. Establezca la ubicación de Cloud Storage del archivo de script de inicio usando uno de los siguientes formatos:
- URL autenticada
https://storage.googleapis.com/ BUCKET / FILE
- URI de almacenamiento de gcloud :
gs:// BUCKET / FILE
- URL autenticada
Obtenga el valor
tags.fingerprint
de la VM mediante el métodoinstances.get
.GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME
Reemplace lo siguiente:
PROJECT_ID : el ID del proyecto
ZONE : la zona de la VM
VM_NAME : la zona de la VM
Pase el script de inicio utilizando el valor
fingerprint
, junto con la clave de metadatos y el valor del script 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" } ], ... }
Reemplace lo siguiente:
PROJECT_ID : el ID del proyecto.
ZONE : la zona de la VM.
VM_NAME : la zona de la VM.
FINGERPRINT : el valor
tags.fingerprint
obtenido utilizando el métodoinstances.get
.CLOUD_STORAGE_URL : el valor de metadatos. Establezca la ubicación de Cloud Storage del archivo de script de inicio usando uno de los siguientes formatos:
- URL autenticada
https://storage.googleapis.com/ BUCKET / FILE
- URI de almacenamiento de gcloud :
gs:// BUCKET / FILE
- URL autenticada
Cree un script de inicio que consulte el valor de una clave de metadatos. Por ejemplo, el siguiente script 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
Establece el valor de la clave de metadatos
foo
al crear una máquina virtual mediante el siguiente comandogcloud compute instances create
. Para este ejemplo, el script de inicio se pasa a la VM desde un archivo local.nube de 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
Reemplace lo siguiente:
VM_NAME : el nombre de la VM
FILE_PATH : la ruta relativa al archivo de script de inicio
Para obtener más información sobre cómo especificar un par clave-valor de metadatos, consulte Establecer y eliminar metadatos personalizados .
Vea la IP externa en un navegador web para verificar que el script de inicio genere el valor de
foo
. Es posible que deba esperar unos 10 minutos para que finalice el script de inicio de muestra.Ejecutando el siguiente comando:
C:\Program Files\Google\Compute Engine\metadata_scripts\run_startup_scripts.cmd
Puerto serie 1 en la consola de Google Cloud. Para obtener más información, consulte Visualización de la salida del puerto serie .
Registro de aplicaciones del Visor de eventos de Windows.
Escritorio IAP desde una estación de trabajo Windows. Para obtener más información, consulte el repositorio GoogleCloudPlatform/iap-desktop en GitHub.
Aprenda a utilizar scripts de inicio en máquinas virtuales Linux .
Aprenda cómo agregar un script de apagado .
Obtenga más información sobre los metadatos de VM .
Aprenda a ejecutar scripts de inicio en máquinas virtuales Windows y unirse a un dominio administrado de Microsoft AD .
Copia el script de inicio a la VM
El Programador de tareas ejecuta el script de inicio como la cuenta
LocalSystem
cuando arranca la VM- Lea la descripción general de los scripts de inicio .
- Lea acerca de los conceptos básicos de los metadatos de VM .
- Si aún no lo has hecho, configura la autenticación. La autenticación es el proceso mediante el cual se verifica su identidad para acceder a Google Cloud servicios y API. Para ejecutar código o muestras 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
-
After installing the Google Cloud CLI, initialize it by running the following command:
gcloud init
If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.
- Set a default region and zone.
En la consola de Google Cloud, vaya a la página Crear una instancia .
Para Disco de arranque , seleccione Cambiar y haga lo siguiente:
- En la pestaña Imágenes públicas , elija un sistema operativo Windows Server.
- Haga clic en Seleccionar .
Expanda la sección Opciones avanzadas y haga lo siguiente:
- Expanda la sección Gestión .
En la sección Metadatos , haga clic en Agregar elemento para configurar la clave y el valor :
Clave : configurada en
windows-startup-script-ps1
.Los scripts de inicio pasados a la VM mediante claves de metadatos que comienzan con
windows-startup-script
se ejecutan en cada inicio después del inicio inicial de la VM.Valor : agregue el siguiente script:
# 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
Haga clic en Crear .
En la consola de Google Cloud, vaya a la página de instancias de VM .
Haga clic en el nombre de la máquina virtual.
Haga clic en Editar .
En Metadatos , especifique lo siguiente:
-
key
:windows-startup-script-ps1
-
value
: el contenido del script de inicio
-
PROJECT_ID : el ID del proyecto
ZONE : la zona para crear la nueva VM en
Obtenga el valor
tags.fingerprint
de la VM mediante el métodoinstances.get
.GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME
Reemplace lo siguiente:
PROJECT_ID : el ID del proyecto
ZONE : la zona de la VM
VM_NAME : la zona de la VM
Pase el script de inicio utilizando el valor
fingerprint
, junto con la clave de metadatos y el valor del script 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" } ], ... }
Reemplace lo siguiente:
PROJECT_ID : el ID del proyecto
ZONE : la zona de la VM
VM_NAME : la zona de la VM
FINGERPRINT : el valor
tags.fingerprint
obtenido utilizando el métodoinstances.get
Cree un archivo local (
.ps1
) para almacenar el script de inicio.Tenga en cuenta la ruta relativa desde la CLI de gcloud al script de inicio.
Agregue el siguiente script 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
- VM_NAME : el nombre de la VM
- FILE_PATH : la ruta relativa al archivo de script de inicio
- VM_NAME : el nombre de la VM
- FILE_PATH : la ruta relativa al archivo de script de inicio
- VM_NAME : el nombre de la VM
- FILE_PATH : la ruta relativa al archivo de script de inicio
- VM_NAME : el nombre de la VM
- FILE_PATH : la ruta relativa al archivo de script de inicio
- VM_NAME : el nombre de la VM
- FILE_PATH : la ruta relativa al archivo de script de inicio
- VM_NAME : el nombre de la VM
- FILE_PATH : la ruta relativa al archivo de script de inicio
Cree un archivo para almacenar el script de inicio. Este ejemplo utiliza un archivo PowerShell (
.ps1
).Agregue el siguiente script PowerShell al archivo, que instala un servidor web y crea una página web simple:
# 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
Por defecto, los propietarios de proyectos y editores de proyectos pueden acceder a archivos de almacenamiento en la nube en el mismo proyecto, a menos que haya controles de acceso explícitos que lo no permitan.
Si el cubo u objeto de almacenamiento en la nube es menos seguro que los metadatos, existe un riesgo de escalada de privilegios si el script de inicio se modifica y la VM se reinicia. Esto se debe a que después de reiniciar la VM, el script de inicio se ejecuta como
LocalSystem
y luego puede usar los permisos de la cuenta de servicio adjunta para acceder a otros recursos.En la consola de Google Cloud, vaya a la página Crear una instancia .
Para el disco de arranque , seleccione Cambiar y haga lo siguiente:
- En la pestaña Imágenes públicas , elija un sistema operativo Windows Server.
- Haga clic en Seleccionar .
En la sección Identity and API Access , seleccione una cuenta de servicio que tenga el rol de visor de objetos de almacenamiento .
Expanda la sección Opciones avanzadas y luego haga lo siguiente:
- Expanda la sección Gestión .
En la sección de metadatos , agregue valores para lo siguiente:
Clave : la tecla de metadatos. Especifique la tecla de metadatos
windows-startup-script-url
para que el script se ejecute durante cada arranque después del arranque inicial.Valor : el valor de metadatos. Establezca en la ubicación de almacenamiento en la nube del archivo de script de inicio utilizando uno de los siguientes formatos:
- URL autenticada :
https://storage.googleapis.com/ BUCKET / FILE
- URI de almacenamiento de gcLoud :
gs:// BUCKET / FILE
Reemplace lo siguiente:
- BUCKET : el nombre del cubo que contiene el archivo de script de inicio
- FILE : el nombre del archivo de script de inicio
- URL autenticada :
Para crear la VM, haga clic en Crear .
En la consola de Google Cloud, vaya a la página de instancias de VM .
Haga clic en el nombre de la VM.
Haga clic en Editar .
En metadatos , agregue los siguientes valores:
- URL autenticada :
https://storage.googleapis.com/ BUCKET / FILE
- URI de almacenamiento de gcLoud :
gs:// BUCKET / FILE
- URL autenticada :
- VM_NAME : el nombre de la VM.
- CLOUD_STORAGE_URL : los valores de metadatos. Establecer en la ubicación del archivo de script de inicio utilizando uno de los siguientes formatos:
- URL autenticada :
https://storage.googleapis.com/ BUCKET / FILE
- URI de almacenamiento de gcLoud :
gs:// BUCKET / FILE
- URL autenticada :
- VM_NAME : el nombre de la VM.
- CLOUD_STORAGE_URL : los valores de metadatos. Establecer en la ubicación del archivo de script de inicio utilizando uno de los siguientes formatos:
- URL autenticada :
https://storage.googleapis.com/ BUCKET / FILE
- URI de almacenamiento de gcLoud :
gs:// BUCKET / FILE
- URL autenticada :
- VM_NAME : el nombre de la VM.
- CLOUD_STORAGE_URL : los valores de metadatos. Establecer en la ubicación del archivo de script de inicio utilizando uno de los siguientes formatos:
- URL autenticada :
https://storage.googleapis.com/ BUCKET / FILE
- URI de almacenamiento de gcLoud :
gs:// BUCKET / FILE
- URL autenticada :
- VM_NAME : el nombre de la VM.
- CLOUD_STORAGE_URL : los valores de metadatos. Establecer en la ubicación del archivo de script de inicio utilizando uno de los siguientes formatos:
- URL autenticada :
https://storage.googleapis.com/ BUCKET / FILE
- URI de almacenamiento de gcLoud :
gs:// BUCKET / FILE
- URL autenticada :
- VM_NAME : el nombre de la VM.
- CLOUD_STORAGE_URL : los valores de metadatos. Establecer en la ubicación del archivo de script de inicio utilizando uno de los siguientes formatos:
- URL autenticada :
https://storage.googleapis.com/ BUCKET / FILE
- URI de almacenamiento de gcLoud :
gs:// BUCKET / FILE
- URL autenticada :
- VM_NAME : el nombre de la VM.
- CLOUD_STORAGE_URL : los valores de metadatos. Establecer en la ubicación del archivo de script de inicio utilizando uno de los siguientes formatos:
- URL autenticada :
https://storage.googleapis.com/ BUCKET / FILE
- URI de almacenamiento de gcLoud :
gs:// BUCKET / FILE
- URL autenticada :
PROJECT_ID : el ID del proyecto.
ZONE : la zona para crear la nueva VM en.
CLOUD_STORAGE_URL : el valor de metadatos. Establezca en la ubicación de almacenamiento en la nube del archivo de script de inicio utilizando uno de los siguientes formatos:
- URL autenticada :
https://storage.googleapis.com/ BUCKET / FILE
- URI de almacenamiento de gcLoud :
gs:// BUCKET / FILE
- URL autenticada :
Obtenga las
tags.fingerprint
Value de la VM utilizando el métodoinstances.get
.GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME
Reemplace lo siguiente:
PROJECT_ID : el ID del proyecto
ZONE : la zona de la VM
VM_NAME : la zona de la VM
Pase el script de inicio utilizando el valor
fingerprint
, junto con la tecla de metadatos y el valor para el script de inicio, en una llamada a lasinstances.setMetadata
Método 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" } ], ... }
Reemplace lo siguiente:
PROJECT_ID : el ID del proyecto.
ZONE : la zona de la VM.
VM_NAME : la zona de la VM.
FINGERPRINT : el valor de
tags.fingerprint
obtenido utilizando el métodoinstances.get
.CLOUD_STORAGE_URL : el valor de metadatos. Establezca en la ubicación de almacenamiento en la nube del archivo de script de inicio utilizando uno de los siguientes formatos:
- URL autenticada :
https://storage.googleapis.com/ BUCKET / FILE
- URI de almacenamiento de gcLoud :
gs:// BUCKET / FILE
- URL autenticada :
Cree un script de inicio que consulte el valor de una clave de metadatos. Por ejemplo, el siguiente script 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
Establezca el valor de la tecla
foo
Metadata al crear una VM utilizando el siguiente comandogcloud compute instances create
. Para este ejemplo, el script de inicio se pasa a la VM desde un archivo local.nube de 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
Reemplace lo siguiente:
VM_NAME : el nombre de la VM
FILE_PATH : la ruta relativa al archivo de script de inicio
Para obtener más información sobre cómo especificar un par de valores clave de metadatos, consulte el conjunto y elimine los metadatos personalizados .
Vea la IP externa en un navegador web para verificar que el script de inicio genere el valor de
foo
. Es posible que tenga que esperar unos 10 minutos para que finalice el script de inicio de la muestra.Ejecutando el siguiente comando:
C:\Program Files\Google\Compute Engine\metadata_scripts\run_startup_scripts.cmd
Puerto serie 1 en la consola de Google Cloud. Para obtener más información, consulte la salida de la salida del puerto serie .
Registro de aplicaciones de Windows Event Viewer.
Escritorio de IAP desde una estación de trabajo de Windows. Para obtener más información, consulte el repositorio GooglecLoudPlatform/IAP-desktop en GitHub.
Aprenda a usar scripts de inicio en Linux VMS .
Aprenda a agregar un script de cierre .
Obtenga más información sobre los metadatos de VM .
Aprenda a ejecutar scripts de inicio en Windows VMS y únase a un dominio de anuncios de Microsoft administrado .
REST
Para usar las muestras de la API de REST en esta página en un entorno de desarrollo local, debes usar las credenciales que proporcionas a la CLI de gcloud.
After installing the Google Cloud CLI, initialize it by running the following command:
gcloud init
If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.
Para obtener más información, consulta Autentica para usar REST en la documentación de autenticación de Google Cloud .
Claves de metadatos para scripts de inicio de Windows
Se pasa un script de inicio a una máquina virtual desde una ubicación especificada mediante una clave de metadatos. Una clave de metadatos especifica si el script de inicio se almacena localmente, en Cloud Storage o se pasa directamente a la VM. La clave de metadatos que utilice también puede depender del tamaño o del tipo de archivo del script de inicio.
La siguiente tabla muestra las claves de metadatos que puede usar para los scripts de inicio de Windows y proporciona información sobre qué clave usar según 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
Pasar un script de PowerShell sin firmar que se almacena localmente o se agrega directamente y que tiene un tamaño de hasta 256 KB sysprep-specialize-script-cmd
Pasar un script de comando shell que se almacena localmente o se agrega directamente y que tiene un tamaño de hasta 256 KB sysprep-specialize-script-bat
Pasar un script de archivo por lotes que se almacena localmente o se agrega directamente y que tiene un tamaño de hasta 256 KB sysprep-specialize-script-url
Pasar un archivo por lotes, un shell de comandos, un script de PowerShell firmado o no firmado o un ejecutable que esté almacenado en Cloud Storage y que tenga un tamaño superior a 256 KB windows-startup-script-ps1
Pasar un script de PowerShell sin firmar que se almacena localmente o se agrega directamente y que tiene un tamaño de hasta 256 KB windows-startup-script-cmd
Pasar un script de comando shell que se almacena localmente o se agrega directamente y que tiene un tamaño de hasta 256 KB windows-startup-script-bat
Pasar un script de archivo por lotes que se almacena localmente o se agrega directamente y que tiene un tamaño de hasta 256 KB windows-startup-script-url
Pasar un archivo por lotes, un shell de comandos, un script de PowerShell firmado o no firmado o un ejecutable que esté almacenado en Cloud Storage y 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, consulte el repositorio GoogleCloudPlatform/compute-image-windows en GitHub.
Orden de ejecución de los scripts de inicio de Windows
Puede utilizar varios scripts de inicio. Los scripts de inicio almacenados localmente o agregados se ejecutan directamente antes que los scripts de inicio almacenados en Cloud Storage. El tipo de archivo que contiene el script también afecta el orden de ejecución. La siguiente tabla muestra, según la clave de metadatos, el orden de ejecución de los scripts 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 arranque después del arranque inicial windows-startup-script-cmd
Segundo durante cada arranque después del arranque inicial windows-startup-script-bat
Tercero durante cada arranque después del arranque inicial windows-startup-script-url
Cuarto durante cada arranque después del arranque inicial Pasar un script de inicio de Windows directamente
Pase el contenido de un archivo por lotes, un shell de comandos o un script de inicio de PowerShell sin firmar directamente a una máquina virtual de Windows Server. Los siguientes procedimientos muestran cómo pasar un script de PowerShell sin firmar.
Consola
Pasar un script de inicio de Windows directamente a una nueva VM
Pasar un script de inicio de Windows directamente a una máquina virtual existente
Verificando el script de inicio
Después de que se inicie la VM, vea la IP externa en un navegador web para verificar que el script de inicio creó el sitio web. Es posible que deba esperar unos 10 minutos para que finalice el script de inicio de muestra.
gcloud (golpe)
Pasar un script de inicio de Windows directamente a una nueva VM
Pase el contenido de una secuencia de comandos de inicio directamente a una máquina virtual de Windows Server cuando la cree 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'
Reemplace VM_NAME con el nombre de la VM.
Pasar un script de inicio de Windows directamente a una máquina virtual existenteAgrega la secuencia de comandos de inicio directamente a una VM existente mediante el siguiente comando
gcloud compute instances add-metadata
: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'
Reemplace VM_NAME con el nombre de la VM.
Verificando el script de inicioDespués de que se inicie la máquina virtual, vea la IP externa en un navegador web para verificar que el script de inicio creó el sitio web. Es posible que deba esperar unos 10 minutos para que finalice el script de inicio de muestra.
gcloud (símbolo del sistema)
Pasar un script de inicio de Windows directamente a una nueva VM
Pase el contenido de una secuencia de comandos de inicio directamente a una máquina virtual de Windows Server cuando la cree 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'
Reemplace VM_NAME con el nombre de la VM.
Pasar un script de inicio de Windows directamente a una máquina virtual existenteAgrega la secuencia de comandos de inicio directamente a una VM existente mediante el siguiente comando
gcloud compute instances add-metadata
: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'
Reemplace VM_NAME con el nombre de la VM.
Verificando el script de inicioDespués de que se inicie la máquina virtual, vea la IP externa en un navegador web para verificar que el script de inicio creó el sitio web. Es posible que deba esperar unos 10 minutos para que finalice el script de inicio de muestra.
gcloud (PowerShell)
Pasar un script de inicio de Windows directamente a una nueva VM
Pase el contenido de una secuencia de comandos de inicio directamente a una máquina virtual de Windows Server cuando la cree 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'
Reemplace VM_NAME con el nombre de la VM.
Pasar un script de inicio de Windows directamente a una máquina virtual existenteAgrega la secuencia de comandos de inicio directamente a una VM existente mediante el siguiente comando
gcloud compute instances add-metadata
: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'
Reemplace VM_NAME con el nombre de la VM.
Verificando el script de inicioDespués de que se inicie la máquina virtual, vea la IP externa en un navegador web para verificar que el script de inicio creó el sitio web. Es posible que deba esperar unos 10 minutos para que finalice el script de inicio de muestra.
DESCANSAR
Pasar un script de inicio de Windows directamente a una nueva VM
Pase el contenido de una secuencia de comandos de inicio directamente a una máquina virtual de Windows Server cuando la cree mediante el siguiente método
instances.insert
.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" } ] }, ... }
Reemplace lo siguiente:
Pasar un script de inicio de Windows directamente a una máquina virtual existente
Verificando el script de inicio
Después de que se inicie la VM, vea la IP externa en un navegador web para verificar que el script de inicio creó el sitio web. Es posible que deba esperar unos 10 minutos para que finalice el script de inicio de muestra.
Pasar un script de inicio de Windows desde un archivo local
Puede almacenar un script de inicio en un archivo por lotes local, un script de Command Shell o un script de PowerShell sin firmar en su estación de trabajo y pasar el archivo local como metadatos a una máquina virtual cuando lo cree. No puede utilizar archivos almacenados en máquinas virtuales como scripts de inicio.
Antes de pasar una secuencia de comandos de inicio de Windows desde un archivo local a una máquina virtual, haga lo siguiente:
gcloud (golpe)
Pasar un script de inicio de Windows desde un archivo local a una nueva máquina virtual
Crea una máquina virtual y pasa el contenido de un archivo local para usarlo como secuencia de comandos de inicio mediante el comando
gcloud compute instances create
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
Reemplace lo siguiente:
Pase una secuencia de comandos de inicio a una máquina virtual existente desde un archivo local mediante el siguiente comando
gcloud compute instances add-metadata
:gcloud compute instances add-metadata VM_NAME \ --metadata-from-file=windows-startup-script-ps1=FILE_PATH
Reemplace lo siguiente:
Vea la IP externa en un navegador web para verificar que el script de inicio creó el sitio web. Es posible que deba esperar unos 10 minutos para que finalice el script de inicio de muestra.
gcloud (símbolo del sistema)
Pasar un script de inicio de Windows desde un archivo local a una nueva máquina virtual
Crea una máquina virtual y pasa el contenido de un archivo local para usarlo como secuencia de comandos de inicio mediante el comando
gcloud compute instances create
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
Reemplace lo siguiente:
Pase una secuencia de comandos de inicio a una máquina virtual existente desde un archivo local mediante el siguiente comando
gcloud compute instances add-metadata
:gcloud compute instances add-metadata VM_NAME ^ --metadata-from-file=windows-startup-script-ps1=FILE_PATH
Reemplace lo siguiente:
Vea la IP externa en un navegador web para verificar que el script de inicio creó el sitio web. Es posible que deba esperar unos 10 minutos para que finalice el script de inicio de muestra.
gcloud (PowerShell)
Pasar un script de inicio de Windows desde un archivo local a una nueva máquina virtual
Crea una máquina virtual y pasa el contenido de un archivo local para usarlo como secuencia de comandos de inicio mediante el comando
gcloud compute instances create
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
Reemplace lo siguiente:
Pase una secuencia de comandos de inicio a una máquina virtual existente desde un archivo local mediante el siguiente comando
gcloud compute instances add-metadata
:gcloud compute instances add-metadata VM_NAME ` --metadata-from-file=windows-startup-script-ps1=FILE_PATH
Reemplace lo siguiente:
Vea la IP externa en un navegador web para verificar que el script de inicio creó el sitio web. Es posible que deba esperar unos 10 minutos para que finalice el script de inicio de muestra.
Pasar una secuencia de comandos de inicio de Windows desde Cloud Storage
Puede almacenar un script de inicio como un archivo por lotes, un script de shell de comando, un script de PowerShell firmado/sin firmar o ejecutable en almacenamiento en la nube y pasarlo a una VM cuando lo crea. Después de agregar un script de inicio al almacenamiento en la nube, tiene una URL que puede usar para hacer referencia al script de inicio cuando crea una VM.
Antes de agregar un script de inicio desde un cubo de almacenamiento en la nube, haga lo siguiente:
Implicaciones de seguridad
Consola
Pasar un script de inicio que se almacena en el almacenamiento en la nube a una nueva VM
Pasar un script de inicio que se almacena en el almacenamiento en la nube a una VM existente
Verificar el script de inicio
Vea la IP externa en un navegador web para verificar que el script de inicio creó el sitio web. Es posible que tenga que esperar unos 10 minutos para que finalice el script de inicio de la muestra.
GcLoud (Bash)
Pasar un script de inicio que se almacena en el almacenamiento en la nube a una nueva VM
Pase un script de inicio que se almacena en el almacenamiento en la nube a una VM de Windows Server utilizando el siguiente comando
gcloud compute instances create
. Para el valor de la bandera--scopes
, usestorage-ro
para que la VM pueda acceder al almacenamiento en la nube.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
Reemplace lo siguiente:
Pase un script de inicio que se almacena en el almacenamiento en la nube a una VM existente utilizando el siguiente comando
gcloud compute instances add-metadata
:gcloud compute instances add-metadata VM_NAME \ --metadata=windows-startup-script-url=CLOUD_STORAGE_URL
Reemplace lo siguiente:
Vea la IP externa en un navegador web para verificar que el script de inicio creó el sitio web. Es posible que tenga que esperar unos 10 minutos para que finalice el script de inicio de la muestra.
GcLoud (símbolo del sistema)
Pasar un script de inicio que se almacena en el almacenamiento en la nube a una nueva VM
Pase un script de inicio que se almacena en el almacenamiento en la nube a una VM de Windows Server utilizando el siguiente comando
gcloud compute instances create
. Para el valor de la bandera--scopes
, usestorage-ro
para que la VM pueda acceder al almacenamiento en la nube.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
Reemplace lo siguiente:
Pase un script de inicio que se almacena en el almacenamiento en la nube a una VM existente utilizando el siguiente comando
gcloud compute instances add-metadata
:gcloud compute instances add-metadata VM_NAME ^ --metadata=windows-startup-script-url=CLOUD_STORAGE_URL
Reemplace lo siguiente:
Vea la IP externa en un navegador web para verificar que el script de inicio creó el sitio web. Es posible que tenga que esperar unos 10 minutos para que finalice el script de inicio de la muestra.
GcLoud (PowerShell)
Pasar un script de inicio que se almacena en el almacenamiento en la nube a una nueva VM
Pase un script de inicio que se almacena en el almacenamiento en la nube a una VM de Windows Server utilizando el siguiente comando
gcloud compute instances create
. Para el valor de la bandera--scopes
, usestorage-ro
para que la VM pueda acceder al almacenamiento en la nube.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
Reemplace lo siguiente:
Pase un script de inicio que se almacena en el almacenamiento en la nube a una VM existente utilizando el siguiente comando
gcloud compute instances add-metadata
:gcloud compute instances add-metadata VM_NAME ` --metadata=windows-startup-script-url=CLOUD_STORAGE_URL
Reemplace lo siguiente:
Vea la IP externa en un navegador web para verificar que el script de inicio creó el sitio web. Es posible que tenga que esperar unos 10 minutos para que finalice el script de inicio de la muestra.
DESCANSAR
Pasar un script de inicio que se almacena en el almacenamiento en la nube a una nueva VM
Pase un script de inicio que se almacena en el almacenamiento en la nube a una VM de Windows Server utilizando las siguientes
instances.insert
. Método Insert . Al camposcopes
, agreguehttps://www.googleapis.com/auth/devstorage.read_only
para que la VM pueda acceder al almacenamiento en la nube.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" }, ... ] }, ... }
Reemplace lo siguiente:
Pasar un script de inicio que se almacena en el almacenamiento en la nube a una VM existente
Verificar el script de inicio
Vea la IP externa en un navegador web para verificar que el script de inicio creó el sitio web. Es posible que tenga que esperar unos 10 minutos para que finalice el script de inicio de la muestra.
Acceso a metadatos desde un script de inicio de Windows
En un script de inicio puede acceder a los valores de metadatos. Por ejemplo, puede usar el mismo script para múltiples máquinas virtuales y parametrizar cada script individualmente pasando diferentes valores de metadatos a cada VM.
Para acceder a un valor de metadatos personalizado desde un script de inicio, haga lo siguiente:
Volver a ejecutar un script de inicio de Windows
Vuelva a hacer un script de inicio en una VM de Windows haciendo lo siguiente:
Ver la salida de un script de inicio de Windows
Vea la salida de un script de inicio de Windows Server utilizando cualquiera de los siguientes eventos de
GCEMetadataScripts
:¿Qué sigue?
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-04-17 (UTC).
-
REST
Para usar las muestras de la API de REST en esta página en un entorno de desarrollo local, debes usar las credenciales que proporcionas a la CLI de gcloud.
After installing the Google Cloud CLI, initialize it by running the following command:
gcloud init
If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.
Para obtener más información, consulta Autentica para usar REST en la documentación de autenticación de Google Cloud .
Claves de metadatos para scripts de inicio de Windows
Se pasa un script de inicio a una máquina virtual desde una ubicación especificada mediante una clave de metadatos. Una clave de metadatos especifica si el script de inicio se almacena localmente, en Cloud Storage o se pasa directamente a la VM. La clave de metadatos que utilice también puede depender del tamaño o del tipo de archivo del script de inicio.
La siguiente tabla muestra las claves de metadatos que puede usar para los scripts de inicio de Windows y proporciona información sobre qué clave usar según 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
Pasar un script de PowerShell sin firmar que se almacena localmente o se agrega directamente y que tiene un tamaño de hasta 256 KB sysprep-specialize-script-cmd
Pasar un script de comando shell que se almacena localmente o se agrega directamente y que tiene un tamaño de hasta 256 KB sysprep-specialize-script-bat
Pasar un script de archivo por lotes que se almacena localmente o se agrega directamente y que tiene un tamaño de hasta 256 KB sysprep-specialize-script-url
Pasar un archivo por lotes, un shell de comandos, un script de PowerShell firmado/sin firmar o un ejecutable que esté almacenado en Cloud Storage y que tenga un tamaño superior a 256 KB windows-startup-script-ps1
Pasar un script de PowerShell sin firmar que se almacena localmente o se agrega directamente y que tiene un tamaño de hasta 256 KB windows-startup-script-cmd
Pasar un script de comando shell que se almacena localmente o se agrega directamente y que tiene un tamaño de hasta 256 KB windows-startup-script-bat
Pasar un script de archivo por lotes que se almacena localmente o se agrega directamente y que tiene un tamaño de hasta 256 KB windows-startup-script-url
Pasar un archivo por lotes, un shell de comandos, un script de PowerShell firmado/sin firmar o un ejecutable que esté almacenado en Cloud Storage y 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, consulte el repositorio GoogleCloudPlatform/compute-image-windows en GitHub.
Orden de ejecución de los scripts de inicio de Windows
Puede utilizar varios scripts de inicio. Los scripts de inicio almacenados localmente o agregados se ejecutan directamente antes que los scripts de inicio almacenados en Cloud Storage. El tipo de archivo que contiene el script también afecta el orden de ejecución. La siguiente tabla muestra, según la clave de metadatos, el orden de ejecución de los scripts 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 arranque después del arranque inicial windows-startup-script-cmd
Segundo durante cada arranque después del arranque inicial windows-startup-script-bat
Tercero durante cada arranque después del arranque inicial windows-startup-script-url
Cuarto durante cada arranque después del arranque inicial Pasar un script de inicio de Windows directamente
Pase el contenido de un archivo por lotes, un shell de comandos o un script de inicio de PowerShell sin firmar directamente a una máquina virtual de Windows Server. Los siguientes procedimientos muestran cómo pasar un script de PowerShell sin firmar.
Consola
Pasar un script de inicio de Windows directamente a una nueva VM
Pasar un script de inicio de Windows directamente a una máquina virtual existente
Verificando el script de inicio
Después de que se inicie la VM, vea la IP externa en un navegador web para verificar que el script de inicio creó el sitio web. Es posible que deba esperar unos 10 minutos para que finalice el script de inicio de muestra.
gcloud (golpe)
Pasar un script de inicio de Windows directamente a una nueva VM
Pase el contenido de una secuencia de comandos de inicio directamente a una máquina virtual de Windows Server cuando la cree 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'
Reemplace VM_NAME con el nombre de la VM.
Pasar un script de inicio de Windows directamente a una máquina virtual existenteAgrega la secuencia de comandos de inicio directamente a una VM existente mediante el siguiente comando
gcloud compute instances add-metadata
: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'
Reemplace VM_NAME con el nombre de la VM.
Verificando el script de inicioDespués de que se inicie la máquina virtual, vea la IP externa en un navegador web para verificar que el script de inicio creó el sitio web. Es posible que deba esperar unos 10 minutos para que finalice el script de inicio de muestra.
gcloud (símbolo del sistema)
Pasar un script de inicio de Windows directamente a una nueva VM
Pase el contenido de una secuencia de comandos de inicio directamente a una máquina virtual de Windows Server cuando la cree 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'
Reemplace VM_NAME con el nombre de la VM.
Pasar un script de inicio de Windows directamente a una máquina virtual existenteAgrega la secuencia de comandos de inicio directamente a una VM existente mediante el siguiente comando
gcloud compute instances add-metadata
: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'
Reemplace VM_NAME con el nombre de la VM.
Verificando el script de inicioDespués de que se inicie la máquina virtual, vea la IP externa en un navegador web para verificar que el script de inicio creó el sitio web. Es posible que deba esperar unos 10 minutos para que finalice el script de inicio de muestra.
gcloud (PowerShell)
Pasar un script de inicio de Windows directamente a una nueva VM
Pase el contenido de una secuencia de comandos de inicio directamente a una máquina virtual de Windows Server cuando la cree 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'
Reemplace VM_NAME con el nombre de la VM.
Pasar un script de inicio de Windows directamente a una máquina virtual existenteAgrega la secuencia de comandos de inicio directamente a una VM existente mediante el siguiente comando
gcloud compute instances add-metadata
: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'
Reemplace VM_NAME con el nombre de la VM.
Verificando el script de inicioDespués de que se inicie la máquina virtual, vea la IP externa en un navegador web para verificar que el script de inicio creó el sitio web. Es posible que deba esperar unos 10 minutos para que finalice el script de inicio de muestra.
DESCANSAR
Pasar un script de inicio de Windows directamente a una nueva VM
Pase el contenido de una secuencia de comandos de inicio directamente a una máquina virtual de Windows Server cuando la cree mediante el siguiente método
instances.insert
.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" } ] }, ... }
Reemplace lo siguiente:
Pasar un script de inicio de Windows directamente a una máquina virtual existente
Verificando el script de inicio
Después de que se inicie la VM, vea la IP externa en un navegador web para verificar que el script de inicio creó el sitio web. Es posible que deba esperar unos 10 minutos para que finalice el script de inicio de muestra.
Pasar un script de inicio de Windows desde un archivo local
Puede almacenar un script de inicio en un archivo por lotes local, un script de Command Shell o un script de PowerShell sin firmar en su estación de trabajo y pasar el archivo local como metadatos a una máquina virtual cuando lo cree. No puede utilizar archivos almacenados en máquinas virtuales como scripts de inicio.
Antes de pasar una secuencia de comandos de inicio de Windows desde un archivo local a una VM, haga lo siguiente:
gcloud (golpe)
Pasar un script de inicio de Windows desde un archivo local a una nueva máquina virtual
Crea una máquina virtual y pasa el contenido de un archivo local para usarlo como secuencia de comandos de inicio mediante el comando
gcloud compute instances create
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
Reemplace lo siguiente:
Pase una secuencia de comandos de inicio a una máquina virtual existente desde un archivo local mediante el siguiente comando
gcloud compute instances add-metadata
:gcloud compute instances add-metadata VM_NAME \ --metadata-from-file=windows-startup-script-ps1=FILE_PATH
Reemplace lo siguiente:
Vea la IP externa en un navegador web para verificar que el script de inicio creó el sitio web. Es posible que deba esperar unos 10 minutos para que finalice el script de inicio de muestra.
gcloud (símbolo del sistema)
Pasar un script de inicio de Windows desde un archivo local a una nueva máquina virtual
Crea una máquina virtual y pasa el contenido de un archivo local para usarlo como secuencia de comandos de inicio mediante el comando
gcloud compute instances create
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
Reemplace lo siguiente:
Pase una secuencia de comandos de inicio a una máquina virtual existente desde un archivo local mediante el siguiente comando
gcloud compute instances add-metadata
:gcloud compute instances add-metadata VM_NAME ^ --metadata-from-file=windows-startup-script-ps1=FILE_PATH
Reemplace lo siguiente:
Vea la IP externa en un navegador web para verificar que el script de inicio creó el sitio web. Es posible que deba esperar unos 10 minutos para que finalice el script de inicio de muestra.
gcloud (PowerShell)
Pasar un script de inicio de Windows desde un archivo local a una nueva máquina virtual
Crea una máquina virtual y pasa el contenido de un archivo local para usarlo como secuencia de comandos de inicio mediante el comando
gcloud compute instances create
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
Reemplace lo siguiente:
Pase una secuencia de comandos de inicio a una máquina virtual existente desde un archivo local mediante el siguiente comando
gcloud compute instances add-metadata
:gcloud compute instances add-metadata VM_NAME ` --metadata-from-file=windows-startup-script-ps1=FILE_PATH
Reemplace lo siguiente:
Vea la IP externa en un navegador web para verificar que el script de inicio creó el sitio web. Es posible que tengas que esperar unos 10 minutos para que finalice el script de inicio de muestra.
Pasar una secuencia de comandos de inicio de Windows desde Cloud Storage
Puede almacenar un script de inicio como un archivo por lotes, un script de Command Shell, un script de PowerShell firmado/sin firmar o un archivo ejecutable en Cloud Storage y pasarlo a una máquina virtual cuando lo cree. Después de agregar una secuencia de comandos de inicio a Cloud Storage, tiene una URL que puede usar para hacer referencia a la secuencia de comandos de inicio cuando crea una VM.
Antes de agregar una secuencia de comandos de inicio desde un depósito de Cloud Storage, haga lo siguiente:
Implicaciones de seguridad
Consola
Pasar una secuencia de comandos de inicio almacenada en Cloud Storage a una nueva máquina virtual
Pasar una secuencia de comandos de inicio almacenada en Cloud Storage a una máquina virtual existente
Verificando el script de inicio
Vea la IP externa en un navegador web para verificar que el script de inicio creó el sitio web. Es posible que deba esperar unos 10 minutos para que finalice el script de inicio de muestra.
gcloud (golpe)
Pasar una secuencia de comandos de inicio almacenada en Cloud Storage a una nueva máquina virtual
Pase una secuencia de comandos de inicio almacenada en Cloud Storage a una máquina virtual de Windows Server mediante el siguiente comando
gcloud compute instances create
. Para el valor del indicador--scopes
, usestorage-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
Reemplace lo siguiente:
Pasa una secuencia de comandos de inicio que está almacenada en Cloud Storage a una VM existente mediante el siguiente comando
gcloud compute instances add-metadata
:gcloud compute instances add-metadata VM_NAME \ --metadata=windows-startup-script-url=CLOUD_STORAGE_URL
Reemplace lo siguiente:
Vea la IP externa en un navegador web para verificar que el script de inicio creó el sitio web. Es posible que deba esperar unos 10 minutos para que finalice el script de inicio de muestra.
gcloud (símbolo del sistema)
Pasar una secuencia de comandos de inicio almacenada en Cloud Storage a una nueva máquina virtual
Pase una secuencia de comandos de inicio almacenada en Cloud Storage a una máquina virtual de Windows Server mediante el siguiente comando
gcloud compute instances create
. Para el valor del indicador--scopes
, usestorage-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
Reemplace lo siguiente:
Pasa una secuencia de comandos de inicio que está almacenada en Cloud Storage a una VM existente mediante el siguiente comando
gcloud compute instances add-metadata
:gcloud compute instances add-metadata VM_NAME ^ --metadata=windows-startup-script-url=CLOUD_STORAGE_URL
Reemplace lo siguiente:
Vea la IP externa en un navegador web para verificar que el script de inicio creó el sitio web. Es posible que deba esperar unos 10 minutos para que finalice el script de inicio de muestra.
gcloud (PowerShell)
Pasar una secuencia de comandos de inicio almacenada en Cloud Storage a una nueva máquina virtual
Pase una secuencia de comandos de inicio almacenada en Cloud Storage a una máquina virtual de Windows Server mediante el siguiente comando
gcloud compute instances create
. Para el valor del indicador--scopes
, usestorage-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
Reemplace lo siguiente:
Pasa una secuencia de comandos de inicio que está almacenada en Cloud Storage a una VM existente mediante el siguiente comando
gcloud compute instances add-metadata
:gcloud compute instances add-metadata VM_NAME ` --metadata=windows-startup-script-url=CLOUD_STORAGE_URL
Reemplace lo siguiente:
Vea la IP externa en un navegador web para verificar que el script de inicio creó el sitio web. Es posible que deba esperar unos 10 minutos para que finalice el script de inicio de muestra.
DESCANSAR
Pasar una secuencia de comandos de inicio almacenada en Cloud Storage a una nueva máquina virtual
Pase una secuencia de comandos de inicio almacenada en Cloud Storage a una máquina virtual de Windows Server mediante el siguiente método
instances.insert
. En el camposcopes
, agreguehttps://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" }, ... ] }, ... }
Reemplace lo siguiente:
Pasar una secuencia de comandos de inicio almacenada en Cloud Storage a una máquina virtual existente
Verificando el script de inicio
Vea la IP externa en un navegador web para verificar que el script de inicio creó el sitio web. Es posible que deba esperar unos 10 minutos para que finalice el script de inicio de muestra.
Acceder a metadatos desde un script de inicio de Windows
En un script de inicio puede acceder a los valores de metadatos. Por ejemplo, puede utilizar el mismo script para varias máquinas virtuales y parametrizar cada script individualmente pasando diferentes valores de metadatos a cada máquina virtual.
Para acceder a un valor de metadatos personalizado desde un script de inicio, haga lo siguiente:
Volver a ejecutar un script de inicio de Windows
Vuelva a ejecutar un script de inicio en una máquina virtual Windows haciendo lo siguiente:
Ver el resultado de un script de inicio de Windows
Vea el resultado de una secuencia de comandos de inicio de Windows Server utilizando cualquiera de los siguientes y verificando eventos
GCEMetadataScripts
:¿Qué sigue?
Un script de inicio es un archivo que realiza tareas durante el proceso de inicio de una instancia de máquina virtual (VM). Los scripts de inicio se pueden aplicar a todas las máquinas virtuales de un proyecto o a una sola máquina virtual. Los scripts de inicio especificados por metadatos a nivel de VM anulan los scripts de inicio especificados por metadatos a nivel de proyecto, y los scripts de inicio solo se ejecutan cuando hay una red disponible. Este documento describe cómo utilizar scripts de inicio en instancias de VM de Windows Server. Para obtener información sobre cómo agregar una secuencia de comandos de inicio a nivel de proyecto, consulta
gcloud compute project-info add-metadata
.Los scripts de inicio de Windows deben ser comandos de shell (
.cmd
), PowerShell (.ps1
) o scripts de archivos por lotes (.bat
) y deben tener la extensión de archivo adecuada.Si especifica una secuencia de comandos de inicio mediante uno de los procedimientos de este documento, Compute Engine hace lo siguiente:
Para obtener información sobre las diversas tareas relacionadas con los scripts de inicio y cuándo realizar cada una, consulte el documento de descripción general de los scripts de inicio .
Antes de comenzar
-