

Herramientas de AWS para PowerShell La V4 ha entrado en modo de mantenimiento.

Le recomendamos que migre a la [Herramientas de AWS para PowerShell V5](https://docs.aws.amazon.com/powershell/v5/userguide/). Para obtener información y detalles adicionales sobre cómo realizar la migración, consulta nuestro [anuncio sobre el modo de mantenimiento](https://aws.amazon.com/blogs/developer/aws-tools-for-powershell-v4-maintenance-mode-announcement/).

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.

# Instalación del Herramientas de AWS para PowerShell
<a name="pstools-getting-set-up"></a>

Para instalar y utilizar correctamente los cmdlets de las Herramientas de AWS para PowerShell, consulte los pasos descritos en los temas siguientes.

**Topics**
+ [Instalación en Windows](pstools-getting-set-up-windows.md)
+ [Instalación en Linux o macOS](pstools-getting-set-up-linux-mac.md)
+ [Migración de la Herramientas de AWS para PowerShell versión 3.3 a la versión 4](v4migration.md)

# Instalación del Herramientas de AWS para PowerShell en Windows
<a name="pstools-getting-set-up-windows"></a>

Un equipo basado en Windows puede ejecutar cualquiera de las opciones de paquete las Herramientas de AWS para PowerShell:
+ [**`AWS.Tools`**](#ps-installing-awstools) - versión por módulos de Herramientas de AWS para PowerShell. Cada servicio de AWS es compatible con su pequeño módulo propio y cuenta con los módulos auxiliares compartidos `AWS.Tools.Common` y `AWS.Tools.Installer`.
+ [**AWSPowerShell.NetCore**](#ps-installing-awspowershellnetcore): versión de módulo grande y único de Herramientas de AWS para PowerShell. Todos los servicios de AWS son compatibles con este único módulo grande.
**nota**  
Tenga en cuenta que el módulo individual puede ser demasiado grande para usarlo con funciones de [AWS Lambda](https://aws.amazon.com/lambda/). En su lugar, utilice la versión modularizada que se muestra arriba.
+ [**AWSPowerShell**](#ps-installing-awswindowspowershell): versión de Herramientas de AWS para PowerShell que se compone de un solo módulo heredado de gran tamaño que es específico de Windows. Todos los servicios de AWS son compatibles con este único módulo grande.

El paquete que elija depende de la versión y edición de Windows que esté ejecutando. 

**nota**  
Herramientas de AWS para PowerShell se instala de forma predeterminada en todas las imágenes de máquina de Amazon (AMI) de Windows. La opción instalada depende de la AMI. Muchas AMI tienen el módulo AWSPowerShell, pero es posible que algunas tengan una opción diferente. Por ejemplo, las AMI de Amazon EC2 para Windows Server 2025 utilizan la opción `AWS.Tools` modularizada.

La configuración de las Herramientas de AWS para PowerShell implica las siguientes tareas generales, descritas en detalle en este tema.

1. Instale la opción del paquete de las Herramientas de AWS para PowerShell que sea adecuado para su entorno.

1. Compruebe que la ejecución de scripts está habilitada ejecutando el cmdlet `Get-ExecutionPolicy`.

1. Importe el módulo de las Herramientas de AWS para PowerShell en la sesión de PowerShell.

## Requisitos previos
<a name="prerequisites"></a>

Las versiones más recientes de PowerShell, como PowerShell Core, pueden descargarse de Microsoft en la página [Instalación de distintas versiones de PowerShell](https://docs.microsoft.com/en-us/powershell/scripting/install/installing-powershell) del sitio web de Microsoft.

## Instalación de `AWS.Tools` en Windows.
<a name="ps-installing-awstools"></a>

La versión por módulos de Herramientas de AWS para PowerShell se puede instalar en equipos que ejecuten Windows con Windows PowerShell versión 5.1 o PowerShell Core 6.0 y versiones posteriores. Para obtener información acerca de cómo instalar PowerShell Core, consulte [Instalación de distintas versiones de PowerShell](https://docs.microsoft.com/en-us/powershell/scripting/install/installing-powershell) en el sitio web de Microsoft.

Puede instalar `AWS.Tools` de tres maneras:
+ Utilizando los cmdlets del módulo `AWS.Tools.Installer`. Este módulo simplifica la instalación y la actualización de otros módulos de `AWS.Tools`. Como `AWS.Tools.Installer` necesita una versión actualizada de `PowerShellGet`, la descarga e instala automáticamente. Además, `AWS.Tools.Installer` mantiene automáticamente las versiones de tus módulos sincronizadas. Cuando se instala un módulo o se actualiza a una versión más reciente, los cmdlets de `AWS.Tools.Installer` actualizan automáticamente todos los demás módulos de `AWS.Tools` a la misma versión.

  Este método se describe en el siguiente procedimiento.
+ Descargando los módulos de `[AWS.Tools.zip](https://sdk-for-net.amazonwebservices.com/ps/v4/latest/AWS.Tools.zip)` y extrayéndolos en una de las carpetas del módulo. Puede descubrir cuáles son las carpetas del módulo mostrando el valor de la variable de entorno `PSModulePath`.
**aviso**  
Tras descargar el archivo ZIP y antes de extraer el contenido, es posible que tenga que desbloquearlo. Por lo general, para ello deberá abrir las propiedades del archivo, hacer clic en la pestaña **General** y activar la casilla **Desbloquear**, si está disponible.  
Si el archivo ZIP debe desbloquearse pero no se hace, podrías recibir un error similar al siguiente: “Import-Module: Could not load file or assembly”.
+ Instalando cada módulo de servicio desde la Galería de PowerShell con el cmdlet `Install-Module`.

**Cómo instalar `AWS.Tools` en Windows con el módulo de `AWS.Tools.Installer`**

1. Inicie una sesión de PowerShell.
**nota**  
Le recomendamos que *no* ejecute PowerShell como administrador con permisos elevados, excepto cuando lo requiera la tarea en cuestión. Esto puede suponer un riesgo para la seguridad y no se atiene al principio de privilegios mínimos.

1. Para instalar el paquete de `AWS.Tools` por módulos, ejecute el siguiente comando.

   ```
   PS > Install-Module -Name AWS.Tools.Installer
   
   Untrusted repository
   You are installing the modules from an untrusted repository. If you trust this repository, change its InstallationPolicy value by running the Set-PSRepository cmdlet. Are you sure
    you want to install the modules from 'PSGallery'?
   [Y] Yes  [A] Yes to All  [N] No  [L] No to All  [S] Suspend  [?] Help (default is "N"): y
   ```

   Si aparece una notificación en la que se indica que el repositorio no es de confianza, se le preguntará si desea realizar la instalación de todos modos. Ingrese **y** para permitir que PowerShell instale el módulo. Para evitar este mensaje e instalar el módulo sin confiar en el repositorio, puede ejecutar el comando con el parámetro `-Force`.

   ```
   PS > Install-Module -Name AWS.Tools.Installer -Force
   ```

1. Ahora puede instalar el módulo de cada servicio de AWS que desee utilizar con el cmdlet `Install-AWSToolsModule`. Por ejemplo, el siguiente comando instala los módulos de Amazon EC2 y Amazon S3. Este comando también instala los módulos dependientes necesarios para que el módulo especificado funcione. Por ejemplo, cuando instala el primer módulo de servicio `AWS.Tools`, también se instala `AWS.Tools.Common`. Es un módulo compartido que todos los módulos de servicio de AWS necesitan. También elimina las versiones anteriores de los módulos y actualiza otros módulos a la misma versión.

   ```
   PS > Install-AWSToolsModule AWS.Tools.EC2,AWS.Tools.S3 -CleanUp
     Confirm
     Are you sure you want to perform this action?
     Performing the operation "Install-AWSToolsModule" on target "AWS Tools version 4.0.0.0".
     [Y] Yes  [A] Yes to All  [N] No  [L] No to All  [S] Suspend  [?] Help (default is "Y"):
   
     Installing module AWS.Tools.Common version 4.0.0.0
     Installing module AWS.Tools.EC2 version 4.0.0.0
     Installing module AWS.Tools.Glacier version 4.0.0.0
     Installing module AWS.Tools.S3 version 4.0.0.0
   
     Uninstalling AWS.Tools version 3.3.618.0
     Uninstalling module AWS.Tools.Glacier
     Uninstalling module AWS.Tools.S3
     Uninstalling module AWS.Tools.SimpleNotificationService
     Uninstalling module AWS.Tools.SQS
     Uninstalling module AWS.Tools.Common
   ```
**nota**  
El cmdlet `Install-AWSToolsModule` descarga todos los módulos solicitados desde un repositorio de `PSRepository` llamado `PSGallery` ([https://www.powershellgallery.com/](https://www.powershellgallery.com/)) y lo considera un origen de confianza. Utilice el comando `Get-PSRepository -Name PSGallery` para obtener más información sobre este repositorio de `PSRepository`.

   De forma predeterminada, el comando anterior instala los módulos en la carpeta `%USERPROFILE%\Documents\WindowsPowerShell\Modules`. Si desea instalar Herramientas de AWS para PowerShell para todos los usuarios de un equipo, debe ejecutar el siguiente comando en una sesión de PowerShell que haya iniciado como administrador. Por ejemplo, el siguiente comando instala el módulo de IAM en la carpeta `%ProgramFiles%\WindowsPowerShell\Modules` que es accesible para todos los usuarios.

   ```
   PS > Install-AWSToolsModule AWS.Tools.IdentityManagement -Scope AllUsers
   ```

   Para instalar otros módulos, ejecute comandos similares con los nombres de módulo correspondientes, tal y como se encuentra en la [Galería de PowerShell](https://www.powershellgallery.com/packages?q=aws).

## Instalar AWSPowerShell.NetCore en Windows
<a name="ps-installing-awspowershellnetcore"></a>

Puede instalar AWSPowerShell.NetCore en equipos que ejecuten Windows con PowerShell versión 3 a 5.1 o PowerShell Core 6.0 o versiones posteriores. Para obtener información acerca de cómo instalar PowerShell Core, consulte [Instalación de distintas versiones de PowerShell](https://docs.microsoft.com/en-us/powershell/scripting/install/installing-powershell) en el sitio web de Microsoft PowerShell.

Puede instalar AWSPowerShell.NetCore de dos maneras:
+ Descargando el módulo de [AWSpowerShell.NetCore.zip](https://sdk-for-net.amazonwebservices.com/ps/v4/latest/AWSPowerShell.NetCore.zip) y extrayéndolo en uno de los directorios del módulo. Puede descubrir cuáles son los directorios del módulo mostrando el valor de la variable de entorno `PSModulePath`.
**aviso**  
Tras descargar el archivo ZIP y antes de extraer el contenido, es posible que tenga que desbloquearlo. Por lo general, para ello deberá abrir las propiedades del archivo, hacer clic en la pestaña **General** y activar la casilla **Desbloquear**, si está disponible.  
Si el archivo ZIP debe desbloquearse pero no se hace, podrías recibir un error similar al siguiente: “Import-Module: Could not load file or assembly”.
+ Instalándolo desde la Galería de PowerShell con el cmdlet `Install-Module`, tal y como se describe en el procedimiento siguiente.

**Para instalar AWSPowerShell.NetCore desde la Galería de PowerShell con el cmdlet Install-Module**

Para instalar AWSPowerShell.NetCore desde la Galería de Powershell, el equipo debe ejecutar PowerShell 5.0 (o una versión posterior) o ejecutar [PowerShellGet](https://www.powershellgallery.com/packages/PowerShellGet) en PowerShell 3 (o una versión posterior). Ejecute el siguiente comando.

```
PS > Install-Module -name AWSPowerShell.NetCore
```

Si ejecuta PowerShell como administrador, el comando anterior instala las Herramientas de AWS para PowerShell para todos los usuarios del equipo. Si ejecuta PowerShell como usuario estándar sin permisos de administrador, ese mismo comando se instala solo las Herramientas de AWS para PowerShell para el usuario actual.

Para realizar la instalación solo para el usuario actual cuando ese usuario tiene permisos de administrador, ejecute el comando con el conjunto de parámetros `-Scope CurrentUser`, como se indica a continuación.

```
PS > Install-Module -name AWSPowerShell.NetCore -Scope CurrentUser
```

Aunque PowerShell 3.0 y las versiones posteriores por lo general cargan los módulos en la sesión de PowerShell la primera vez que se ejecuta un cmdlet en el módulo, el módulo de AWSPowerShell.NetCore es demasiado grande para admitir esta funcionalidad. En su lugar, debe cargar de forma explícita el módulo AWSPowerShell.NetCore Core en la sesión de PowerShell ejecutando el siguiente comando.

```
PS > Import-Module AWSPowerShell.NetCore
```

Para cargar el módulo AWSPowerShell.NetCore en una sesión de PowerShell de forma automática, agregue ese comando a su perfil de PowerShell. Para obtener más información sobre cómo editar su perfil de PowerShell, consulte [About Profiles](https://docs.microsoft.com/powershell/module/microsoft.powershell.core/about/about_profiles) en la documentación de PowerShell.

## Instalación de AWSPowerShell en Windows PowerShell
<a name="ps-installing-awswindowspowershell"></a>

Puede instalar AWS Tools for Windows PowerShell de dos maneras:
+ Descargando el módulo de [AWSpowerShell.zip](https://sdk-for-net.amazonwebservices.com/ps/v4/latest/AWSPowerShell.zip) y extrayéndolo en uno de los directorios del módulo. Puede descubrir cuáles son los directorios del módulo mostrando el valor de la variable de entorno `PSModulePath`.
**aviso**  
Tras descargar el archivo ZIP y antes de extraer el contenido, es posible que tenga que desbloquearlo. Por lo general, para ello deberá abrir las propiedades del archivo, hacer clic en la pestaña **General** y activar la casilla **Desbloquear**, si está disponible.  
Si el archivo ZIP debe desbloquearse pero no se hace, podrías recibir un error similar al siguiente: “Import-Module: Could not load file or assembly”.
+ Instalándolo desde la Galería de PowerShell con el cmdlet `Install-Module`, tal y como se describe en el procedimiento siguiente.

**Para instalar AWSPowerShell desde la Galería de PowerShell con el cmdlet Install-Module**

Para instalar AWSPowerShell desde la Galería de PowerShell, es necesario ejecutar PowerShell 5.0 (o una versión posterior) o tener instalado [PowerShellGet](https://www.powershellgallery.com/packages/PowerShellGet) en PowerShell 3 (o una versión posterior). Puede instalar y actualizar AWSPowerShell desde la [Galería de PowerShell](https://www.powershellgallery.com/packages/AWSPowerShell) de Microsoft ejecutando el siguiente comando.

```
 PS > Install-Module -Name AWSPowerShell
```

Para cargar el módulo AWSPowerShell en una sesión de PowerShell de forma automática, agregue el cmdlet `import-module` anterior al perfil de PowerShell. Para obtener más información sobre cómo editar su perfil de PowerShell, consulte [About Profiles](https://docs.microsoft.com/powershell/module/microsoft.powershell.core/about/about_profiles?view=powershell-6) en la documentación de PowerShell.

**nota**  
Las Tools for Windows PowerShell se instalan de forma predeterminada en todas las Amazon Machine Images (AMI) basadas en Windows.

## Habilitar la ejecución de scripts
<a name="enable-script-execution"></a>

Para cargar los módulos de las Herramientas de AWS para PowerShell, debe habilitar la ejecución de scripts de PowerShell. Para habilitar la ejecución de scripts, ejecute el cmdlet `Set-ExecutionPolicy` para definir la política `RemoteSigned`. Para obtener más información, vea [Acerca de las directivas de ejecución](https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.core/about/about_execution_policies) en el sitio web de Microsoft Technet.

**nota**  
Este es un requisito solo para equipos que ejecutan Windows. La restricción de seguridad de `ExecutionPolicy` no está presente en otros sistemas operativos.

 **Para habilitar la ejecución de scripts** 

1. Se requieren derechos de administrador para definir la política de ejecución. Si no ha iniciado sesión como usuario con derechos de administrador, abra una sesión de PowerShell como administrador. Elija **Inicio** y, a continuación, elija **Todos los programas**. Elija **Accesorios** y, a continuación, elija **Windows PowerShell**. Haga clic con el botón derecho en **Windows PowerShell** y después elija **Ejecutar como administrador** en el menú contextual.

1. En el símbolo del sistema, escriba lo siguiente.

   ```
   PS > Set-ExecutionPolicy RemoteSigned 
   ```

**nota**  
En un sistema de 64 bits, también debe realizar estos pasos por separado para la versión PowerShell de 32 bits, **Windows PowerShell (x86)**.

Si no tiene la política de ejecución establecida correctamente, PowerShell muestra el siguiente error cada vez que intenta ejecutar un script, como su perfil.

```
File C:\Users\username\Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1 cannot be loaded because the execution
 of scripts is disabled on this system. Please see "get-help about_signing" for more details.
At line:1 char:2
+ . <<<<  'C:\Users\username\Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1'
    + CategoryInfo          : NotSpecified: (:) [], PSSecurityException
    + FullyQualifiedErrorId : RuntimeException
```

El instalador de las Tools for Windows PowerShell actualiza [PSModulePath](http://msdn.microsoft.com/en-us/library/windows/desktop/dd878326.aspx) de forma automática para incluir la ubicación del directorio que contiene el módulo `AWSPowerShell`. 

Como `PSModulePath` incluye la ubicación del directorio del módulo de AWS, el cmdlet `Get-Module -ListAvailable` muestra el módulo.

```
PS > Get-Module -ListAvailable

ModuleType Name                      ExportedCommands
---------- ----                      ----------------
Manifest   AppLocker                 {}
Manifest   BitsTransfer              {}
Manifest   PSDiagnostics             {}
Manifest   TroubleshootingPack       {}
Manifest   AWSPowerShell             {Update-EBApplicationVersion, Set-DPStatus, Remove-IAMGroupPol...
```

## Control de versiones
<a name="pstools-versioning"></a>

AWS publica periódicamente nuevas versiones de las Herramientas de AWS para PowerShell que admiten nuevos servicios y características de AWS. Para saber cuál es la versión de Tools que ha instalado, ejecute el cmdlet [Get-AWSPowerShellVersion](https://docs.aws.amazon.com/powershell/v4/reference/items/Get-AWSPowerShellVersion.html).

Por ejemplo:

```
PS > Get-AWSPowerShellVersion

AWS Tools for PowerShell
Version 4.1.849
Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.

Amazon Web Services SDK for .NET
Core Runtime Version 3.7.402.75
Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.

Release notes: https://github.com/aws/aws-tools-for-powershell/blob/v4.1/changelogs/CHANGELOG.ALL.md

This software includes third party software subject to the following copyrights:
- Logging from log4net, Apache License
[http://logging.apache.org/log4net/license.html]
```

También puede agregar el parámetro `-ListServiceVersionInfo` a un comando [Get-AWSPowerShellVersion](https://docs.aws.amazon.com/powershell/v4/reference/items/Get-AWSPowerShellVersion.html) para ver una lista de los servicios de AWS admitidos en la versión actual de las herramientas. Si utiliza la opción de módulos de `AWS.Tools.*`, solo se muestran los módulos que ha importado actualmente.

Por ejemplo:

```
PS > Get-AWSPowerShellVersion -ListServiceVersionInfo
...

Service                            Noun Prefix Module Name                       SDK
                                                                                 Assembly
                                                                                 Version
-------                            ----------- -----------                       -----------
AWS IAM Access Analyzer            IAMAA       AWS.Tools.AccessAnalyzer          3.7.400.33
AWS Account                        ACCT        AWS.Tools.Account                 3.7.400.33
AWS Certificate Manager Private... PCA         AWS.Tools.ACMPCA                  3.7.400.34
AWS Amplify                        AMP         AWS.Tools.Amplify                 3.7.401.28
Amplify Backend                    AMPB        AWS.Tools.AmplifyBackend          3.7.400.33
...
```

Para determinar la versión de PowerShell que está ejecutando, escriba `$PSVersionTable` para ver el contenido de la [variable automática](https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.core/about/about_automatic_variables?view=powershell-6) \$1PSVersionTable.

Por ejemplo:

```
PS > $PSVersionTable

Name                           Value
----                           -----
PSVersion                      6.2.2
PSEdition                      Core
GitCommitId                    6.2.2
OS                             Darwin 18.7.0 Darwin Kernel Version 18.7.0: Tue Aug 20 16:57:14 PDT 2019; root:xnu-4903.271.2~2/RELEASE_X86_64
Platform                       Unix
PSCompatibleVersions           {1.0, 2.0, 3.0, 4.0…}
PSRemotingProtocolVersion      2.3
SerializationVersion           1.1.0.1
WSManStackVersion              3.0
```

## Actualización de las Herramientas de AWS para PowerShell en Windows
<a name="pstools-updating"></a>

De forma periódica, cuando se publiquen versiones actualizadas de las Herramientas de AWS para PowerShell, debería actualizar la versión que ejecuta localmente. 

### Actualización de módulos `AWS.Tools` modularizados
<a name="update-the-tools-for-powershell"></a>

Para actualizar los módulos `AWS.Tools` a la versión más reciente, ejecute el siguiente comando:

```
PS > Update-AWSToolsModule -CleanUp
```

Este comando actualiza todos los módulos `AWS.Tools` que están instalados actualmente y, si esta operación se realiza correctamente, elimina otras versiones instaladas.

**nota**  
El cmdlet `Update-AWSToolsModule` descarga todos los módulos de un repositorio de `PSRepository` llamado `PSGallery` ([https://www.powershellgallery.com/](https://www.powershellgallery.com/)) y considera este repositorio como un origen de confianza. Utilice el comando `Get-PSRepository -Name PSGallery` para obtener más información sobre este repositorio de `PSRepository`.

### Actualización de Tools for PowerShell Core
<a name="update-the-tools-for-powershell-core"></a>

Ejecute el cmdlet `Get-AWSPowerShellVersion` para determinar la versión que está ejecutando y compárela con la versión de Tools for Windows PowerShell disponible en el sitio web de la [Galería de PowerShell](https://www.powershellgallery.com/packages/AWSPowerShell). Le sugerimos que revise cada dos o tres semanas. La compatibilidad con nuevos comandos y servicios de AWS solo está disponible después de realizar la actualización a una versión con esa compatibilidad.

Antes de instalar una versión más reciente de AWSPowerShell.NetCore, desinstale el módulo existente. Cierre las sesiones abiertas de PowerShell antes de desinstalar el paquete existente. Ejecute el siguiente comando para desinstalar el paquete.

```
PS > Uninstall-Module -Name AWSPowerShell.NetCore -AllVersions
```

Cuando se haya completado la desinstalación del paquete, instale el módulo actualizado ejecutando el siguiente comando.

```
PS > Install-Module -Name AWSPowerShell.NetCore
```

Después de la instalación, ejecute el comando `Import-Module AWSPowerShell.NetCore` para cargar los cmdlets actualizados en la sesión de PowerShell.

### Actualización de Tools for Windows PowerShell
<a name="update-the-tools-for-windows-powershell"></a>

Ejecute el cmdlet `Get-AWSPowerShellVersion` para determinar la versión que está ejecutando y compárela con la versión de Tools for Windows PowerShell disponible en el sitio web de la [Galería de PowerShell](https://www.powershellgallery.com/packages/AWSPowerShell). Le sugerimos que revise cada dos o tres semanas. La compatibilidad con nuevos comandos y servicios de AWS solo está disponible después de realizar la actualización a una versión con esa compatibilidad.
+ Si realizó la instalación mediante el cmdlet `Install-Module`, ejecute los siguientes comandos.

  ```
  PS > Uninstall-Module -Name AWSPowerShell -AllVersions
  PS > Install-Module -Name AWSPowerShell
  ```
+ Si realizó la instalación mediante un archivo ZIP descargado:

  1. Descargue la versión más reciente del sitio web de [Tools for PowerShell](https://aws.amazon.com/powershell/). Compare el número de versión del paquete en el nombre del archivo descargado con el número de versión que obtiene cuando se ejecuta el cmdlet `Get-AWSPowerShellVersion`.

  1. Si la versión de descarga es un número mayor que la versión instalada, cierre todas las consolas de Tools for Windows PowerShell.

  1. Instale la versión más reciente de Tools for Windows PowerShell.

Después de la instalación, ejecute `Import-Module AWSPowerShell` para cargar los cmdlets actualizados en la sesión de PowerShell. O ejecute la consola de Herramientas de AWS para PowerShell personalizada desde el menú **Inicio** .

# Instalación Herramientas de AWS para PowerShell en Linux o macOS
<a name="pstools-getting-set-up-linux-mac"></a>

En este tema se proporcionan instrucciones sobre cómo instalarlo Herramientas de AWS para PowerShell en Linux o macOS.

## Información general de la configuración
<a name="pstools-installing-core-prerequisites"></a>

Para instalarlo Herramientas de AWS para PowerShell en un ordenador Linux o macOS, puede elegir entre dos opciones de paquetes:
+ [**`AWS.Tools`**](#install-aws.tools-on-linux-macos)— La versión modularizada de. Herramientas de AWS para PowerShell Cada AWS servicio está respaldado por su propio módulo pequeño e individual, con módulos de soporte compartidos. `AWS.Tools.Common`
+ [**AWSPowerConcha. NetCore**](#install-netcore-on-linux-macos) — La versión única de módulos grandes de Herramientas de AWS para PowerShell. Todos los AWS servicios son compatibles con este módulo único y grande.
**nota**  
Tenga en cuenta que el módulo individual puede ser demasiado grande para usarlo con funciones de [AWS Lambda](https://aws.amazon.com/lambda/). En su lugar, utilice la versión modularizada que se muestra arriba.

 La configuración de cualquiera de estas versiones en un equipo con Linux o macOS implica las siguientes tareas, que se describen en detalle más adelante en este tema:

1. Instale PowerShell Core 6.0 o una versión posterior en un sistema compatible.

1. Tras instalar PowerShell Core, empiece PowerShell por ejecutarlo `pwsh` en el shell del sistema.

1. Instale uno de `AWS.Tools` ellos o AWSPower Shell. NetCore.

1. Ejecute el `Import-Module` cmdlet correspondiente para importar el módulo a la sesión PowerShell.

1. Ejecute el cmdlet [Initialize- AWSDefault Configuration](https://docs.aws.amazon.com/powershell/v4/reference/items/Initialize-AWSDefaultConfiguration.html) para proporcionar sus credenciales. AWS 

## Requisitos previos
<a name="prerequisites"></a>

Para ejecutarlo AWS Tools for PowerShell Core, su equipo debe ejecutar PowerShell Core 6.0 o una versión posterior. 
+ Para obtener una lista de las versiones de la plataforma Linux compatibles e información sobre cómo instalar la última versión de PowerShell en un equipo basado en Linux, consulte [Instalación PowerShell en Linux en el sitio web](https://docs.microsoft.com/en-us/powershell/scripting/install/installing-powershell-core-on-linux) de Microsoft. Algunos sistemas operativos basados en Linux, como Arch, Kali y Raspbian, no se admiten oficialmente, pero reciben diversos grados de soporte de la comunidad.
+ Para obtener información sobre las versiones de macOS compatibles y sobre cómo instalar la última versión de PowerShell en macOS, consulta [Instalación PowerShell en macOS](https://docs.microsoft.com/en-us/powershell/scripting/install/installing-powershell-core-on-macos) en el sitio web de Microsoft.

## Instalación de `AWS.Tools` en Linux o macOS
<a name="install-aws.tools-on-linux-macos"></a>

Puede instalar la versión modularizada de Herramientas de AWS para PowerShell en ordenadores que ejecuten PowerShell Core 6.0 o una versión posterior. Para obtener información acerca de cómo instalar PowerShell Core, consulte [Instalación de varias versiones de PowerShell](https://docs.microsoft.com/en-us/powershell/scripting/install/installing-powershell) en el PowerShell sitio web de Microsoft. 

Puede instalar `AWS.Tools` de tres maneras:
+ Utilizando los cmdlets del módulo `AWS.Tools.Installer`. Este módulo simplifica la instalación y la actualización de otros módulos de `AWS.Tools`. Como `AWS.Tools.Installer` necesita una versión actualizada de `PowerShellGet`, la descarga e instala automáticamente. Además, `AWS.Tools.Installer` mantiene automáticamente las versiones de tus módulos sincronizadas. Cuando se instala un módulo o se actualiza a una versión más reciente, los cmdlets de `AWS.Tools.Installer` actualizan automáticamente todos los demás módulos de `AWS.Tools` a la misma versión.

  Este método se describe en el siguiente procedimiento.
+ Descargando los módulos de `[AWS.Tools.zip](https://sdk-for-net.amazonwebservices.com/ps/v4/latest/AWS.Tools.zip)` y extrayéndolos en uno de los directorios del módulo. Para saber cuáles son los directorios del módulo, puede imprimir el valor de la variable `$Env:PSModulePath`.
+ Instalar cada módulo de servicio de la PowerShell Galería mediante el `Install-Module` cmdlet.

**Cómo instalar `AWS.Tools` en Linux o macOS con el módulo de `AWS.Tools.Installer`**

1. Inicie una sesión PowerShell básica ejecutando el siguiente comando.

   ```
   $ pwsh
   ```
**nota**  
Te recomendamos que *no* te postules PowerShell como administrador con permisos elevados, excepto cuando lo exija la tarea en cuestión. Esto puede suponer un riesgo para la seguridad y no se atiene al principio de privilegios mínimos.

1. Para instalar el paquete de varios módulos de `AWS.Tools` con el módulo `AWS.Tools.Installer`, ejecute el siguiente comando.

   ```
   PS > Install-Module -Name AWS.Tools.Installer
   
   Untrusted repository
   You are installing the modules from an untrusted repository. If you trust this repository, change its InstallationPolicy value by running the Set-PSRepository cmdlet. Are you sure
    you want to install the modules from 'PSGallery'?
   [Y] Yes  [A] Yes to All  [N] No  [L] No to All  [S] Suspend  [?] Help (default is "N"): y
   ```

   Si se le notifica que el repositorio no es de confianza, se le preguntará si desea realizar la instalación de todos modos. Introduzca **y** para PowerShell permitir la instalación del módulo. Para evitar que aparezca el mensaje e instalar el módulo sin confiar en el repositorio, puede ejecutar el siguiente comando.

   ```
   PS > Install-Module -Name AWS.Tools.Installer -Force
   ```

1. Ahora puede instalar el módulo para cada servicio que desee utilizar. Por ejemplo, el siguiente comando instala los módulos de Amazon EC2 y Amazon S3. Este comando también instala los módulos dependientes necesarios para que el módulo especificado funcione. Por ejemplo, cuando instala el primer módulo de servicio `AWS.Tools`, también se instala `AWS.Tools.Common`. Se trata de un módulo compartido que requieren todos los módulos AWS de servicio. También elimina las versiones anteriores de los módulos y actualiza otros módulos a la misma versión.

   ```
   PS > Install-AWSToolsModule AWS.Tools.EC2,AWS.Tools.S3 -CleanUp
   Confirm
   Are you sure you want to perform this action?
     Performing the operation "Install-AWSToolsModule" on target "AWS Tools version 4.0.0.0".
     [Y] Yes  [A] Yes to All  [N] No  [L] No to All  [S] Suspend  [?] Help (default is "Y"):
   
     Installing module AWS.Tools.Common version 4.0.0.0
     Installing module AWS.Tools.EC2 version 4.0.0.0
     Installing module AWS.Tools.Glacier version 4.0.0.0
     Installing module AWS.Tools.S3 version 4.0.0.0
   
     Uninstalling AWS.Tools version 3.3.618.0
     Uninstalling module AWS.Tools.Glacier
     Uninstalling module AWS.Tools.S3
     Uninstalling module AWS.Tools.SimpleNotificationService
     Uninstalling module AWS.Tools.SQS
     Uninstalling module AWS.Tools.Common
   ```
**nota**  
El `Install-AWSToolsModule` cmdlet descarga todos los módulos solicitados del `PSRepository` nombre `PSGallery` ([https://www.powershellgallery.com/](https://www.powershellgallery.com/)) y considera el repositorio como una fuente de confianza. Utilice el comando `Get-PSRepository -Name PSGallery` para obtener más información sobre este repositorio de `PSRepository`.

   El comando anterior instala los módulos en los directorios predeterminados del sistema. Los directorios reales dependen de la distribución y la versión del sistema operativo y de la versión PowerShell que haya instalado. Por ejemplo, si instaló PowerShell 7 en un sistema similar a RHEL, lo más probable es que los módulos predeterminados estén ubicados en `/opt/microsoft/powershell/7/Modules` (o`$PSHOME/Modules`) y los módulos de usuario probablemente estén ubicados en. `~/.local/share/powershell/Modules` Para obtener más información, consulte [Instalar PowerShell en Linux](https://learn.microsoft.com/en-us/powershell/scripting/install/installing-powershell-on-linux) en el PowerShell sitio web de Microsoft. Para ver dónde están instalados los módulos, ejecute el siguiente comando:

   ```
   PS > Get-Module -ListAvailable
   ```

   Para instalar otros módulos, ejecute comandos similares con los nombres de módulo correspondientes, tal y como se encuentra en la [PowerShell Galería](https://www.powershellgallery.com/packages?q=aws).

## Instale AWSPower Shell. NetCore en Linux o macOS
<a name="install-netcore-on-linux-macos"></a>

Para actualizar a una versión más reciente de AWSPower Shell. NetCore, siga las instrucciones que se indican en[Actualización del Herramientas de AWS para PowerShell en Linux o macOS](#pstools-updating-linux). Desinstale las versiones anteriores de AWSPower Shell. NetCore primero.

Puede instalar AWSPower Shell. NetCore de dos maneras:
+ Descargando el módulo de `[AWSPowerShell.NetCore.zip](https://sdk-for-net.amazonwebservices.com/ps/v4/latest/AWSPowerShell.NetCore.zip)` y extrayéndolo en uno de los directorios del módulo. Para saber cuáles son los directorios del módulo, puede imprimir el valor de la variable `$Env:PSModulePath`.
+ Instalación desde la PowerShell Galería mediante el `Install-Module` cmdlet tal y como se describe en el siguiente procedimiento.

**Para instalar AWSPower Shell. NetCore en Linux o macOS mediante el cmdlet Install-Module**

Inicie una sesión de PowerShell Core ejecutando el siguiente comando.

```
$ pwsh
```

**nota**  
Te recomendamos que *no* empieces PowerShell por correr `sudo pwsh` para correr PowerShell con derechos de administrador elevados. Esto puede suponer un riesgo para la seguridad y no se atiene al principio de privilegios mínimos.

Para instalar el AWSPower Shell. NetCore paquete de un solo módulo de la PowerShell Galería, ejecute el siguiente comando.

```
PS > Install-Module -Name AWSPowerShell.NetCore

Untrusted repository
You are installing the modules from an untrusted repository. If you trust this repository, change its InstallationPolicy value by running the Set-PSRepository cmdlet. Are you sure
 you want to install the modules from 'PSGallery'?
[Y] Yes  [A] Yes to All  [N] No  [L] No to All  [S] Suspend  [?] Help (default is "N"): y
```

Si se le notifica que el repositorio no es de confianza, se le preguntará si desea realizar la instalación de todos modos. Introduzca **y** para PowerShell permitir la instalación del módulo. Para evitar que aparezca el mensaje que indica que el repositorio no es de confianza, puede ejecutar el siguiente comando.

```
PS > Install-Module -Name AWSPowerShell.NetCore -Force
```

No tiene que ejecutar este comando como root, a menos que desee instalarlo Herramientas de AWS para PowerShell para todos los usuarios de un equipo. Para ello, ejecute el siguiente comando en una PowerShell sesión con la que haya empezado`sudo pwsh`.

```
PS > Install-Module -Scope AllUsers -Name AWSPowerShell.NetCore -Force
```

## Ejecución de scripts
<a name="enable-script-execution"></a>

El comando `Set-ExecutionPolicy` no está disponible en los sistemas que no son Windows. Puede ejecutar`Get-ExecutionPolicy`, lo que demuestra que la configuración de política de ejecución predeterminada en PowerShell Core que se ejecuta en sistemas que no son Windows es`Unrestricted`. Para obtener más información, vea [Acerca de las directivas de ejecución](https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.core/about/about_execution_policies?view=powershell-5.1) en el sitio web de Microsoft Technet.

 Como `PSModulePath` incluye la ubicación del directorio del AWS módulo, el `Get-Module -ListAvailable` cmdlet muestra el módulo que ha instalado.

**`AWS.Tools`**

```
PS > Get-Module -ListAvailable

    Directory: /Users/username/.local/share/powershell/Modules

ModuleType Version    Name                                PSEdition ExportedCommands
---------- -------    ----                                --------- ----------------
Binary     3.3.563.1  AWS.Tools.Common                    Desk      {Clear-AWSHistory, Set-AWSHistoryConfiguration, Initialize-AWSDefaultConfiguration, Clear-AWSDefaultConfigurat…
```

**AWSPowerConcha. NetCore**

```
PS > Get-Module -ListAvailable

Directory: /Users/username/.local/share/powershell/Modules

ModuleType Version    Name                                ExportedCommands
---------- -------    ----                                ----------------
Binary     3.3.563.1  AWSPowerShell.NetCore
```

## Configure una PowerShell consola para usar el AWS Tools for PowerShell Core (AWSPowerShell). NetCore (Solo)
<a name="pstools-config-ps-window"></a>

PowerShell Por lo general, Core carga los módulos automáticamente cada vez que se ejecuta un cmdlet en el módulo. Pero esto no funciona para AWSPower Shell. NetCore debido a su gran tamaño. Para empezar a ejecutar AWSPower Shell. NetCore En los cmdlets, primero debe ejecutar el `Import-Module AWSPowerShell.NetCore` comando. Esto no es necesario en los cmdlets de los módulos `AWS.Tools`.

## Inicialice su sesión PowerShell
<a name="linux-config-init"></a>

Cuando inicie PowerShell en un sistema basado en Linux o macOS después de haber instalado el Herramientas de AWS para PowerShell, debe ejecutar [Initialize- AWSDefault Configuration](https://docs.aws.amazon.com/powershell/v4/reference/items/Initialize-AWSDefaultConfiguration.html) para especificar qué clave de acceso usar. AWS Para obtener más información acerca de `Initialize-AWSDefaultConfiguration`, consulte [Uso de AWS credenciales](specifying-your-aws-credentials.md).

**nota**  
En versiones anteriores (anteriores a la 3.3.96.0) del, este cmdlet recibía el nombre. Herramientas de AWS para PowerShell`Initialize-AWSDefaults`

## Control de versiones
<a name="pstools-versioning"></a>

AWS publica nuevas versiones del Herramientas de AWS para PowerShell periódicamente para admitir nuevos servicios y características. AWS Para determinar la versión Herramientas de AWS para PowerShell que ha instalado, ejecute el AWSPower ShellVersion cmdlet [Get-](https://docs.aws.amazon.com/powershell/v4/reference/items/Get-AWSPowerShellVersion.html).

Por ejemplo:

```
PS > Get-AWSPowerShellVersion

AWS Tools for PowerShell
Version 4.1.849
Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.

Amazon Web Services SDK for .NET
Core Runtime Version 3.7.402.75
Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.

Release notes: https://github.com/aws/aws-tools-for-powershell/blob/v4.1/changelogs/CHANGELOG.ALL.md

This software includes third party software subject to the following copyrights:
- Logging from log4net, Apache License
[http://logging.apache.org/log4net/license.html]
```

Para ver una lista de los AWS servicios compatibles en la versión actual de las herramientas, agregue el `-ListServiceVersionInfo` parámetro a un cmdlet [Get- AWSPower ShellVersion](https://docs.aws.amazon.com/powershell/v4/reference/items/Get-AWSPowerShellVersion.html).

Para determinar la versión PowerShell que está ejecutando, escriba `$PSVersionTable` para ver el contenido de la variable `$PSVersionTable` [automática](https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.core/about/about_automatic_variables?view=powershell-6).

Por ejemplo:

```
PS > $PSVersionTable
Name                           Value
----                           -----
PSVersion                      6.2.2
PSEdition                      Core
GitCommitId                    6.2.2
OS                             Darwin 18.7.0 Darwin Kernel Version 18.7.0: Tue Aug 20 16:57:14 PDT 2019; root:xnu-4903.271.2~2/RELEASE_X86_64
Platform                       Unix
PSCompatibleVersions           {1.0, 2.0, 3.0, 4.0…}
PSRemotingProtocolVersion      2.3
SerializationVersion           1.1.0.1
WSManStackVersion              3.0
```

## Actualización del Herramientas de AWS para PowerShell en Linux o macOS
<a name="pstools-updating-linux"></a>

Periódicamente, a medida que Herramientas de AWS para PowerShell se publiquen versiones actualizadas del, debes actualizar la versión que estás ejecutando localmente. 

### Actualización de módulos de `AWS.Tools` modularizados
<a name="update-aws.tools-all-systems"></a>

Para actualizar los módulos `AWS.Tools` a la versión más reciente, ejecute el siguiente comando:

```
PS > Update-AWSToolsModule -CleanUp
```

Este comando actualiza todos los módulos `AWS.Tools` que hay instalados actualmente y, en los módulos que se actualizaron correctamente, elimina las versiones anteriores.

**nota**  
El `Update-AWSToolsModule` cmdlet descarga todos los módulos del `PSRepository` nombre `PSGallery` ([https://www.powershellgallery.com/](https://www.powershellgallery.com/)) y lo considera una fuente de confianza. Utilice el comando `Get-PSRepository -Name PSGallery` para obtener más información sobre este repositorio de `PSRepository`.

### Actualice las herramientas para Core PowerShell
<a name="update-netcore-all-systems"></a>

Ejecute el `Get-AWSPowerShellVersion` cmdlet para determinar la versión que está ejecutando y compárela con la versión de Tools para Windows PowerShell que está disponible en el sitio web de [PowerShell Gallery](https://www.powershellgallery.com/packages/AWSPowerShell). Le sugerimos que revise cada dos o tres semanas. Support para nuevos comandos y AWS servicios solo está disponible después de actualizar a una versión con ese soporte.

Antes de instalar una versión más reciente de AWSPower Shell. NetCore, desinstale el módulo existente. Cierre todas PowerShell las sesiones abiertas antes de desinstalar el paquete existente. Ejecute el siguiente comando para desinstalar el paquete.

```
PS > Uninstall-Module -Name AWSPowerShell.NetCore -AllVersions
```

Cuando se haya completado la desinstalación del paquete, instale el módulo actualizado ejecutando el siguiente comando.

```
PS > Install-Module -Name AWSPowerShell.NetCore
```

Tras la instalación, ejecute el comando `Import-Module AWSPowerShell.NetCore` para cargar los cmdlets actualizados en la sesión PowerShell .

## Información relacionada
<a name="pstools-seealso-setup"></a>
+  [Comenzar a utilizar AWS SDK for JavaScript AWS Tools for Windows PowerShell](pstools-getting-started.md) 
+  [Trabaje con AWS los servicios del Herramientas de AWS para PowerShell](pstools-using.md) 

# Migración de la Herramientas de AWS para PowerShell versión 3.3 a la versión 4
<a name="v4migration"></a>

Herramientas de AWS para PowerShell la versión 4 es una actualización compatible con versiones anteriores de la versión 3.3. Herramientas de AWS para PowerShell Agrega mejoras significativas a la vez que mantiene el comportamiento existente del cmdlet. 

Los scripts existentes deberían seguir funcionando después de actualizar a la nueva versión, pero recomendamos que los pruebe a fondo antes de actualizar los entornos de producción.

En esta sección, se describen los cambios y se explica cómo pueden afectar a los scripts.

## Nueva versión de `AWS.Tools` dividida completamente en módulos
<a name="migrate-aws-tools"></a>

La concha. AWSPower NetCore y los paquetes de AWSPower Shell eran «monolíticos». Esto significaba que todos los AWS servicios eran compatibles con el mismo módulo, lo que lo hacía muy grande y crecía a medida que se añadían nuevos AWS servicios y funciones. El nuevo `AWS.Tools` paquete está dividido en módulos más pequeños que le ofrecen la flexibilidad de descargar e instalar solo los que necesite para los AWS servicios que utilice. El paquete incluye un módulo `AWS.Tools.Common` compartido que todos los demás módulos necesitan y un módulo `AWS.Tools.Installer` que simplifica la instalación, actualización y eliminación de módulos, en función de las necesidades.

Esto también permite importar automáticamente cmdlets en la primera llamada sin tener que invocar primero a `Import-module`. Sin embargo, para interactuar con los objetos.NET asociados antes de llamar a un cmdlet, debe seguir llamando `Import-Module` para PowerShell informar sobre los tipos de.NET pertinentes. 

Por ejemplo, el comando siguiente contiene una referencia a `Amazon.EC2.Model.Filter`. Este tipo de referencia no puede desencadenar la importación automática, por lo que será necesario llamar primero a `Import-Module` o el comando no se ejecutará correctamente.

```
PS > $filter = [Amazon.EC2.Model.Filter]@{Name="vpc-id";Values="vpc-1234abcd"}
  InvalidOperation: Unable to find type [Amazon.EC2.Model.Filter].
```

```
PS > Import-Module AWS.Tools.EC2
PS > $filter = [Amazon.EC2.Model.Filter]@{Name="vpc-id";Values="vpc-1234abcd"}
PS > Get-EC2Instance -Filter $filter -Select Reservations.Instances.InstanceId
  i-0123456789abcdefg
  i-0123456789hijklmn
```

## Nuevo cmdlet `Get-AWSService`
<a name="migrate-get-awsservice"></a>

Para ayudarle a descubrir los nombres de los módulos de cada AWS servicio del `AWS.Tools` conjunto de módulos, puede usar el `Get-AWSService` cmdlet.

```
PS > Get-AWSService
  Service : ACMPCA
  CmdletNounPrefix : PCA
  ModuleName : AWS.Tools.ACMPCA
  SDKAssemblyVersion : 3.3.101.56
  ServiceName : Certificate Manager Private Certificate Authority

  Service : AlexaForBusiness
  CmdletNounPrefix : ALXB
  ModuleName : AWS.Tools.AlexaForBusiness
  SDKAssemblyVersion : 3.3.106.26
  ServiceName : Alexa For Business
  ...
```

## Nuevo parámetro `-Select` para controlar el objeto devuelto por un cmdlet
<a name="migrate-select"></a>

La mayoría de los cmdlets de la versión 4 admiten el nuevo parámetro `-Select`. Cada cmdlet llama al AWS servicio APIs por usted mediante. AWS SDK para .NET A continuación, el Herramientas de AWS para PowerShell cliente convierte la respuesta en un objeto que puede utilizar en sus PowerShell scripts y canalizarla a otros comandos. A veces, el PowerShell objeto final tiene más campos o propiedades en la respuesta original de los necesarios y, en otras ocasiones, puede que desee que el objeto incluya campos o propiedades de la respuesta que no aparecen de forma predeterminada. El parámetro `-Select` permite especificar el contenido que se va a incluir en el objeto .NET devuelto por el cmdlet.

Por ejemplo, el [Get-S3Object](https://docs.aws.amazon.com/powershell/v4/reference/items/Get-S3Object.html)cmdlet invoca la operación del SDK de Amazon S3. [ListObjects](https://docs.aws.amazon.com/sdkfornet/v3/apidocs/index.html?page=S3/MS3ListObjectsListObjectsRequest.html) Esa operación devuelve un objeto. [ListObjectsResponse](https://docs.aws.amazon.com/sdkfornet/v3/apidocs/index.html?page=S3/MS3ListObjectsListObjectsRequest.h) Sin embargo, de forma predeterminada, el `Get-S3Object` cmdlet devuelve al usuario solo el `S3Objects` elemento de la respuesta del PowerShell SDK. En el siguiente ejemplo, ese objeto es una matriz con dos elementos.

```
PS > Get-S3Object -BucketName amzn-s3-demo-bucket

ETag : "01234567890123456789012345678901111"
BucketName : amzn-s3-demo-bucket
Key : file1.txt
LastModified : 9/30/2019 1:31:40 PM
Owner : Amazon.S3.Model.Owner
Size : 568
StorageClass : STANDARD

ETag : "01234567890123456789012345678902222"
BucketName : amzn-s3-demo-bucket
Key : file2.txt
LastModified : 7/15/2019 9:36:54 AM
Owner : Amazon.S3.Model.Owner
Size : 392
StorageClass : STANDARD
```

En la Herramientas de AWS para PowerShell versión 4, puedes especificar `-Select *` que se devuelva el objeto de respuesta de.NET completo devuelto por la llamada a la API del SDK.

```
PS > Get-S3Object -BucketName amzn-s3-demo-bucket -Select *
  IsTruncated    : False
  NextMarker     :
  S3Objects      : {file1.txt, file2.txt}
  Name           : amzn-s3-demo-bucket
  Prefix         :
  MaxKeys        : 1000
  CommonPrefixes : {}
  Delimiter      :
```

También puede especificar la ruta de acceso a una propiedad anidada específica que desee. En el ejemplo siguiente, solo se devuelve la propiedad `Key` de cada elemento de la matriz `S3Objects`.

```
PS > Get-S3Object -BucketName amzn-s3-demo-bucket -Select S3Objects.Key
file1.txt
file2.txt
```

En determinadas situaciones, puede ser útil devolver un parámetro de cmdlet. Puede hacerlo con `-Select ^ParameterName`. Esta función suplanta al parámetro `-PassThru`, que, aunque sigue estando disponible, se ha quedado obsoleto. 

```
PS > Get-S3Object -BucketName amzn-s3-demo-bucket -Select S3Objects.Key |
>> Write-S3ObjectTagSet -Select ^Key -BucketName amzn-s3-demo-bucket -Tagging_TagSet @{ Key='key'; Value='value'}
  file1.txt
  file2.txt
```

[En el tema de referencia](https://docs.aws.amazon.com/powershell/v4/reference/) de cada cmdlet, se indica si se admite el parámetro `-Select`.

## Limitación más coherente del número de elementos de la salida
<a name="migrate-iterate"></a>

Las versiones anteriores de Herramientas de AWS para PowerShell permitían usar el `-MaxItems` parámetro para especificar el número máximo de objetos devueltos en la salida final.

Este comportamiento se ha eliminado en `AWS.Tools`.

Este comportamiento está obsoleto en AWSPower Shell. NetCore y AWSPower Shell, y se eliminará de esas versiones en un futuro lanzamiento.

Si la API del servicio subyacente es compatible con el parámetro `MaxItems`, seguirá estando disponible y funcionará tal y como especifica la API. Sin embargo, no dispondrá del comportamiento adicional que permite limitar el número de elementos devueltos en el resultado del cmdlet.

Para limitar el número de elementos devueltos en el resultado final, canalice el resultado al `Select-Object` cmdlet y especifique el `-First n` parámetro, que *n* es el número máximo de elementos que se van a incluir en el resultado final.

```
PS > Get-S3ObjectV2 -BucketName amzn-s3-demo-bucket -Select S3Objects.Key | select -first 2
file1.txt
file2.txt
```

No todos los AWS servicios son compatibles `-MaxItems` de la misma manera, por lo que se elimina esa incoherencia y los resultados inesperados que se producían en ocasiones. Además, `-MaxItems` combinado con el nuevo parámetro [`-Select`](#migrate-select) podría dar lugar en ocasiones a resultados confusos.

## Parámetros de flujo más fáciles de usar
<a name="migrate-streamparam"></a>

Los parámetros de tipo `Stream` o `byte[]` ahora pueden aceptar valores `string`, `string[]` o `FileInfo`.

Por ejemplo, puede utilizar cualquiera de los siguientes ejemplos.

```
PS > Invoke-LMFunction -FunctionName MyTestFunction -PayloadStream '{
>> "some": "json"
>> }'
```

```
PS > Invoke-LMFunction -FunctionName MyTestFunction -PayloadStream (ls .\some.json)
```

```
PS > Invoke-LMFunction -FunctionName MyTestFunction -PayloadStream @('{', '"some": "json"', '}')
```

 Herramientas de AWS para PowerShell convierte todas las cadenas para que `byte[]` utilicen la codificación UTF-8.

## Ampliación de la canalización por nombre de propiedad
<a name="migrate-pipes"></a>

Para que la experiencia del usuario sea más coherente, ahora puede pasar la entrada de la canalización especificando el nombre de propiedad de *cualquier* parámetro. 

En el ejemplo siguiente, creamos un objeto personalizado con propiedades cuyos nombres coinciden con los nombres de parámetro del cmdlet de destino. Cuando se ejecuta el cmdlet, automáticamente consume esas propiedades como parámetros.

```
PS > [pscustomobject] @{ BucketName='amzn-s3-demo-bucket'; Key='file1.txt'; PartNumber=1 } | Get-S3ObjectMetadata
```

**nota**  
Algunas propiedades lo admitían en versiones anteriores de. Herramientas de AWS para PowerShell La versión 4 hace que este comportamiento sea más coherente, ya que está habilitado en *todos* los parámetros.

## Parámetros comunes estáticos
<a name="migrate-staticcommonparams"></a>

Para mejorar la coherencia en la versión 4.0 de Herramientas de AWS para PowerShell, todos los parámetros son estáticos.

En versiones anteriores de Herramientas de AWS para PowerShell, algunos parámetros comunes como`AccessKey`,`SecretKey`, o`ProfileName`, eran [dinámicos `Region`](https://docs.microsoft.com/dotnet/api/system.management.automation.idynamicparameters), mientras que todos los demás eran estáticos. Esto podría crear problemas porque PowerShell vincula los parámetros estáticos antes que los dinámicos. Por ejemplo, supongamos que antes ejecutaba el siguiente comando.

```
PS > Get-EC2Region -Region us-west-2
```

Las versiones anteriores de PowerShell vinculaban el valor `us-west-2` al parámetro `-RegionName` estático en lugar del `-Region` dinámico. Probablemente, esto podría confundir a los usuarios.

## `AWS.Tools` declara y aplica parámetros obligatorios
<a name="migrate-mandatoryparams"></a>

Todos los módulos de `AWS.Tools.*` ahora declaran y aplican parámetros de cmdlet obligatorios. Cuando un AWS servicio declara que se requiere un parámetro de una API, PowerShell le solicita el parámetro del cmdlet correspondiente si no lo especificó. Esto solo es aplicable a `AWS.Tools`. Para garantizar la compatibilidad con versiones anteriores, esto no se aplica a Shell. AWSPower NetCore o AWSPower Shell.

## Todos los parámetros pueden ser nulos
<a name="migrate-nullableparams"></a>

Ahora puede asignar `$null` a los parámetros de tipo de valor (números y fechas). Este cambio no debería afectar a los scripts existentes. Esto le permitirá omitir el mensaje sobre la obligatoriedad de un parámetro. Los parámetros obligatorios solo se aplican forzosamente en `AWS.Tools`.

Si ejecuta el siguiente ejemplo utilizando la versión 4, se omitirá eficazmente la validación del lado del cliente porque se proporcionará un «valor» para cada parámetro obligatorio. Sin embargo, se produce un error en la llamada al servicio de la API de Amazon EC2 porque el AWS servicio sigue necesitando esa información.

```
PS > Get-EC2InstanceAttribute -InstanceId $null -Attribute $null
WARNING: You are passing $null as a value for parameter Attribute which is marked as required.
In case you believe this parameter was incorrectly marked as required, report this by opening 
an issue at [https://github.com/aws/aws-tools-for-powershell/issues](https://github.com/aws/aws-tools-for-powershell/issues).
WARNING: You are passing $null as a value for parameter InstanceId which is marked as required.
In case you believe this parameter was incorrectly marked as required, report this by opening
an issue at [https://github.com/aws/aws-tools-for-powershell/issues](https://github.com/aws/aws-tools-for-powershell/issues).

Get-EC2InstanceAttribute : The request must contain the parameter instanceId
```

## Eliminación de características que ya estaban obsoletas
<a name="migrate-removeprevdeprecated"></a>

Las siguientes funciones quedaron obsoletas en las versiones anteriores de la versión 4 Herramientas de AWS para PowerShell y se eliminaron en la versión 4:
+ El parámetro `-Terminate` se ha eliminado del cmdlet `Stop-EC2Instance`. En su lugar, use `Remove-EC2Instance`.
+ Se quitó el `-ProfileName` parámetro del AWSCredential cmdlet Clear-. En su lugar, use `Remove-AWSCredentialProfile`.
+ Los cmdlets `Import-EC2Instance` y `Import-EC2Volume` se han eliminado.