Ein Startskript ist eine Datei, die während des Startvorgangs einer VM-Instanz Aufgaben ausführt. Startskripts können für alle VMs in einem Projekt oder für eine einzelne VM gelten. Durch Metadaten auf VM-Ebene angegebene Startskripts überschreiben Startskripts, die durch Metadaten auf Projektebene angegeben werden, und Startskripts werden nur ausgeführt, wenn ein Netzwerk verfügbar ist. In diesem Dokument wird beschrieben, wie Startskripts auf Windows Server-VM-Instanzen verwendet werden. Informationen zum Hinzufügen eines Startskripts auf Projektebene finden Sie unter gcloud compute project-info add-metadata
.
Windows-Startskripts müssen Command Shell-Skripts (.cmd
), PowerShell-Skripts (.ps1
) oder Batch-Dateiskripts (.bat
) sein und die entsprechende Dateiendung haben.
Wenn Sie mithilfe eines der Verfahren in diesem Dokument ein Startskript angeben, führt Compute Engine folgende Schritte aus:
Kopiert das Startskript auf die VM
Task Scheduler führt das Startskript als
LocalSystem
-Konto aus, wenn die VM gebootet wird
Informationen zu den verschiedenen Aufgaben in Bezug auf Startskripts und wann die Ausführung der jeweiligen Aufgaben stattfinden soll, finden Sie im Übersichtsdokument für Startskripts.
Hinweise
- Lesen Sie die Übersicht über Startskripts.
- Grundlagen von VM-Metadaten
-
Richten Sie die Authentifizierung ein, falls Sie dies noch nicht getan haben.
Bei der Authentifizierung wird Ihre Identität für den Zugriff auf Google Cloud Dienste und APIs überprüft.
Zur Ausführung von Code oder Beispielen aus einer lokalen Entwicklungsumgebung können Sie sich bei Compute Engine authentifizieren. Wählen Sie dazu eine der folgenden Optionen aus:
Select the tab for how you plan to use the samples on this page:
When you use the Google Cloud console to access Google Cloud services and APIs, you don't need to set up authentication.
-
Install the Google Cloud CLI, then initialize it by running the following command:
gcloud init
- Set a default region and zone.
REST
Verwenden Sie die von der gcloud CLI bereitgestellten Anmeldedaten, um die REST API-Beispiele auf dieser Seite in einer lokalen Entwicklungsumgebung zu verwenden.
Install the Google Cloud CLI, then initialize it by running the following command:
gcloud init
Weitere Informationen finden Sie unter Für die Verwendung von REST authentifizieren in der Dokumentation zur Google Cloud-Authentifizierung.
-
Metadatenschlüssel für Windows-Startskripts
Ein Startskript wird von einem durch einen Metadatenschlüssel angegebenen Speicherort an eine VM übergeben. Ein Metadatenschlüssel gibt an, ob das Startskript lokal, in Cloud Storage gespeichert oder direkt an die VM übergeben wird. Der verwendete Metadatenschlüssel kann auch von der Größe oder dem Dateityp des Startskripts abhängen.
Die folgende Tabelle enthält die Metadatenschlüssel, die Sie für Windows-Startskripts verwenden können. Basierend auf dem Speicherort, der Größe und dem Dateityp des Startskripts finden Sie Informationen dazu, welche Schlüssel zu verwenden sind.
Metadatenschlüssel | Nutzen für |
---|---|
sysprep-specialize-script-ps1 |
Übergabe eines nicht signierten PowerShell-Skripts, das lokal gespeichert oder direkt hinzugefügt wird und eine Größe von bis zu 256 KB hat |
sysprep-specialize-script-cmd |
Übergabe eines Befehls-Shell-Skripts, das lokal gespeichert oder direkt hinzugefügt wird und bis zu 256 KB groß ist |
sysprep-specialize-script-bat |
Übergabe eines Batchdateiskripts, das lokal gespeichert oder direkt hinzugefügt wird und eine Größe von bis zu 256 KB hat |
sysprep-specialize-script-url |
Übergabe eines Batchdatei-, eines Befehls-Shells-, eines signierten oder nicht signierten PowerShell-Skripts oder ausführbarer Datei, das bzw. die in Cloud Storage gespeichert ist und eine Größe von mehr als 256 KB hat |
windows-startup-script-ps1 |
Übergabe eines nicht signierten PowerShell-Skripts, das lokal gespeichert oder direkt hinzugefügt wird und eine Größe von bis zu 256 KB hat |
windows-startup-script-cmd |
Übergabe eines Befehls-Shell-Skripts, das lokal gespeichert oder direkt hinzugefügt wird und bis zu 256 KB groß ist |
windows-startup-script-bat |
Übergabe eines Batchdateiskripts, das lokal gespeichert oder direkt hinzugefügt wird und eine Größe von bis zu 256 KB hat |
windows-startup-script-url |
Übergabe eines Batchdatei-, eines Befehls-Shells-, eines signierten oder nicht signierten PowerShell-Skripts oder ausführbarer Datei, das bzw. die in Cloud Storage gespeichert ist und eine Größe von mehr als 256 KB hat |
Weitere Informationen zur Ausführungsreihenfolge der verschiedenen Startskripttypen finden Sie im Repository GoogleCloudPlatform/compute-image-windows auf GitHub.
Reihenfolge der Ausführung von Windows-Startskripts
Sie können mehrere Startskripts verwenden. Startskripts oder direkt hinzugefügte Startskripts werden vor in Cloud Storage gespeicherten Startskripts ausgeführt. Der Typ der Datei, die das Skript enthält, wirkt sich auch auf die Ausführungsreihenfolge aus. Die folgende Tabelle zeigt basierend auf dem Metadatenschlüssel die Reihenfolge der Ausführung von Windows-Startskripts.
Metadatenschlüssel | Ausführungsreihenfolge |
---|---|
sysprep-specialize-script-ps1 |
Als Erstes beim ersten Start |
sysprep-specialize-script-cmd |
Als Zweites während des ersten Starts |
sysprep-specialize-script-bat |
Als Drittes beim ersten Start |
sysprep-specialize-script-url |
Als Viertes beim ersten Start |
windows-startup-script-ps1 |
Als Erstes bei jedem Start nach dem ersten Start |
windows-startup-script-cmd |
Als Zweites während jedem Start nach dem ersten Start |
windows-startup-script-bat |
Als Drittes bei jedem Start nach dem ersten Start |
windows-startup-script-url |
Als Viertes bei jedem Start nach dem ersten Start |
Windows-Startskript direkt übergeben
Erforderliche Berechtigungen für diese Aufgabe
Zum Ausführen dieser Aufgabe benötigen Sie die folgenden Berechtigungen:
- Alle Berechtigungen, die zum Erstellen einer neuen Instanz erforderlich sind.
-
compute.instances.setMetadata
auf der VM.
Übergeben des Inhalts einer Batchdatei, einer Befehls-Shell oder eines nicht signierten PowerShell-Startskripts direkt an eine Windows Server-VM. Die folgenden Verfahren zeigen, wie Sie ein nicht signiertes PowerShell-Skript übergeben.
Windows-Startskript direkt an eine neue VM übergeben
Rufen Sie in der Google Cloud Console die Seite Instanz erstellen auf.
Wählen Sie für Bootlaufwerk die Option Ändern aus und gehen Sie so vor:
- Wählen Sie auf dem Tab Öffentliche Images ein Windows Server-Betriebssystem aus.
- Klicken Sie auf Auswählen.
Maximieren Sie den Abschnitt Erweiterte Optionen und tun Sie Folgendes:
- Maximieren Sie den Bereich Verwaltung.
Klicken Sie im Abschnitt Metadaten auf Element hinzufügen, um Schlüssel und Wert festzulegen:
Schlüssel: Legen Sie
windows-startup-script-ps1
fest.Startskripts, die mithilfe von Metadatenschlüsseln an die VM übergeben werden, die mit
windows-startup-script
beginnen, werden bei jedem Start nach dem ersten Start der VM ausgeführt.Wert: Fügen Sie das folgende Skript hinzu:
# 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
Klicken Sie auf Erstellen.
Windows-Startskript direkt an eine vorhandene VM übergeben
Rufen Sie in der Google Cloud Console die Seite VM-Instanzen auf.
Klicken Sie auf den Namen der VM.
Klicken Sie auf Bearbeiten.
Geben Sie unter Metadaten Folgendes an:
key
:windows-startup-script-ps1
value
: der Inhalt des Startskripts
Startskript überprüfen
Rufen Sie nach dem Start der VM die externe IP-Adresse in einem Webbrowser auf, um zu prüfen, ob die Website vom Startskript erstellt wurde. Es kann etwa zehn Minuten dauern, bis das Beispiel-Startskript abgeschlossen ist.
Windows-Startskript direkt an eine neue VM übergeben
Übergeben Sie mit dem folgenden gcloud compute
instances create
-Befehl den Inhalt eines Startskripts direkt an eine Windows Server-VM, wenn Sie es erstellen:
gcloud compute instances createVM_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'
Ersetzen Sie VM_NAME durch den Namen der VM.
Windows-Startskript direkt an eine vorhandene VM übergeben
Fügen Sie das Startskript mit dem folgenden gcloud compute instances add-metadata
-Befehl direkt einer vorhandenen VM hinzu:
gcloud compute instances add-metadataVM_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'
Ersetzen Sie VM_NAME durch den Namen der VM.
Startskript überprüfenRufen Sie nach dem Start der VM die externe IP-Adresse in einem Webbrowser auf, um zu prüfen, ob die Website vom Startskript erstellt wurde. Es kann etwa zehn Minuten dauern, bis das Beispiel-Startskript abgeschlossen ist.
Windows-Startskript direkt an eine neue VM übergeben
Übergeben Sie mit dem folgenden gcloud compute
instances create
-Befehl den Inhalt eines Startskripts direkt an eine Windows Server-VM, wenn Sie es erstellen:
gcloud compute instances createVM_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'
Ersetzen Sie VM_NAME durch den Namen der VM.
Windows-Startskript direkt an eine vorhandene VM übergeben
Fügen Sie das Startskript mit dem folgenden gcloud compute instances add-metadata
-Befehl direkt einer vorhandenen VM hinzu:
gcloud compute instances add-metadataVM_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'
Ersetzen Sie VM_NAME durch den Namen der VM.
Startskript überprüfenRufen Sie nach dem Start der VM die externe IP-Adresse in einem Webbrowser auf, um zu prüfen, ob die Website vom Startskript erstellt wurde. Es kann etwa zehn Minuten dauern, bis das Beispiel-Startskript abgeschlossen ist.
Windows-Startskript direkt an eine neue VM übergeben
Übergeben Sie mit dem folgenden gcloud compute
instances create
-Befehl den Inhalt eines Startskripts direkt an eine Windows Server-VM, wenn Sie es erstellen:
gcloud compute instances createVM_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'
Ersetzen Sie VM_NAME durch den Namen der VM.
Windows-Startskript direkt an eine vorhandene VM übergeben
Fügen Sie das Startskript mit dem folgenden gcloud compute instances add-metadata
-Befehl direkt einer vorhandenen VM hinzu:
gcloud compute instances add-metadataVM_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'
Ersetzen Sie VM_NAME durch den Namen der VM.
Startskript überprüfenRufen Sie nach dem Start der VM die externe IP-Adresse in einem Webbrowser auf, um zu prüfen, ob die Website vom Startskript erstellt wurde. Es kann etwa zehn Minuten dauern, bis das Beispiel-Startskript abgeschlossen ist.
Windows-Startskript direkt an eine neue VM übergeben
Übergeben Sie mit dem folgenden instances.insert
-Befehl den Inhalt eines Startskripts direkt an eine Windows Server-VM, wenn Sie es erstellen:
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" } ] }, ... }
Dabei gilt:
PROJECT_ID: die Projekt-ID
ZONE ist die Zone, in der die neue VM erstellt werden soll.
Windows-Startskript direkt an eine vorhandene VM übergeben
Rufen Sie den Wert
tags.fingerprint
der VM mit der Methodeinstances.get
ab.GET https://compute.googleapis.com/compute/v1/projects/
PROJECT_ID /zones/ZONE /instances/VM_NAME Dabei gilt:
PROJECT_ID: die Projekt-ID
ZONE: Zone der VM
VM_NAME: die Zone der VM
Übergeben Sie das Startskript mithilfe des Werts
fingerprint
zusammen mit dem Metadatenschlüssel und dem Wert für das Startskript in einem Aufruf der Methodeinstances.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" } ], ... }Dabei gilt:
PROJECT_ID: die Projekt-ID
ZONE: Zone der VM
VM_NAME: die Zone der VM
FINGERPRINT: Der Wert für
tags.fingerprint
, der mit der Methodeinstances.get
abgerufen wurde
Startskript überprüfen
Rufen Sie nach dem Start der VM die externe IP-Adresse in einem Webbrowser auf, um zu prüfen, ob die Website vom Startskript erstellt wurde. Es kann etwa zehn Minuten dauern, bis das Beispiel-Startskript abgeschlossen ist.
Windows-Startskript aus einer lokalen Datei übergeben
Erforderliche Berechtigungen für diese Aufgabe
Zum Ausführen dieser Aufgabe benötigen Sie die folgenden Berechtigungen:
- Alle Berechtigungen, die zum Erstellen einer neuen Instanz erforderlich sind.
-
compute.instances.setMetadata
auf der VM.
Sie können ein Startskript in einer lokalen Batchdatei, in einem Befehls-Shell-Skript oder in einem nicht signierten PowerShell-Skript auf Ihrer Workstation speichern und die lokale Datei beim Erstellen als Metadaten an eine VM übergeben. Auf VMs gespeicherte Dateien können nicht als Startskripts verwendet werden.
Bevor Sie ein Windows-Startskript aus einer lokalen Datei an eine VM übergeben, gehen Sie so vor:
Erstellen Sie eine lokale Datei (
.ps1
), um das Startskript zu speichern.Notieren Sie sich den relativen Pfad von der gcloud CLI zum Startskript.
Fügen Sie der Datei das folgende Startskript hinzu:
# 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
Windows-Startskript aus einer lokalen Datei an eine neue VM übergeben
Erstellen Sie eine VM und übergeben Sie den Inhalt einer lokalen Datei, die als Startskript verwendet werden soll, mit dem Befehl gcloud compute instances create
zusammen mit dem Flag --metadata-from-file
:
gcloud compute instances createVM_NAME \ --image-project=windows-cloud \ --image-family=windows-2019-core \ --metadata-from-file=windows-startup-script-ps1=FILE_PATH
Dabei gilt:
- VM_NAME: Der Name der VM
- FILE_PATH: der relative Pfad zur Startskriptdatei
Verwenden Sie folgenden gcloud compute instances add-metadata
-Befehl, um ein Startskript aus einer lokalen Datei an eine vorhandene VM zu übergeben:
gcloud compute instances add-metadataVM_NAME \ --metadata-from-file=windows-startup-script-ps1=FILE_PATH
Dabei gilt:
- VM_NAME: Der Name der VM
- FILE_PATH: der relative Pfad zur Startskriptdatei
Rufen Sie die externe IP-Adresse in einem Webbrowser auf, um zu prüfen, ob das Startskript die Website erstellt hat. Es kann etwa zehn Minuten dauern, bis das Beispiel-Startskript abgeschlossen ist.
Windows-Startskript aus einer lokalen Datei an eine neue VM übergeben
Erstellen Sie eine VM und übergeben Sie den Inhalt einer lokalen Datei, die als Startskript verwendet werden soll, mit dem Befehl gcloud compute instances create
zusammen mit dem Flag --metadata-from-file
:
gcloud compute instances createVM_NAME ^ --image-project=windows-cloud ^ --image-family=windows-2019-core ^ --metadata-from-file=windows-startup-script-ps1=FILE_PATH
Dabei gilt:
- VM_NAME: Der Name der VM
- FILE_PATH: der relative Pfad zur Startskriptdatei
Verwenden Sie folgenden gcloud compute instances add-metadata
-Befehl, um ein Startskript aus einer lokalen Datei an eine vorhandene VM zu übergeben:
gcloud compute instances add-metadataVM_NAME ^ --metadata-from-file=windows-startup-script-ps1=FILE_PATH
Dabei gilt:
- VM_NAME: Der Name der VM
- FILE_PATH: der relative Pfad zur Startskriptdatei
Rufen Sie die externe IP-Adresse in einem Webbrowser auf, um zu prüfen, ob das Startskript die Website erstellt hat. Es kann etwa zehn Minuten dauern, bis das Beispiel-Startskript abgeschlossen ist.
Windows-Startskript aus einer lokalen Datei an eine neue VM übergeben
Erstellen Sie eine VM und übergeben Sie den Inhalt einer lokalen Datei, die als Startskript verwendet werden soll, mit dem Befehl gcloud compute instances create
zusammen mit dem Flag --metadata-from-file
:
gcloud compute instances createVM_NAME ` --image-project=windows-cloud ` --image-family=windows-2019-core ` --metadata-from-file=windows-startup-script-ps1=FILE_PATH
Dabei gilt:
- VM_NAME: Der Name der VM
- FILE_PATH: der relative Pfad zur Startskriptdatei
Verwenden Sie folgenden gcloud compute instances add-metadata
-Befehl, um ein Startskript aus einer lokalen Datei an eine vorhandene VM zu übergeben:
gcloud compute instances add-metadataVM_NAME ` --metadata-from-file=windows-startup-script-ps1=FILE_PATH
Dabei gilt:
- VM_NAME: Der Name der VM
- FILE_PATH: der relative Pfad zur Startskriptdatei
Rufen Sie die externe IP-Adresse in einem Webbrowser auf, um zu prüfen, ob das Startskript die Website erstellt hat. Es kann etwa zehn Minuten dauern, bis das Beispiel-Startskript abgeschlossen ist.
Windows-Startskript aus Cloud Storage übergeben
Erforderliche Berechtigungen für diese Aufgabe
Zum Ausführen dieser Aufgabe benötigen Sie die folgenden Berechtigungen:
- Alle Berechtigungen, die zum Erstellen einer neuen Instanz erforderlich sind.
-
compute.instances.setMetadata
auf der VM. - Berechtigung zum Zugriff auf den Bucket und die Skriptdatei in Cloud Storage. Überprüfen Sie die Zugriffssteuerung für den Bucket und die Datei, um sicherzugehen, dass Sie die erforderlichen Berechtigungen haben.
Sie können ein Startskript als Batchdatei, Befehls-Shell-Skript, signiertes oder unsigniertes PowerShell-Skript oder ausführbare Datei in Cloud Storage speichern und es beim Erstellen an eine VM übergeben. Nachdem Sie Cloud Storage ein Startskript hinzugefügt haben, haben Sie eine URL, mit der Sie beim Erstellen einer VM auf das Startskript verweisen können.
Führen Sie die folgenden Schritte aus, bevor Sie ein Startskript aus einem Cloud Storage-Bucket hinzufügen:
Erstellen Sie eine Datei, in der das Startskript gespeichert wird. In diesem Beispiel wird eine PowerShell-Datei (
.ps1
) verwendet.Fügen Sie der Datei das folgende PowerShell-Skript hinzu, das einen Webserver installiert und eine einfache Webseite erstellt:
# 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
Auswirkungen auf die Sicherheit
Standardmäßig können Projektinhaber und Projektbearbeiter auf Cloud Storage-Dateien im selben Projekt zugreifen, außer es gibt explizite Zugriffssteuerungen, die dies verhindern.
Wenn der Cloud Storage-Bucket oder das Cloud Storage-Objekt weniger sicher ist als Metadaten, besteht ein Risiko der Rechteausweitung, wenn das Startskript geändert wird und die VM neu gestartet wird. Dies liegt daran, dass das Startskript nach dem Neustart der VM als
LocalSystem
ausgeführt wird und dann mit den Berechtigungen des angehängten Dienstkontos auf andere Ressourcen zugreifen kann.
In Cloud Storage gespeichertes Startskript an eine neue VM übergeben
Rufen Sie in der Google Cloud Console die Seite Instanz erstellen auf.
Wählen Sie für Bootlaufwerk die Option Ändern aus und gehen Sie so vor:
- Wählen Sie auf dem Tab Öffentliche Images ein Windows Server-Betriebssystem aus.
- Klicken Sie auf Auswählen.
Wählen Sie im Abschnitt Identität und API-Zugriff ein Dienstkonto mit der Rolle Storage-Objekt-Betrachter aus.
Maximieren Sie den Abschnitt Erweiterte Optionen und gehen Sie dann so vor:
- Maximieren Sie den Bereich Verwaltung.
Fügen Sie im Abschnitt Metadaten Werte für Folgendes hinzu:
Key (Schlüssel): Metadatenschlüssel Geben Sie den Metadatenschlüssel
windows-startup-script-url
an, damit das Skript bei jedem Start nach dem ersten Start ausgeführt wird.Wert: Der Metadatenwert. Legen Sie dafür den Cloud Storage-Speicherort der Startskriptdatei in einem der folgenden Formate fest:
- Authentifizierte URL:
https://storage.googleapis.com/BUCKET/FILE
- gcloud-Speicher-URI:
gs://BUCKET/FILE
Ersetzen Sie Folgendes:
- BUCKET ist der Name des Buckets, der die Startskriptdatei enthält.
- FILE: Der Name der Startskriptdatei.
- Authentifizierte URL:
Klicken Sie auf Erstellen, um die VM zu erstellen.
In Cloud Storage gespeichertes Startskript an eine vorhandene VM übergeben
Rufen Sie in der Google Cloud Console die Seite VM-Instanzen auf.
Klicken Sie auf den Namen der VM.
Klicken Sie auf Bearbeiten.
Fügen Sie unter Metadaten die folgenden Werte hinzu:
- Authentifizierte URL:
https://storage.googleapis.com/BUCKET/FILE
- gcloud-Speicher-URI:
gs://BUCKET/FILE
- Authentifizierte URL:
Startskript überprüfen
Rufen Sie die externe IP-Adresse in einem Webbrowser auf, um zu prüfen, ob das Startskript die Website erstellt hat. Es kann etwa zehn Minuten dauern, bis das Beispiel-Startskript abgeschlossen ist.
In Cloud Storage gespeichertes Startskript an eine neue VM übergeben
Mit dem Befehl gcloud compute instances create
übergeben Sie ein in Cloud Storage gespeichertes Startskript an eine Windows Server-VM. Verwenden Sie für den Wert des Flags --scopes
storage-ro
, damit die VM auf Cloud Storage zugreifen kann.
gcloud compute instances createVM_NAME \ --image-project=windows-cloud \ --image-family=windows-2019-core \ --scopes=storage-ro \ --metadata=windows-startup-script-url=CLOUD_STORAGE_URL
Dabei gilt:
- VM_NAME: der Name der VM.
-
CLOUD_STORAGE_URL: die Metadatenwerte. Legen Sie den Speicherort der Startskriptdatei in einem der folgenden Formate fest:
-
Authentifizierte URL:
https://storage.googleapis.com/BUCKET/FILE
-
gcloud-Speicher-URI:
gs://BUCKET/FILE
-
Authentifizierte URL:
Übergeben Sie ein Startskript, das in Cloud Storage gespeichert ist, mit dem folgenden gcloud compute instances add-metadata
-Befehl an eine vorhandene VM:
gcloud compute instances add-metadataVM_NAME \ --metadata=windows-startup-script-url=CLOUD_STORAGE_URL
Dabei gilt:
- VM_NAME: der Name der VM.
-
CLOUD_STORAGE_URL: die Metadatenwerte. Legen Sie den Speicherort der Startskriptdatei in einem der folgenden Formate fest:
-
Authentifizierte URL:
https://storage.googleapis.com/BUCKET/FILE
-
gcloud-Speicher-URI:
gs://BUCKET/FILE
-
Authentifizierte URL:
Rufen Sie die externe IP-Adresse in einem Webbrowser auf, um zu prüfen, ob das Startskript die Website erstellt hat. Es kann etwa zehn Minuten dauern, bis das Beispiel-Startskript abgeschlossen ist.
In Cloud Storage gespeichertes Startskript an eine neue VM übergeben
Mit dem Befehl gcloud compute instances create
übergeben Sie ein in Cloud Storage gespeichertes Startskript an eine Windows Server-VM. Verwenden Sie für den Wert des Flags --scopes
storage-ro
, damit die VM auf Cloud Storage zugreifen kann.
gcloud compute instances createVM_NAME ^ --image-project=windows-cloud ^ --image-family=windows-2019-core ^ --scopes=storage-ro ^ --metadata=windows-startup-script-url=CLOUD_STORAGE_URL
Dabei gilt:
- VM_NAME: der Name der VM.
-
CLOUD_STORAGE_URL: die Metadatenwerte. Legen Sie den Speicherort der Startskriptdatei in einem der folgenden Formate fest:
-
Authentifizierte URL:
https://storage.googleapis.com/BUCKET/FILE
-
gcloud-Speicher-URI:
gs://BUCKET/FILE
-
Authentifizierte URL:
Übergeben Sie ein Startskript, das in Cloud Storage gespeichert ist, mit dem folgenden gcloud compute instances add-metadata
-Befehl an eine vorhandene VM:
gcloud compute instances add-metadataVM_NAME ^ --metadata=windows-startup-script-url=CLOUD_STORAGE_URL
Dabei gilt:
- VM_NAME: der Name der VM.
-
CLOUD_STORAGE_URL: die Metadatenwerte. Legen Sie den Speicherort der Startskriptdatei in einem der folgenden Formate fest:
-
Authentifizierte URL:
https://storage.googleapis.com/BUCKET/FILE
-
gcloud-Speicher-URI:
gs://BUCKET/FILE
-
Authentifizierte URL:
Rufen Sie die externe IP-Adresse in einem Webbrowser auf, um zu prüfen, ob das Startskript die Website erstellt hat. Es kann etwa zehn Minuten dauern, bis das Beispiel-Startskript abgeschlossen ist.
In Cloud Storage gespeichertes Startskript an eine neue VM übergeben
Mit dem Befehl gcloud compute instances create
übergeben Sie ein in Cloud Storage gespeichertes Startskript an eine Windows Server-VM. Verwenden Sie für den Wert des Flags --scopes
storage-ro
, damit die VM auf Cloud Storage zugreifen kann.
gcloud compute instances createVM_NAME ` --image-project=windows-cloud ` --image-family=windows-2019-core ` --scopes=storage-ro ` --metadata=windows-startup-script-url=CLOUD_STORAGE_URL
Dabei gilt:
- VM_NAME: der Name der VM.
-
CLOUD_STORAGE_URL: die Metadatenwerte. Legen Sie den Speicherort der Startskriptdatei in einem der folgenden Formate fest:
-
Authentifizierte URL:
https://storage.googleapis.com/BUCKET/FILE
-
gcloud-Speicher-URI:
gs://BUCKET/FILE
-
Authentifizierte URL:
Übergeben Sie ein Startskript, das in Cloud Storage gespeichert ist, mit dem folgenden gcloud compute instances add-metadata
-Befehl an eine vorhandene VM:
gcloud compute instances add-metadataVM_NAME ` --metadata=windows-startup-script-url=CLOUD_STORAGE_URL
Dabei gilt:
- VM_NAME: der Name der VM.
-
CLOUD_STORAGE_URL: die Metadatenwerte. Legen Sie den Speicherort der Startskriptdatei in einem der folgenden Formate fest:
-
Authentifizierte URL:
https://storage.googleapis.com/BUCKET/FILE
-
gcloud-Speicher-URI:
gs://BUCKET/FILE
-
Authentifizierte URL:
Rufen Sie die externe IP-Adresse in einem Webbrowser auf, um zu prüfen, ob das Startskript die Website erstellt hat. Es kann etwa zehn Minuten dauern, bis das Beispiel-Startskript abgeschlossen ist.
In Cloud Storage gespeichertes Startskript an eine neue VM übergeben
Verwenden Sie die folgende instances.insert
-Methode, um ein in Cloud Storage gespeichertes Startskript an eine Windows Server-VM zu übergeben. Fügen Sie dem Feld scopes
den Wert https://www.googleapis.com/auth/devstorage.read_only
hinzu, damit die VM auf Cloud Storage zugreifen kann.
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 " }, ... ] }, ... }
Dabei gilt:
PROJECT_ID: die Projekt-ID.
ZONE ist die Zone, in der die neue VM erstellt werden soll.
CLOUD_STORAGE_URL: der Metadatenwert. Legen Sie dafür den Cloud Storage-Speicherort der Startskriptdatei in einem der folgenden Formate fest:
- Authentifizierte URL:
https://storage.googleapis.com/BUCKET/FILE
- gcloud-Speicher-URI:
gs://BUCKET/FILE
- Authentifizierte URL:
In Cloud Storage gespeichertes Startskript an eine vorhandene VM übergeben
Rufen Sie den Wert
tags.fingerprint
der VM mit der Methodeinstances.get
ab.GET https://compute.googleapis.com/compute/v1/projects/
PROJECT_ID /zones/ZONE /instances/VM_NAME Dabei gilt:
PROJECT_ID: die Projekt-ID
ZONE: Zone der VM
VM_NAME: die Zone der VM
Übergeben Sie das Startskript mithilfe des Werts
fingerprint
zusammen mit dem Metadatenschlüssel und dem Wert für das Startskript in einem Aufruf der Methodeinstances.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 " } ], ... }Dabei gilt:
PROJECT_ID: die Projekt-ID.
ZONE: Zone der VM.
VM_NAME: Die Zone der VM.
FINGERPRINT: Der mit der Methode
instances.get
abgerufene Werttags.fingerprint
.CLOUD_STORAGE_URL: der Metadatenwert. Legen Sie dafür den Cloud Storage-Speicherort der Startskriptdatei in einem der folgenden Formate fest:
- Authentifizierte URL:
https://storage.googleapis.com/BUCKET/FILE
- gcloud-Speicher-URI:
gs://BUCKET/FILE
- Authentifizierte URL:
Startskript überprüfen
Rufen Sie die externe IP-Adresse in einem Webbrowser auf, um zu prüfen, ob das Startskript die Website erstellt hat. Es kann etwa zehn Minuten dauern, bis das Beispiel-Startskript abgeschlossen ist.
Auf Metadaten aus einem Windows-Startskript zugreifen
In einem Startskript können Sie auf Metadatenwerte zugreifen. Sie können beispielsweise dasselbe Skript für mehrere VMs verwenden und jedes Skript einzeln parametrisieren. Dazu übergeben Sie verschiedene Metadatenwerte an jede VM.
So greifen Sie auf einen benutzerdefinierten Metadatenwert von einem Startskript zu:
Erstellen Sie ein Startskript, das den Wert eines Metadatenschlüssels abfragt. Das folgende PowerShell-Startskript (
.ps1
) fragt beispielsweise den Wert des Metadatenschlüsselsfoo
ab.$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
Legen Sie den Wert des Metadatenschlüssels
foo
beim Erstellen einer VM mit dem folgendengcloud compute instances create
-Befehl fest. In diesem Beispiel wird das Startskript von einer lokalen Datei an die VM übergeben.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=barDabei gilt:
VM_NAME: Der Name der VM
FILE_PATH: der relative Pfad zur Startskriptdatei
Weitere Informationen zum Angeben eines Metadaten-Schlüssel/Wert-Paars finden Sie unter Benutzerdefinierte Metadaten festlegen und entfernen.
Rufen Sie die externe IP-Adresse in einem Webbrowser auf, um zu prüfen, ob das Startskript den Wert von
foo
ausgibt. Es kann etwa zehn Minuten dauern, bis das Beispiel-Startskript abgeschlossen ist.
Windows-Startskript noch einmal ausführen
So führen Sie ein Startskript auf einer Windows-VM noch einmal aus:
Führen Sie folgenden Befehl aus:
C:\Program Files\Google\Compute Engine\metadata_scripts\run_startup_scripts.cmd
Ausgabe eines Windows-Startskripts ansehen
Sehen Sie sich die Ausgabe eines Windows Server-Startskript an. Verwenden Sie dazu eines der folgenden Dinge und prüfen Sie, ob GCEMetadataScripts
-Ereignisse vorhanden sind:
Serieller Port 1 in der Google Cloud Console. Weitere Informationen finden Sie unter Ausgabe des seriellen Ports ansehen.
Anwendungs-Log des Windows-Ereignisanzeige.
IAP Desktop von einer Windows-Workstation aus. Weitere Informationen finden Sie im Repository GoogleCloudPlatform/iap-desktop auf GitHub.
Nächste Schritte
Weitere Informationen zum Startskripts auf Linux-VMs verwenden.
Weitere Informationen zum Hinzufügen eines Shutdown-Skripts.
Mehr über VM-Metadaten erfahren
Startskripts auf Windows-VMs ausführen und einer Managed Microsoft AD-Domain beitreten.