Uno script di avvio è un file che esegue attività durante il processo di avvio di un'istanza di macchina virtuale (VM). Gli script di avvio possono essere applicati a tutte le VM di un progetto
o a una singola VM. Gli script di avvio specificati dai metadati a livello di VM sostituiscono
gli script di avvio specificati dai metadati a livello di progetto e gli script di avvio
vengono eseguiti solo quando è disponibile una rete. Questo documento descrive come utilizzare gli script di avvio sulle istanze VM Windows Server. Per informazioni su come aggiungere uno script di avvio a livello di progetto, consulta gcloud compute project-info add-metadata
.
Gli script di avvio di Windows devono essere script della shell dei comandi (.cmd
), PowerShell (.ps1
) o
file batch (.bat
) e devono avere l'estensione di file appropriata.
Se specifichi uno script di avvio utilizzando una delle procedure descritte in questo documento, Compute Engine esegue le seguenti operazioni:
Copia lo script di avvio nella VM
Utilità di pianificazione esegue lo script di avvio come
LocalSystem
account all'avvio della VM
Per informazioni sulle varie attività relative agli script di avvio e su quando eseguirle, consulta il documento di panoramica degli script di avvio.
Prima di iniziare
- Leggi la panoramica degli script di avvio.
- Scopri di più sui concetti di base dei metadati della VM.
-
Se non l'hai ancora fatto, configura l'autenticazione.
L'autenticazione è
il processo di verifica dell'identità per poter accedere a Trusted Cloud by S3NS servizi e API.
Per eseguire codice o esempi da un ambiente di sviluppo locale, puoi autenticarti su
Compute Engine selezionando una delle seguenti opzioni:
Select the tab for how you plan to use the samples on this page:
Console
When you use the Trusted Cloud console to access Trusted Cloud by S3NS services and APIs, you don't need to set up authentication.
gcloud
-
Installa Google Cloud CLI, quindi accedi a gcloud CLI con la tua identità federata. Dopo aver eseguito l'accesso, inizializza Google Cloud CLI eseguendo il seguente comando:
gcloud init
- Set a default region and zone.
REST
Per utilizzare gli esempi di API REST in questa pagina in un ambiente di sviluppo locale, devi utilizzare le credenziali che fornisci a gcloud CLI.
Installa Google Cloud CLI, quindi accedi a gcloud CLI con la tua identità federata. Dopo aver eseguito l'accesso, inizializza Google Cloud CLI eseguendo il seguente comando:
gcloud init
Per saperne di più, consulta Autenticarsi per l'utilizzo di REST nella documentazione sull'autenticazione di Trusted Cloud .
Chiavi dei metadati per gli script di avvio di Windows
Uno script di avvio viene trasmesso a una VM da una posizione specificata da una chiave di metadati. Una chiave di metadati specifica se lo script di avvio è archiviato localmente, in Cloud Storage o passato direttamente alla VM. La chiave dei metadati che utilizzi potrebbe dipendere anche dalle dimensioni o dal tipo di file dello script di avvio.
La seguente tabella mostra le chiavi dei metadati che puoi utilizzare per gli script di avvio di Windows e fornisce informazioni su quale chiave utilizzare in base alla posizione di archiviazione, alle dimensioni e al tipo di file dello script di avvio.
Chiave dei metadati Utilizza per sysprep-specialize-script-ps1
Passaggio di uno script PowerShell non firmato archiviato localmente o aggiunto direttamente e di dimensioni massime di 256 KB sysprep-specialize-script-cmd
Passaggio di uno script shell di comando archiviato localmente o aggiunto direttamente e di dimensioni massime di 256 KB sysprep-specialize-script-bat
Passaggio di uno script di file batch memorizzato localmente o aggiunto direttamente e di dimensioni fino a 256 KB sysprep-specialize-script-url
Passaggio di un file batch, di una shell dei comandi, di uno script PowerShell firmato/non firmato o di un eseguibile archiviato in Cloud Storage e di dimensioni superiori a 256 KB windows-startup-script-ps1
Passaggio di uno script PowerShell non firmato archiviato localmente o aggiunto direttamente e di dimensioni massime di 256 KB windows-startup-script-cmd
Passaggio di uno script shell di comando archiviato localmente o aggiunto direttamente e di dimensioni massime di 256 KB windows-startup-script-bat
Passaggio di uno script di file batch memorizzato localmente o aggiunto direttamente e con dimensioni fino a 256 KB windows-startup-script-url
Passaggio di un file batch, di una shell dei comandi, di uno script PowerShell firmato/non firmato o di un eseguibile archiviato in Cloud Storage e di dimensioni superiori a 256 KB Per ulteriori informazioni sull'ordine di esecuzione dei vari tipi di script di avvio, vedi il repository GoogleCloudPlatform/compute-image-windows su GitHub.
Ordine di esecuzione degli script di avvio di Windows
Puoi utilizzare più script di avvio. Gli script di avvio archiviati localmente o aggiunti direttamente vengono eseguiti prima degli script di avvio archiviati in Cloud Storage. Anche il tipo di file contenente lo script influisce sull'ordine di esecuzione. La tabella seguente mostra, in base alla chiave dei metadati, l'ordine di esecuzione degli script di avvio di Windows.
Chiave dei metadati Ordine di esecuzione sysprep-specialize-script-ps1
Innanzitutto durante l'avvio iniziale sysprep-specialize-script-cmd
Secondo durante l'avvio iniziale sysprep-specialize-script-bat
Terzo durante l'avvio iniziale sysprep-specialize-script-url
Quarto durante l'avvio iniziale windows-startup-script-ps1
La prima volta durante ogni avvio dopo l'avvio iniziale windows-startup-script-cmd
Secondi durante ogni avvio dopo l'avvio iniziale windows-startup-script-bat
Terzo durante ogni avvio dopo l'avvio iniziale windows-startup-script-url
Quarto durante ogni avvio successivo a quello iniziale Passaggio diretto di uno script di avvio di Windows
Trasferisci i contenuti di un file batch, della shell dei comandi o di uno script di avvio di PowerShell non firmato direttamente a una VM Windows Server. Le procedure riportate di seguito mostrano come trasmettere uno script PowerShell non firmato.
Console
Passaggio diretto di uno script di avvio di Windows a una nuova VM
Nella Trusted Cloud console, vai alla pagina Crea un'istanza.
Per Disco di avvio, seleziona Cambia e fai quanto segue:
- Nella scheda Immagini pubbliche, scegli un sistema operativo Windows Server.
- Fai clic su Seleziona.
Espandi la sezione Opzioni avanzate e segui questi passaggi:
- Espandi la sezione Gestione.
Nella sezione Metadati, fai clic su Aggiungi elemento per impostare Chiave e Valore:
Chiave: impostata su
windows-startup-script-ps1
.Gli script di avvio passati alla VM utilizzando chiavi di metadati che iniziano con
windows-startup-script
vengono eseguiti a ogni avvio dopo l'avvio iniziale della VM.Valore: aggiungi il seguente 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
Fai clic su Crea.
Passaggio diretto di uno script di avvio di Windows a una VM esistente
Nella console Trusted Cloud , vai alla pagina Istanze VM.
Fai clic sul nome della VM.
Fai clic su Modifica.
Specifica quanto segue in Metadati:
key
:windows-startup-script-ps1
value
: i contenuti dello script di avvio
Verifica dello script di avvio
Dopo l'avvio della VM, visualizza l'IP esterno in un browser web per verificare che lo script di avvio abbia creato il sito web. Potresti dover attendere circa 10 minuti per il completamento dello script di avvio di esempio.
gcloud (Bash)
Passaggio di uno script di avvio di Windows direttamente a una nuova VM
Trasferisci i contenuti di uno script di avvio direttamente a una VM Windows Server quando la crei utilizzando il seguente 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'
Sostituisci VM_NAME con il nome della VM.
Passaggio di uno script di avvio di Windows direttamente a una VM esistenteAggiungi lo script di avvio direttamente a una VM esistente utilizzando il seguente 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'
Sostituisci VM_NAME con il nome della VM.
Verifica dello script di avvioDopo l'avvio della VM, visualizza l'IP esterno in un browser web per verificare che lo script di avvio abbia creato il sito web. Potresti dover attendere circa 10 minuti per il completamento dello script di avvio di esempio.
gcloud (prompt dei comandi)
Passaggio di uno script di avvio di Windows direttamente a una nuova VM
Trasferisci i contenuti di uno script di avvio direttamente a una VM Windows Server quando la crei utilizzando il seguente 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'
Sostituisci VM_NAME con il nome della VM.
Passaggio di uno script di avvio di Windows direttamente a una VM esistenteAggiungi lo script di avvio direttamente a una VM esistente utilizzando il seguente 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'
Sostituisci VM_NAME con il nome della VM.
Verifica dello script di avvioDopo l'avvio della VM, visualizza l'IP esterno in un browser web per verificare che lo script di avvio abbia creato il sito web. Potresti dover attendere circa 10 minuti per il completamento dello script di avvio di esempio.
gcloud (PowerShell)
Passaggio di uno script di avvio di Windows direttamente a una nuova VM
Trasferisci i contenuti di uno script di avvio direttamente a una VM Windows Server quando la crei utilizzando il seguente 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'
Sostituisci VM_NAME con il nome della VM.
Passaggio di uno script di avvio di Windows direttamente a una VM esistenteAggiungi lo script di avvio direttamente a una VM esistente utilizzando il seguente 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'
Sostituisci VM_NAME con il nome della VM.
Verifica dello script di avvioDopo l'avvio della VM, visualizza l'IP esterno in un browser web per verificare che lo script di avvio abbia creato il sito web. Potresti dover attendere circa 10 minuti per il completamento dello script di avvio di esempio.
REST
Passaggio diretto di uno script di avvio di Windows a una nuova VM
Trasferisci i contenuti di uno script di avvio direttamente a una VM Windows Server quando la crei utilizzando il seguente metodo
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" } ] }, ... }
Sostituisci quanto segue:
PROJECT_ID: l'ID progetto
ZONE: la zona in cui creare la VM.
Passaggio diretto di uno script di avvio di Windows a una VM esistente
Ottieni il valore
metadata.fingerprint
della VM utilizzando il metodoinstances.get
:GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME
Sostituisci quanto segue:
PROJECT_ID: l'ID del progetto in cui esiste la VM.
ZONE: la zona della VM.
VM_NAME: il nome della VM.
Trasmetti lo script di avvio utilizzando il valore
fingerprint
, insieme alla chiave e al valore dei metadati per lo script di avvio, in una chiamata al metodoinstances.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" } ], ... }
Sostituisci quanto segue:
PROJECT_ID: l'ID del progetto in cui esiste la VM.
ZONE: la zona della VM.
VM_NAME: il nome della VM.
FINGERPRINT: il valore
metadata.fingerprint
ottenuto utilizzando il metodoinstances.get
.
Verifica dello script di avvio
Dopo l'avvio della VM, visualizza l'IP esterno in un browser web per verificare che lo script di avvio abbia creato il sito web. Potresti dover attendere circa 10 minuti per il completamento dello script di avvio di esempio.
Passaggio di uno script di avvio di Windows da un file locale
Puoi archiviare uno script di avvio in un file batch locale, in uno script shell dei comandi o in uno script PowerShell non firmato sulla tua workstation e passare il file locale come metadati a una VM quando la crei. Non puoi utilizzare i file archiviati nelle VM come script di avvio.
Prima di passare uno script di avvio di Windows da un file locale a una VM, segui questa procedura:
Crea un file locale (
.ps1
) per archiviare lo script di avvio.Prendi nota del percorso relativo da gcloud CLI allo script di avvio.
Aggiungi il seguente script di avvio al file:
# 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)
Passaggio di uno script di avvio di Windows da un file locale a una nuova VM
Crea una VM e trasmetti i contenuti di un file locale da utilizzare come script di avvio utilizzando il comando
gcloud compute instances create
con il flag--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
Sostituisci quanto segue:
- VM_NAME: il nome della VM
- FILE_PATH: il percorso relativo del file dello script di avvio
Passa uno script di avvio a una VM esistente da un file locale utilizzando il seguente comando
gcloud compute instances add-metadata
:gcloud compute instances add-metadata VM_NAME \ --metadata-from-file=windows-startup-script-ps1=FILE_PATH
Sostituisci quanto segue:
- VM_NAME: il nome della VM
- FILE_PATH: il percorso relativo del file dello script di avvio
Visualizza l'IP esterno in un browser web per verificare che lo script di avvio abbia creato il sito web. Potresti dover attendere circa 10 minuti per il completamento dello script di avvio di esempio.
gcloud (prompt dei comandi)
Passaggio di uno script di avvio di Windows da un file locale a una nuova VM
Crea una VM e trasmetti i contenuti di un file locale da utilizzare come script di avvio utilizzando il comando
gcloud compute instances create
con il flag--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
Sostituisci quanto segue:
- VM_NAME: il nome della VM
- FILE_PATH: il percorso relativo del file dello script di avvio
Passa uno script di avvio a una VM esistente da un file locale utilizzando il seguente comando
gcloud compute instances add-metadata
:gcloud compute instances add-metadata VM_NAME ^ --metadata-from-file=windows-startup-script-ps1=FILE_PATH
Sostituisci quanto segue:
- VM_NAME: il nome della VM
- FILE_PATH: il percorso relativo del file dello script di avvio
Visualizza l'IP esterno in un browser web per verificare che lo script di avvio abbia creato il sito web. Potresti dover attendere circa 10 minuti per il completamento dello script di avvio di esempio.
gcloud (PowerShell)
Passaggio di uno script di avvio di Windows da un file locale a una nuova VM
Crea una VM e trasmetti i contenuti di un file locale da utilizzare come script di avvio utilizzando il comando
gcloud compute instances create
con il flag--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
Sostituisci quanto segue:
- VM_NAME: il nome della VM
- FILE_PATH: il percorso relativo del file dello script di avvio
Passa uno script di avvio a una VM esistente da un file locale utilizzando il seguente comando
gcloud compute instances add-metadata
:gcloud compute instances add-metadata VM_NAME ` --metadata-from-file=windows-startup-script-ps1=FILE_PATH
Sostituisci quanto segue:
- VM_NAME: il nome della VM
- FILE_PATH: il percorso relativo del file dello script di avvio
Visualizza l'IP esterno in un browser web per verificare che lo script di avvio abbia creato il sito web. Potresti dover attendere circa 10 minuti per il completamento dello script di avvio di esempio.
Passaggio di uno script di avvio di Windows da Cloud Storage
Puoi archiviare uno script di avvio come file batch, script shell dei comandi, script PowerShell firmato/non firmato o eseguibile in Cloud Storage e trasferirlo a una VM quando la crei. Dopo aver aggiunto uno script di avvio a Cloud Storage, avrai un URL che potrai utilizzare per fare riferimento allo script di avvio quando crei una VM.
Prima di aggiungere uno script di avvio da un bucket Cloud Storage, esegui le seguenti operazioni:
Crea un file per archiviare lo script di avvio. Questo esempio utilizza un file PowerShell (
.ps1
).Aggiungi al file il seguente script di PowerShell, che installa un server web e crea una semplice pagina web:
# 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
Implicazioni per la sicurezza
Per impostazione predefinita, i proprietari e gli editor di progetto possono accedere ai file Cloud Storage nello stesso progetto, a meno che non siano presenti controlli dell'accesso espliciti che lo vietano.
Se il bucket o l'oggetto Cloud Storage è meno sicuro dei metadati, esiste il rischio di escalation dei privilegi se lo script di avvio viene modificato e la VM viene riavviata. Questo perché dopo il riavvio della VM, lo script di avvio viene eseguito come
LocalSystem
e può quindi utilizzare le autorizzazioni del service account collegato per accedere ad altre risorse.
Console
Passaggio di uno script di avvio archiviato in Cloud Storage a una nuova VM
Nella Trusted Cloud console, vai alla pagina Crea un'istanza.
Per Disco di avvio, seleziona Cambia e fai quanto segue:
- Nella scheda Immagini pubbliche, scegli un sistema operativo Windows Server.
- Fai clic su Seleziona.
Nella sezione Identità e accesso API, seleziona un account di servizio con il ruolo Visualizzatore oggetti Storage.
Espandi la sezione Opzioni avanzate e segui questi passaggi:
- Espandi la sezione Gestione.
Nella sezione Metadati, aggiungi i valori per quanto segue:
Chiave: la chiave dei metadati. Specifica la chiave di metadati
windows-startup-script-url
in modo che lo script venga eseguito a ogni avvio dopo l'avvio iniziale.Valore: il valore dei metadati. Imposta il percorso Cloud Storage del file dello script di avvio utilizzando uno dei seguenti formati:
- URL autenticato:
https://storage.googleapis.com/BUCKET/FILE
- URI gcloud storage:
gs://BUCKET/FILE
Sostituisci quanto segue:
- BUCKET: il nome del bucket che contiene il file dello script di avvio
- FILE: il nome del file dello script di avvio
- URL autenticato:
Per creare la VM, fai clic su Crea.
Passaggio di uno script di avvio archiviato in Cloud Storage a una VM esistente
Nella console Trusted Cloud , vai alla pagina Istanze VM.
Fai clic sul nome della VM.
Fai clic su Modifica.
In Metadati, aggiungi i seguenti valori:
- URL autenticato:
https://storage.googleapis.com/BUCKET/FILE
- URI gcloud storage:
gs://BUCKET/FILE
- URL autenticato:
Verifica dello script di avvio
Visualizza l'IP esterno in un browser web per verificare che lo script di avvio abbia creato il sito web. Potresti dover attendere circa 10 minuti per il completamento dello script di avvio di esempio.
gcloud (Bash)
Passaggio di uno script di avvio archiviato in Cloud Storage a una nuova VM
Passa uno script di avvio archiviato in Cloud Storage a una VM Windows Server utilizzando il seguente comando
gcloud compute instances create
. Per il valore del flag--scopes
, utilizzastorage-ro
in modo che la VM possa accedere 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
Sostituisci quanto segue:
- VM_NAME: il nome della VM.
-
CLOUD_STORAGE_URL: i valori dei metadati. Imposta la posizione del file dello script di avvio utilizzando uno dei seguenti formati:
-
URL autenticato:
https://storage.googleapis.com/BUCKET/FILE
-
URI gcloud storage:
gs://BUCKET/FILE
-
URL autenticato:
Passa uno script di avvio archiviato in Cloud Storage a una VM esistente utilizzando il seguente comando
gcloud compute instances add-metadata
:gcloud compute instances add-metadata VM_NAME \ --metadata=windows-startup-script-url=CLOUD_STORAGE_URL
Sostituisci quanto segue:
- VM_NAME: il nome della VM.
-
CLOUD_STORAGE_URL: i valori dei metadati. Imposta la posizione del file dello script di avvio utilizzando uno dei seguenti formati:
-
URL autenticato:
https://storage.googleapis.com/BUCKET/FILE
-
URI gcloud storage:
gs://BUCKET/FILE
-
URL autenticato:
Visualizza l'IP esterno in un browser web per verificare che lo script di avvio abbia creato il sito web. Potresti dover attendere circa 10 minuti per il completamento dello script di avvio di esempio.
gcloud (prompt dei comandi)
Passaggio di uno script di avvio archiviato in Cloud Storage a una nuova VM
Passa uno script di avvio archiviato in Cloud Storage a una VM Windows Server utilizzando il seguente comando
gcloud compute instances create
. Per il valore del flag--scopes
, utilizzastorage-ro
in modo che la VM possa accedere 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
Sostituisci quanto segue:
- VM_NAME: il nome della VM.
-
CLOUD_STORAGE_URL: i valori dei metadati. Imposta la posizione del file dello script di avvio utilizzando uno dei seguenti formati:
-
URL autenticato:
https://storage.googleapis.com/BUCKET/FILE
-
URI gcloud storage:
gs://BUCKET/FILE
-
URL autenticato:
Passa uno script di avvio archiviato in Cloud Storage a una VM esistente utilizzando il seguente comando
gcloud compute instances add-metadata
:gcloud compute instances add-metadata VM_NAME ^ --metadata=windows-startup-script-url=CLOUD_STORAGE_URL
Sostituisci quanto segue:
- VM_NAME: il nome della VM.
-
CLOUD_STORAGE_URL: i valori dei metadati. Imposta la posizione del file dello script di avvio utilizzando uno dei seguenti formati:
-
URL autenticato:
https://storage.googleapis.com/BUCKET/FILE
-
URI gcloud storage:
gs://BUCKET/FILE
-
URL autenticato:
Visualizza l'IP esterno in un browser web per verificare che lo script di avvio abbia creato il sito web. Potresti dover attendere circa 10 minuti per il completamento dello script di avvio di esempio.
gcloud (PowerShell)
Passaggio di uno script di avvio archiviato in Cloud Storage a una nuova VM
Passa uno script di avvio archiviato in Cloud Storage a una VM Windows Server utilizzando il seguente comando
gcloud compute instances create
. Per il valore del flag--scopes
, utilizzastorage-ro
in modo che la VM possa accedere 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
Sostituisci quanto segue:
- VM_NAME: il nome della VM.
-
CLOUD_STORAGE_URL: i valori dei metadati. Imposta la posizione del file dello script di avvio utilizzando uno dei seguenti formati:
-
URL autenticato:
https://storage.googleapis.com/BUCKET/FILE
-
URI gcloud storage:
gs://BUCKET/FILE
-
URL autenticato:
Passa uno script di avvio archiviato in Cloud Storage a una VM esistente utilizzando il seguente comando
gcloud compute instances add-metadata
:gcloud compute instances add-metadata VM_NAME ` --metadata=windows-startup-script-url=CLOUD_STORAGE_URL
Sostituisci quanto segue:
- VM_NAME: il nome della VM.
-
CLOUD_STORAGE_URL: i valori dei metadati. Imposta la posizione del file dello script di avvio utilizzando uno dei seguenti formati:
-
URL autenticato:
https://storage.googleapis.com/BUCKET/FILE
-
URI gcloud storage:
gs://BUCKET/FILE
-
URL autenticato:
Visualizza l'IP esterno in un browser web per verificare che lo script di avvio abbia creato il sito web. Potresti dover attendere circa 10 minuti per il completamento dello script di avvio di esempio.
REST
Passaggio di uno script di avvio archiviato in Cloud Storage a una nuova VM
Passa uno script di avvio archiviato in Cloud Storage a una VM Windows Server utilizzando il seguente
instances.insert
metodo. Al camposcopes
, aggiungihttps://www.googleapis.com/auth/devstorage.read_only
in modo che la VM possa accedere 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" }, ... ] }, ... }
Sostituisci quanto segue:
PROJECT_ID: l'ID progetto
ZONE: la zona in cui creare la VM.
CLOUD_STORAGE_URL: il valore dei metadati. Imposta il percorso Cloud Storage del file dello script di avvio utilizzando uno dei seguenti formati:
- URL autenticato:
https://storage.googleapis.com/BUCKET/FILE
- URI gcloud storage:
gs://BUCKET/FILE
- URL autenticato:
Passaggio di uno script di avvio archiviato in Cloud Storage a una VM esistente
Ottieni il valore
metadata.fingerprint
della VM utilizzando il metodoinstances.get
:GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME
Sostituisci quanto segue:
PROJECT_ID: l'ID del progetto in cui esiste la VM.
ZONE: la zona della VM.
VM_NAME: il nome della VM
Trasmetti lo script di avvio utilizzando il valore
fingerprint
, insieme alla chiave e al valore dei metadati per lo script di avvio, in una chiamata al metodoinstances.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" } ], ... }
Sostituisci quanto segue:
PROJECT_ID: l'ID del progetto in cui esiste la VM.
ZONE: la zona della VM.
VM_NAME: il nome della VM.
FINGERPRINT: il valore
metadata.fingerprint
ottenuto utilizzando il metodoinstances.get
.CLOUD_STORAGE_URL: il valore dei metadati. Imposta il percorso Cloud Storage del file dello script di avvio utilizzando uno dei seguenti formati:
- URL autenticato:
https://storage.googleapis.com/BUCKET/FILE
- URI gcloud storage:
gs://BUCKET/FILE
- URL autenticato:
Verifica dello script di avvio
Visualizza l'IP esterno in un browser web per verificare che lo script di avvio abbia creato il sito web. Potresti dover attendere circa 10 minuti per il completamento dello script di avvio di esempio.
Accedere ai metadati da uno script di avvio di Windows
In uno script di avvio puoi accedere ai valori dei metadati. Ad esempio, puoi utilizzare lo stesso script per più VM e parametrizzare ogni script singolarmente passando valori di metadati diversi a ogni VM.
Per accedere a un valore di metadati personalizzato da uno script di avvio:
Crea uno script di avvio che esegue query sul valore di una chiave di metadati. Ad esempio, il seguente script di avvio di PowerShell (
.ps1
) esegue una query sul valore della chiave di metadatifoo
.$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
Imposta il valore della chiave di metadati
foo
durante la creazione di una VM utilizzando il seguente comandogcloud compute instances create
. Per questo esempio, lo script di avvio viene passato alla VM da un file locale.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
Sostituisci quanto segue:
VM_NAME: il nome della VM
FILE_PATH: il percorso relativo del file dello script di avvio
Per ulteriori informazioni su come specificare una coppia chiave-valore dei metadati, vedi Imposta e rimuovi i metadati personalizzati.
Visualizza l'IP esterno in un browser web per verificare che lo script di avvio restituisca il valore di
foo
. Potresti dover attendere circa 10 minuti per il completamento dello script di avvio di esempio.
Riavvio di uno script di avvio di Windows
Riavvia uno script di avvio su una VM Windows procedendo nel seguente modo:
Esegui questo comando:
C:\Program Files\Google\Compute Engine\metadata_scripts\run_startup_scripts.cmd
Visualizzazione dell'output di uno script di avvio di Windows
Visualizza l'output di uno script di avvio di Windows Server utilizzando uno dei seguenti comandi e controllando la presenza di eventi
GCEMetadataScripts
:Porta seriale 1 nella console Trusted Cloud . Per saperne di più, consulta Visualizzazione dell'output della porta seriale.
Log applicazioni del Visualizzatore eventi di Windows.
IAP Desktop da una workstation Windows. Per saperne di più, consulta il repository GoogleCloudPlatform/iap-desktop su GitHub.
Passaggi successivi
Scopri come utilizzare gli script di avvio nelle VM Linux.
Scopri come aggiungere uno script di arresto.
Scopri di più sui metadati della VM.
Scopri come eseguire script di avvio su VM Windows e aggiungere un dominio Managed Microsoft AD.
Salvo quando diversamente specificato, i contenuti di questa pagina sono concessi in base alla licenza Creative Commons Attribution 4.0, mentre gli esempi di codice sono concessi in base alla licenza Apache 2.0. Per ulteriori dettagli, consulta le norme del sito di Google Developers. Java è un marchio registrato di Oracle e/o delle sue consociate.
Ultimo aggiornamento 2025-07-31 UTC.
[[["Facile da capire","easyToUnderstand","thumb-up"],["Il problema è stato risolto","solvedMyProblem","thumb-up"],["Altra","otherUp","thumb-up"]],[["Mancano le informazioni di cui ho bisogno","missingTheInformationINeed","thumb-down"],["Troppo complicato/troppi passaggi","tooComplicatedTooManySteps","thumb-down"],["Obsoleti","outOfDate","thumb-down"],["Problema di traduzione","translationIssue","thumb-down"],["Problema relativo a esempi/codice","samplesCodeIssue","thumb-down"],["Altra","otherDown","thumb-down"]],["Ultimo aggiornamento 2025-07-31 UTC."],[[["Startup scripts for Windows VMs are files that execute during the VM's boot process and can be used to automate tasks, such as installing software or configuring settings, and they support `.cmd`, `.ps1`, or `.bat` file formats."],["Windows startup scripts are run by Task Scheduler as the `LocalSystem` account, after being copied to the VM by Compute Engine, ensuring the scripts execute with necessary privileges."],["Metadata keys, such as `windows-startup-script-ps1`, `windows-startup-script-cmd`, `windows-startup-script-bat`, and `windows-startup-script-url`, determine the type and location (local or Cloud Storage) of the startup script and their order of execution."],["Startup scripts can be passed directly to the VM, uploaded from a local file, or accessed from Cloud Storage, allowing for flexibility in how scripts are managed and applied."],["Startup scripts can be customized by accessing metadata values, enabling the use of a single script across multiple VMs with different configurations set through metadata."]]],[]] -