Ein Windows-Skript ausführen PowerShell - AWS OpsWorks

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Ein Windows-Skript ausführen PowerShell

Wichtig

Der AWS OpsWorks Stacks Dienst hat am 26. Mai 2024 das Ende seiner Lebensdauer erreicht und wurde sowohl für neue als auch für bestehende Kunden deaktiviert. Wir empfehlen Kunden dringend, ihre Workloads so bald wie möglich auf andere Lösungen zu migrieren. Wenn Sie Fragen zur Migration haben, wenden Sie sich an das AWS Support Team auf AWS re:POST oder über den AWS Premium-Support.

Anmerkung

In diesen Beispielen wird davon ausgegangen, dass Sie das Beispiel Ausführen eines Rezepts auf einer Windows-Instance bereits durchgearbeitet haben. Falls Sie das noch nicht getan haben, holen Sie das nun nach. Insbesondere wird darin beschrieben, wie Sie für Ihre Instances RDP-Zugriff aktivieren.

Eine Möglichkeit, ein Rezept Aufgaben auf einer Windows-Instanz ausführen zu lassen — insbesondere Aufgaben, für die es keine entsprechende Chef-Ressource gibt — besteht darin, das Rezept ein Windows-Skript ausführen zu lassen. PowerShell In diesem Abschnitt werden Sie in die Grundlagen eingeführt, indem beschrieben wird, wie Sie ein PowerShell Windows-Skript verwenden, um eine Windows-Funktion zu installieren.

Die powershell_scriptRessource führt PowerShell Windows-Cmdlets auf einer Instanz aus. Im folgenden Beispiel wird ein WindowsFeature Install-Cmdlet verwendet, um einen XPS-Viewer auf der Instanz zu installieren.

Nachfolgend wird kurz beschrieben, wie Sie für dieses Beispiel einen Stack erstellen. Weitere Informationen finden Sie unter Erstellen eines neuen Stacks.

Erstellen eines Stacks
  1. Öffnen Sie die AWS OpsWorks  Stacks-Konsole und wählen Sie Add Stack (Stack hinzufügen) aus. Legen Sie die folgenden Einstellungen fest, übernehmen Sie für die restlichen Einstellungen die Standardwerte und klicken Sie auf Add Stack (Stack hinzufügen).

    • Name — PowerShellTest

    • Region — USA West (Oregon)

      Dieses Beispiel funktioniert in jeder Region, wir empfehlen jedoch, US West (Oregon) für Tutorials zu verwenden.

    • Standardbetriebssystem — Microsoft Windows Server 2012 R2

  2. Wählen Sie Add a layer (Layer hinzufügen) aus und fügen Sie dem Stack einen benutzerdefinierten Layer mit folgenden Einstellungen hinzu:

    • Name — PowerShell

    • Kurzname — Powershell

  3. Fügen Sie dem PowerShell Layer eine 24/7-Instanz mit Standardeinstellungen hinzu und starten Sie ihn.

  4. Wählen Sie Permissions (Berechtigungen), dann Edit (Bearbeiten) und anschließend SSH/RDP und sudo/admin aus. Als regulärer Benutzer benötigen Sie zusätzlich zur Sicherheitsgruppe AWS-OpsWorks-RDP-Server diese Autorisierung, um sich bei der Instance anzumelden.

Während die Instanz gestartet wird — das dauert in der Regel mehrere Minuten — können Sie das Kochbuch erstellen. Über das Rezept in diesem Beispiel, bei dem es sich um eine für Windows angepasste Version des Rezepts aus Beispiel 3: Erstellen von Verzeichnissen handelt, wird ein Datenverzeichnis erstellt.

