

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

# Ejecutando un script de Windows PowerShell
<a name="cookbooks-101-opsworks-opsworks-powershell"></a>

**importante**  
El AWS OpsWorks Stacks servicio llegó al final de su vida útil el 26 de mayo de 2024 y se ha desactivado tanto para los clientes nuevos como para los existentes. Recomendamos encarecidamente a los clientes que migren sus cargas de trabajo a otras soluciones lo antes posible. Si tienes preguntas sobre la migración, ponte en contacto con el AWS Support equipo en [AWS Re:post](https://repost.aws/) o a través de Premium [AWS Support](https://aws.amazon.com/support).

**nota**  
Estos ejemplos presuponen que ya ha completado el ejemplo [Ejecución de una receta en una instancia de Windows](cookbooks-101-opsworks-opsworks-windows.md). De lo contrario, debería completarlo primero. En concreto, describe cómo [habilitar el acceso RDP](cookbooks-101-opsworks-opsworks-windows.md#cookbooks-101-opsworks-opsworks-windows-rdp) en las instancias.

Una forma de hacer que una receta ejecute tareas en una instancia de Windows, especialmente las tareas que no tienen un recurso de Chef correspondiente, es hacer que la receta ejecute un script de Windows. PowerShell Esta sección presenta los conceptos básicos al describir cómo usar un PowerShell script de Windows para instalar una función de Windows.

El [https://docs.chef.io/chef/resources.html#powershell-script](https://docs.chef.io/chef/resources.html#powershell-script)recurso ejecuta los PowerShell cmdlets de Windows en una instancia. En el siguiente ejemplo, se usa un [WindowsFeature cmdlet Install-](https://technet.microsoft.com/en-us/library/hh849795.aspx) para instalar un visor de XPS en la instancia. 

A continuación, se resume brevemente cómo crear una pila para este ejemplo. Para obtener más información, consulte [Crear una pila nueva](workingstacks-creating.md).

**Creación de una pila**

1. Abra la [consola de OpsWorks](https://console.aws.amazon.com/opsworks/) y elija **Add Stack (Añadir pila)**. Especifique las siguientes opciones de configuración, acepte los valores predeterminados del resto y, a continuación, haga clic en **Add Stack (Añadir pila)**.
   + **Nombre:** PowerShellTest
   + **Región**: Oeste de EE. UU. (Oregón)

     Este ejemplo funcionará en cualquier región, pero recomendamos utilizar la región Oeste de EE. UU. (Oregón) en los tutoriales.
   + **Sistema operativo predeterminado**: Microsoft Windows Server 2012 R2

1. Elija **Add a layer (Añadir una capa)** y [añada una capa personalizada](workinglayers-custom.md) a la pila con la siguiente configuración.
   + **Nombre** — PowerShell
   + **Nombre abreviado**: powershell

1. [Añada una instancia ininterrumpida](workinginstances-add.md) a la PowerShell capa con los ajustes predeterminados e [iníciela](workinginstances-starting.md).

1. Elija **Permissions (Permisos)**, a continuación **Edit (Editar)** y seleccione **SSH/RDP** y **sudo/admin**. Necesita esta autorización, además de la del grupo de seguridad `AWS-OpsWorks-RDP-Server`, para iniciar sesión en la instancia como usuario habitual.

Mientras la instancia se inicia, proceso que suele tardar varios minutos, puede crear el libro de recetas. La receta que se utiliza en este ejemplo utiliza un directorio de datos y es, básicamente, una receta de [Ejemplo 3: Creación de directorios](cookbooks-101-basics-directories.md) modificada para Windows.

**Para configurar el libro de recetas**

1. Cree un directorio llamado `powershell` y ábralo.

1. Cree un archivo `metadata.rb` con el siguiente contenido y guárdelo en `windowstest`.

   ```
   name "powershell"
   version "0.1.0"
   ```

1. Cree un directorio `recipes` dentro de `powershell`.

1. Cree un archivo `default.rb` con la siguiente receta y guárdelo en el directorio `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
   ```
   + El recurso `powershell_script` ejecuta un cmdlet para instalar el visor de XPS.

     Este ejemplo ejecuta un único cmdlet, pero el bloque `code` puede contener cualquier número de líneas de comando.
   + El `guard_interpreter` atributo indica a Chef que utilice la versión de 64 bits de Windows PowerShell.
   + El atributo de guardia `not_if` garantiza que Chef no instala la característica si ya está instalada.

1. Cree un archivo `.zip` del directorio `powershell`.

1. [Cargue el archivo en un bucket de Amazon S3](https://docs.aws.amazon.com/AmazonS3/latest/UG/UploadingObjectsintoAmazonS3.html), [publíquelo](https://docs.aws.amazon.com/AmazonS3/latest/UG/EditingPermissionsonanObject.html) y anote la URL del archivo. También puede utilizar un archivo de almacenamiento privado, pero uno público es suficiente para este ejemplo; además, trabajar con él resulta más sencillo.

   El contenido entregado a los buckets de Amazon S3 puede contener contenido del cliente. Para obtener más información sobre la eliminación de información confidencial, consulte [¿Cómo puedo vaciar un bucket de S3?](https://docs.aws.amazon.com/AmazonS3/latest/userguide/empty-bucket.html) o [¿Cómo elimino un bucket de S3?](https://docs.aws.amazon.com/AmazonS3/latest/userguide/delete-bucket.html).

Ahora puede instalar el libro de recetas y ejecutar la receta.

**Para ejecutar la receta**

1. [Edite la pila para habilitar los libros de recetas personalizados](workingcookbook-installingcustom-enable.md) y especifique las siguientes opciones de configuración.
   + **Tipo de repositorio**: **S3 Archive**
   + **URL de repositorio**: la URL del archivo del libro de recetas que anotó previamente.

   Acepte los valores predeterminados del resto de opciones y elija **Save (Guardar)** para actualizar la configuración de la pila.

1. [Ejecute el comando de pila **Update Custom Cookbooks (Actualizar libros de recetas personalizados)**](workingstacks-commands.md) para instalar la versión actual de los libros de recetas personalizados en la instancia. 

1. Cuando **Update Custom Cookbooks (Actualizar libros de recetas personalizados)** haya terminado, ejecute la receta ejecutando el [comando de pila **Execute Recipes (Ejecutar recetas)**](workingstacks-commands.md) con **Recipes to execute (Recetas para ejecutar)** establecido en **powershell::default**. 

**nota**  
En este ejemplo, se usa **Execute Recipes** para mayor comodidad, pero normalmente haces que OpsWorks Stacks [ejecute tus recetas automáticamente](workingcookbook-assigningcustom.md) asignándolas al evento del ciclo de vida correspondiente. Puede desencadenar el evento de forma manual para ejecutar estas recetas. Puede utilizar un comando de pila para desencadenar los eventos Setup y Configure y un [comando de implementación](workingapps-deploying.md) en el caso de los eventos Deploy y Undeploy.

Una vez que la receta se haya ejecutado correctamente, podrá verificarla.

**Para verificar la receta powershell**

1. Revise el [registro de Chef](troubleshoot-debug-log.md). Haga clic en **show (mostrar)** en la columna **Log (Registro)** de la instancia powershell1 para ver el registro. Desplácese hacia abajo; el mensaje aparecerá casi al final del archivo.

   ```
   ...
   [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 
   ...
   ```

1. [Utilice RDP para iniciar sesión en la instancia](workinginstances-rdp.md) y abra el menú **Start (Iniciar)**. El visor de XPS debería aparecer en **Windows Accessories (Accesorios de Windows)**.