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:
Console
When you use the Google Cloud console to access Google Cloud services and APIs, you don't need to set up authentication.
gcloud
-
Install the Google Cloud CLI, then initialize it by running the following command:
gcloud init
- Set a default region and zone.
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.
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
PROJECT_ID: die Projekt-ID
ZONE ist die Zone, in der die neue VM erstellt werden soll.
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
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
- VM_NAME: Der Name der VM
- FILE_PATH: der relative Pfad zur Startskriptdatei
- VM_NAME: Der Name der VM
- FILE_PATH: der relative Pfad zur Startskriptdatei
- VM_NAME: Der Name der VM
- FILE_PATH: der relative Pfad zur Startskriptdatei
- VM_NAME: Der Name der VM
- FILE_PATH: der relative Pfad zur Startskriptdatei
- VM_NAME: Der Name der VM
- FILE_PATH: der relative Pfad zur Startskriptdatei
- VM_NAME: Der Name der VM
- FILE_PATH: der relative Pfad zur Startskriptdatei
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
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.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.
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:
- 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:
- 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:
- 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:
- 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:
- 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:
- 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:
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:
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:
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
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
Dabei 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.Führen Sie folgenden Befehl aus:
C:\Program Files\Google\Compute Engine\metadata_scripts\run_startup_scripts.cmd
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.
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.
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
Ü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.
Console
Windows-Startskript direkt an eine neue VM übergeben
Windows-Startskript direkt an eine vorhandene VM übergeben
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.
gcloud (Bash)
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 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'
Ersetzen Sie VM_NAME durch den Namen der VM.
Windows-Startskript direkt an eine vorhandene VM übergebenFügen Sie das Startskript mit dem folgenden
gcloud compute instances add-metadata
-Befehl direkt einer vorhandenen VM hinzu: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'
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.
gcloud (Eingabeaufforderung)
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 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'
Ersetzen Sie VM_NAME durch den Namen der VM.
Windows-Startskript direkt an eine vorhandene VM übergebenFügen Sie das Startskript mit dem folgenden
gcloud compute instances add-metadata
-Befehl direkt einer vorhandenen VM hinzu: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'
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.
gcloud (PowerShell)
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 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'
Ersetzen Sie VM_NAME durch den Namen der VM.
Windows-Startskript direkt an eine vorhandene VM übergebenFügen Sie das Startskript mit dem folgenden
gcloud compute instances add-metadata
-Befehl direkt einer vorhandenen VM hinzu: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'
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.
REST
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:
Windows-Startskript direkt an eine vorhandene VM übergeben
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
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:
gcloud (Bash)
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 create VM_NAME \ --image-project=windows-cloud \ --image-family=windows-2019-core \ --metadata-from-file=windows-startup-script-ps1=FILE_PATH
Dabei gilt:
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-metadata VM_NAME \ --metadata-from-file=windows-startup-script-ps1=FILE_PATH
Dabei gilt:
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.
gcloud (Eingabeaufforderung)
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 create VM_NAME ^ --image-project=windows-cloud ^ --image-family=windows-2019-core ^ --metadata-from-file=windows-startup-script-ps1=FILE_PATH
Dabei gilt:
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-metadata VM_NAME ^ --metadata-from-file=windows-startup-script-ps1=FILE_PATH
Dabei gilt:
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.
gcloud (PowerShell)
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 create VM_NAME ` --image-project=windows-cloud ` --image-family=windows-2019-core ` --metadata-from-file=windows-startup-script-ps1=FILE_PATH
Dabei gilt:
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-metadata VM_NAME ` --metadata-from-file=windows-startup-script-ps1=FILE_PATH
Dabei gilt:
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
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:
Auswirkungen auf die Sicherheit
Console
In Cloud Storage gespeichertes Startskript an eine neue VM übergeben
In Cloud Storage gespeichertes Startskript an eine vorhandene VM übergeben
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.
gcloud (Bash)
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 create VM_NAME \ --image-project=windows-cloud \ --image-family=windows-2019-core \ --scopes=storage-ro \ --metadata=windows-startup-script-url=CLOUD_STORAGE_URL
Dabei gilt:
Ü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-metadata VM_NAME \ --metadata=windows-startup-script-url=CLOUD_STORAGE_URL
Dabei gilt:
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.
gcloud (Eingabeaufforderung)
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 create VM_NAME ^ --image-project=windows-cloud ^ --image-family=windows-2019-core ^ --scopes=storage-ro ^ --metadata=windows-startup-script-url=CLOUD_STORAGE_URL
Dabei gilt:
Ü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-metadata VM_NAME ^ --metadata=windows-startup-script-url=CLOUD_STORAGE_URL
Dabei gilt:
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.
gcloud (PowerShell)
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 create VM_NAME ` --image-project=windows-cloud ` --image-family=windows-2019-core ` --scopes=storage-ro ` --metadata=windows-startup-script-url=CLOUD_STORAGE_URL
Dabei gilt:
Ü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-metadata VM_NAME ` --metadata=windows-startup-script-url=CLOUD_STORAGE_URL
Dabei gilt:
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.
REST
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 Feldscopes
den Werthttps://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:
In Cloud Storage gespeichertes Startskript an eine vorhandene VM übergeben
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:
Windows-Startskript noch einmal ausführen
So führen Sie ein Startskript auf einer Windows-VM noch einmal aus:
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:Nächste Schritte
Sofern nicht anders angegeben, sind die Inhalte dieser Seite unter der Creative Commons Attribution 4.0 License und Codebeispiele unter der Apache 2.0 License lizenziert. Weitere Informationen finden Sie in den Websiterichtlinien von Google Developers. Java ist eine eingetragene Marke von Oracle und/oder seinen Partnern.
Zuletzt aktualisiert: 2024-12-22 (UTC).
-