So richten Sie das Rezeptbuch ein
  1. Erstellen Sie ein Verzeichnis powershell und öffnen Sie es.

  2. Erstellen Sie eine Datei metadata.rb mit dem folgenden Inhalt und speichern Sie sie unter windowstest.

    name "powershell" version "0.1.0"
  3. Erstellen Sie ein Verzeichnis recipes innerhalb des Verzeichnisses powershell.

  4. Erstellen Sie eine Datei default.rb mit dem folgenden Rezept und speichern Sie sie im Verzeichnis recipes.

    Chef::Log.info("******Installing XPS.******") powershell_script "Install XPS Viewer" do code <<-EOH Install-WindowsFeature XPS-Viewer EOH guard_interpreter :powershell_script not_if "(Get-WindowsFeature -Name XPS-Viewer).installed" end
    • Mithilfe der Ressource powershell_script wird ein Cmdlet ausgeführt, um den XPS-Viewer zu installieren.

      In diesem Beispiel wird nur ein Cmdlet ausgeführt. Der code-Block kann jedoch beliebig viele Befehlszeilen enthalten.

    • Das guard_interpreter Attribut weist Chef an, die 64-Bit-Version von Windows zu verwenden. PowerShell

    • Über das Wächterattribut not_if wird sichergestellt, dass Chef die Funktion nur dann installiert, wenn sie nicht bereits installiert ist.

  5. Erstellen Sie ein .zip-Archiv des Verzeichnisses powershell.

  6. Laden Sie das Archiv in einen Amazon S3 S3-Bucket hoch, machen Sie das Archiv öffentlich und notieren Sie die URL des Archivs. Sie können auch ein privates Archiv verwenden. Für dieses Beispiel ist ein öffentliches Archiv jedoch ausreichend und einfacher zu handhaben.

    Inhalte, die an Amazon-S3-Buckets geliefert werden, können Kundeninhalte enthalten. Weitere Informationen zum Entfernen sensibler Daten finden Sie unter Wie entleere ich einen S3 Bucket? oder Wie lösche ich einen S3 Bucket?.

Jetzt können Sie das Rezeptbuch installieren und das Rezept ausführen.

So führen Sie das Rezept aus
  1. Bearbeiten Sie den Stack, um benutzerdefinierte Rezeptbücher zu aktivieren, und legen Sie folgende Einstellungen fest:

    • Repository-TypS3-Archiv

    • Repository-URL — Die URL des Kochbuch-Archivs, die Sie zuvor aufgezeichnet haben

    Übernehmen Sie für die übrigen Einstellungen die Standardwerte und wählen Sie Save aus, um die Stack-Konfiguration zu aktualisieren und zu speichern.

  2. Führen Sie den Stack-Befehl Update Custom Cookbooks aus, um die aktuelle Version Ihrer benutzerdefinierten Rezeptbücher auf der Instance zu installieren.

  3. Nachdem die benutzerdefinierten Rezeptbücher über den Befehl Update Custom Cookbooks aktualisiert wurden, führen Sie das Rezept mithilfe des Stack-Befehls Execute Recipes aus. Achten Sie darauf, das bei Recipes to execute powershell::default eingestellt ist.

Anmerkung

In diesem Beispiel wird der Einfachheit halber Execute Recipes verwendet, aber normalerweise lassen Sie AWS OpsWorks Stacks Ihre Rezepte automatisch ausführen, indem Sie sie dem entsprechenden Lebenszyklusereignis zuweisen. Sie können diese Rezepte auch durch manuelles Auslösen des Ereignisses ausführen. Verwenden Sie für Einrichtungs- und Konfigurationsereignisse einen Stack-Befehl und für Bereitstellungsereignisse und für Ereignisse zum Aufheben der Bereitstellung einen Bereitstellungsbefehl.

Nachdem das Rezept erfolgreich ausgeführt wurde, können Sie es überprüfen.

So überprüfen Sie das powershell-Rezept
  1. Sehen Sie sich das Chef-Protokoll an. Klicken Sie auf show in der Spalte Log der Instance „powershell1”, um das Protokoll anzuzeigen. Blättern Sie nach unten, wo Sie Ihre Protokollmeldung finden.

    ... [2015-04-27T18:12:09+00:00] INFO: Storing updated cookbooks/powershell/metadata.rb in the cache. [2015-04-27T18:12:09+00:00] INFO: ******Installing XPS.****** [2015-04-27T18:12:09+00:00] INFO: Processing powershell_script[Install XPS Viewer] action run (powershell::default line 3) [2015-04-27T18:12:09+00:00] INFO: Processing powershell_script[Guard resource] action run (dynamically defined) [2015-04-27T18:12:42+00:00] INFO: powershell_script[Install XPS Viewer] ran successfully ...
  2. Melden Sie sich über RDP bei der Instance an und öffnen Sie das Menü Start. XPS Viewer sollte unter Windows Zubehör aufgelistet sein.