

Ferramentas da AWS para PowerShell O V4 entrou no modo de manutenção.

Recomendamos que você migre para a [Ferramentas da AWS para PowerShell V5](https://docs.aws.amazon.com/powershell/v5/userguide/). Para obter detalhes e informações adicionais sobre como migrar, consulte nosso [anúncio do modo de manutenção](https://aws.amazon.com/blogs/developer/aws-tools-for-powershell-v4-maintenance-mode-announcement/).

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

# Instalar o Ferramentas da AWS para PowerShell
<a name="pstools-getting-set-up"></a>

Para instalar e usar os cmdlets do Ferramentas da AWS para PowerShell com êxito, consulte as etapas nos tópicos a seguir.

**Topics**
+ [Instalar no Windows](pstools-getting-set-up-windows.md)
+ [Instalar no Linux ou no macOS](pstools-getting-set-up-linux-mac.md)
+ [Migrando da Ferramentas da AWS para PowerShell versão 3.3 para a versão 4](v4migration.md)

# Instalar a Ferramentas da AWS para PowerShell no Windows
<a name="pstools-getting-set-up-windows"></a>

Um computador baseado no Windows pode executar uma das seguintes opções de pacote do Ferramentas da AWS para PowerShell:
+ [**`AWS.Tools`**](#ps-installing-awstools) - a versão modularizada do Ferramentas da AWS para PowerShell. Cada serviço da AWS é compatível com seu próprio módulo individual pequeno, com os módulos compartilhados de suporte `AWS.Tools.Common` e `AWS.Tools.Installer`.
+ [**AWSPowerShell.NetCore**](#ps-installing-awspowershellnetcore): a versão de módulo único do Ferramentas da AWS para PowerShell. Todos os serviços da AWS são compatíveis com esse único módulo grande.
**nota**  
Esteja ciente de que o módulo único pode ser muito grande para ser usado com funções [AWS Lambda](https://aws.amazon.com/lambda/). Em vez disso, use a versão modularizada mostrada acima.
+ [**AWSPowerShell**](#ps-installing-awswindowspowershell): a versão legada de módulo grande e único do Ferramentas da AWS para PowerShell específica do Windows. Todos os serviços da AWS são compatíveis com esse único módulo grande.

O pacote escolhido depende da versão e edição do Windows sendo executado. 

**nota**  
O Ferramentas da AWS para PowerShell é instalado por padrão em todas as imagens de máquina da Amazon (AMIs) do Windows. A opção instalada depende da AMI. Muitas AMIs têm o módulo AWSPowerShell, mas algumas podem ter uma opção diferente. Por exemplo, as AMIs do Amazon EC2 para Windows Server 2025 usam a opção modular `AWS.Tools`.

A configuração do Ferramentas da AWS para PowerShell envolve as tarefas de alto nível descritas em detalhes a seguir nesse tópico.

1. Instale a opção de pacote do Ferramentas da AWS para PowerShell que seja apropriada para o seu ambiente.

1. Verifique se a execução do script está habilitada ao executar o cmdlet `Get-ExecutionPolicy`.

1. Importe o módulo do Ferramentas da AWS para PowerShell para a sua sessão do PowerShell.

## Pré-requisitos
<a name="prerequisites"></a>

As versões mais recentes do PowerShell, incluindo o PowerShell Core, estão disponíveis como downloads da Microsoft em [Instalar várias versões do PowerShell](https://docs.microsoft.com/en-us/powershell/scripting/install/installing-powershell) no site da Microsoft.

## Instalar o `AWS.Tools` no Windows
<a name="ps-installing-awstools"></a>

É possível instalar a versão modularizada do Ferramentas da AWS para PowerShell em computadores que executam o Windows com Windows PowerShell 5.1 ou PowerShell Core 6.0 ou posterior. Para obter informações sobre como instalar o PowerShell Core, consulte [Instalar várias versões do PowerShell](https://docs.microsoft.com/en-us/powershell/scripting/install/installing-powershell) no site da Microsoft.

Você pode instalar o `AWS.Tools` de três maneiras:
+ Usando os cmdlets do módulo `AWS.Tools.Installer`. Este módulo `AWS.Tools` simplifica a instalação e a atualização de outros módulos. O `AWS.Tools.Installer` exige `PowerShellGet`, e automaticamente baixa e instala uma versão atualizada dele. O `AWS.Tools.Installer` mantém automaticamente as versões do módulo sincronizadas. Quando você instala ou atualiza para uma nova versão de um módulo, os cmdlets em `AWS.Tools.Installer` atualizam automaticamente todos os outros módulos `AWS.Tools` para a mesma versão.

  Esse método está descrito no procedimento a seguir.
+ Baixando os módulos de `[AWS.Tools.zip](https://sdk-for-net.amazonwebservices.com/ps/v4/latest/AWS.Tools.zip)` e extração em uma das pastas do módulo. É possível descobrir as pastas de módulo exibindo o valor da variável de ambiente `PSModulePath`.
**Atenção**  
Depois do download do arquivo ZIP e antes da extração do conteúdo, talvez seja necessário desbloqueá-lo. Isso costuma ser feito abrindo as propriedades do arquivo, exibindo a guia **Geral** e marcando a caixa de seleção **Desbloquear**, se houver.  
Se o arquivo ZIP precisar ser desbloqueado, mas você não fizer isso, você poderá receber erros semelhantes aos seguintes: “Import-Module : não foi possível carregar o arquivo ou o assembly”.
+ Instalação de cada módulo de serviço na Galeria do PowerShell usando o cmdlet `Install-Module`.

**Para instalar `AWS.Tools` no Windows usando o módulo `AWS.Tools.Installer`**

1. Inicie uma sessão do PowerShell.
**nota**  
Recomendamos que você *não* execute o PowerShell como um administrador com permissões elevadas, exceto quando for exigido pela tarefa m questão. Isso se deve ao risco potencial de segurança e é consistente com o princípio do privilégio mínimo.

1. Para instalar o pacote do `AWS.Tools` modularizado, execute o comando a seguir.

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

   Se for notificado de que o repositório é "não confiável", você será solicitado a confirmar se deseja instalar de qualquer maneira. Digite **y** para permitir que o PowerShell instale o módulo. Para evitar o prompt e instalar o módulo sem confiar no repositório, você pode executar o comando com o parâmetro `-Force`.

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

1. Agora você pode instalar o módulo para cada serviço da AWS que deseja usar com o cmdlet `Install-AWSToolsModule`. Por exemplo, o comando a seguir instala os módulos do Amazon EC2 e do Amazon S3. Esse comando também instala todos os módulos dependentes que são exigidos para que o módulo especificado funcione. Por exemplo, ao instalar o primeiro módulo do serviço `AWS.Tools`, ele também instala `AWS.Tools.Common`. Esse é um módulo compartilhado exigido por todos os módulos de serviço da AWS. Ele também remove as versões mais antigas dos módulos e atualiza outros módulos para a mesma versão mais recente.

   ```
   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**  
O cmdlet `Install-AWSToolsModule` faz download de todos os módulos solicitados do `PSRepository` chamado `PSGallery` ([https://www.powershellgallery.com/](https://www.powershellgallery.com/)) e o considera como uma fonte confiável. Use o comando `Get-PSRepository -Name PSGallery` para obter mais informações sobre esse `PSRepository`.

   Por padrão, o comando anterior instala módulos na pasta `%USERPROFILE%\Documents\WindowsPowerShell\Modules`. Para instalar o Ferramentas da AWS para PowerShell para todos os usuários de um computador, é necessário executar o comando a seguir em uma sessão do PowerShell que você iniciou como administrador. Por exemplo, o comando a seguir instala o módulo do IAM na pasta `%ProgramFiles%\WindowsPowerShell\Modules` que pode ser acessada por todos os usuários.

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

   Para instalar outros módulos, execute comandos semelhantes com os nomes de módulo apropriados, conforme encontrado em [PowerShell Gallery](https://www.powershellgallery.com/packages?q=aws).

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

É possível instalar o AWSPowerShell.NetCore em computadores que executam o Windows com o PowerShell versão 3 a 5.1 ou PowerShell Core 6.0 ou posterior. Para obter informações sobre como instalar o PowerShell Core, consulte [Instalar várias versões do PowerShell](https://docs.microsoft.com/en-us/powershell/scripting/install/installing-powershell) no site do Microsoft PowerShell.

É possível instalar o AWSPowerShell.NetCore de uma duas formas
+ Baixando o módulo [AWSPowerShell.NetCore.zip](https://sdk-for-net.amazonwebservices.com/ps/v4/latest/AWSPowerShell.NetCore.zip) e extraindo-o em um dos diretórios do módulo. É possível descobrir os diretórios do módulo exibindo o valor da variável de ambiente `PSModulePath`.
**Atenção**  
Depois do download do arquivo ZIP e antes da extração do conteúdo, talvez seja necessário desbloqueá-lo. Isso costuma ser feito abrindo as propriedades do arquivo, exibindo a guia **Geral** e marcando a caixa de seleção **Desbloquear**, se houver.  
Se o arquivo ZIP precisar ser desbloqueado, mas você não fizer isso, você poderá receber erros semelhantes aos seguintes: “Import-Module : não foi possível carregar o arquivo ou o assembly”.
+ Instalando a partir da Galeria do PowerShell usando o cmdlet `Install-Module`, conforme descrito no procedimento a seguir.

**Para instalar o AWSPowerShell.NetCore pela Galeria do PowerShell usando o cmdlet Install-Module**

Para instalar o AWSPowerShell.NetCore a partir da Galeria do PowerShell, seu computador deve estar executando o PowerShell 5.0 ou posterior ou executando o [PowerShellGet](https://www.powershellgallery.com/packages/PowerShellGet) no PowerShell 3 ou posterior. Execute o comando a seguir.

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

Se você estiver executando o PowerShell como administrador, o comando anterior instalará o Ferramentas da AWS para PowerShell para todos os usuários no computador. Se você estiver executando o PowerShell como um usuário padrão sem permissões de administrador, esse mesmo comando instalará o Ferramentas da AWS para PowerShell apenas para o usuário atual.

Para instalar apenas para o usuário atual quando esse usuário tiver permissões de administrador, execute o comando com o conjunto de parâmetros do `-Scope CurrentUser` conforme indicado a seguir.

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

Embora o PowerShell 3.0 ou versões mais recentes normalmente carreguem módulos na sessão do PowerShell na primeira vez que você executa um cmdlet no módulo, o módulo AWSPowerShell.NetCore é muito grande para oferecer suporte a essa funcionalidade. Você deve carregar explicitamente o módulo AWSPowerShell.NetCore Core na sessão do PowerShell executando o comando a seguir.

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

Para carregar o módulo AWSPowerShell.NetCore na sessão do PowerShell automaticamente, adicione esse comando ao seu perfil do PowerShell. Para obter mais informações sobre como editar seu perfil do PowerShell, consulte [About Profiles (Sobre perfis)](https://docs.microsoft.com/powershell/module/microsoft.powershell.core/about/about_profiles) na documentação do PowerShell.

## Instalar o AWSPowerShell no Windows PowerShell
<a name="ps-installing-awswindowspowershell"></a>

Você pode instalar o AWS Tools for Windows PowerShell de duas maneiras:
+ Baixando o módulo de [AWSPowerShell.zip](https://sdk-for-net.amazonwebservices.com/ps/v4/latest/AWSPowerShell.zip) e extraindo-o em um dos diretórios do módulo. É possível descobrir os diretórios do módulo exibindo o valor da variável de ambiente `PSModulePath`.
**Atenção**  
Depois do download do arquivo ZIP e antes da extração do conteúdo, talvez seja necessário desbloqueá-lo. Isso costuma ser feito abrindo as propriedades do arquivo, exibindo a guia **Geral** e marcando a caixa de seleção **Desbloquear**, se houver.  
Se o arquivo ZIP precisar ser desbloqueado, mas você não fizer isso, você poderá receber erros semelhantes aos seguintes: “Import-Module : não foi possível carregar o arquivo ou o assembly”.
+ Instalando a partir da Galeria do PowerShell usando o cmdlet `Install-Module` conforme descrito no procedimento a seguir.

**Para instalar o AWSPowerShell pela Galeria do PowerShell usando o cmdlet Install-Module**

Você poderá instalar o AWSPowerShell a partir da Galeria do PowerShell se estiver executando o PowerShell 5.0 ou posterior ou tiver instalado o [PowerShellGet](https://www.powershellgallery.com/packages/PowerShellGet) no PowerShell 3 ou posterior. Você pode instalar e atualizar o AWSPowerShell a partir da [Galeria do PowerShell](https://www.powershellgallery.com/packages/AWSPowerShell) da Microsoft executando o comando a seguir.

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

Para carregar o módulo AWSPowerShell na sessão do PowerShell automaticamente, adicione o cmdlet `import-module` anterior em seu perfil do PowerShell. Para obter mais informações sobre como editar seu perfil do PowerShell, consulte [About Profiles (Sobre perfis)](https://docs.microsoft.com/powershell/module/microsoft.powershell.core/about/about_profiles?view=powershell-6) na documentação do PowerShell.

**nota**  
O Tools for Windows PowerShell é instalado por padrão em todas as imagens de máquina da Amazon (AMIs) baseadas em Windows.

## Ativar a execução do script
<a name="enable-script-execution"></a>

Para carregar os módulos do Ferramentas da AWS para PowerShell, você deve habilitar a execução de script do PowerShell. Para habilitar a execução do script, execute o cmdlet `Set-ExecutionPolicy` para definir uma política de `RemoteSigned`. Para obter mais informações, consulte [About Execution Policies](https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.core/about/about_execution_policies) no site da Microsoft Technet.

**nota**  
Este é um requisito apenas para computadores que executam o Windows. A restrição de segurança `ExecutionPolicy` não está presente em outros sistemas operacionais.

 **Para ativar a execução do script** 

1. São necessários direitos de administrador para definir a política de execução. Caso não esteja conectado como usuário com direitos de administrador, abra uma sessão do PowerShell como Administrador. Escolha **Start (Iniciar)** e selecione **All Programs (Todos os programas)**. Escolha **Accessories (Acessórios)** e selecione **Windows PowerShell**. Clique com o botão direito em **Windows PowerShell** e, no menu de contexto, escolha **Run as administrator (Executar como administrador)**.

1. No prompt de comando, digite o seguinte.

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

**nota**  
Em um sistema de 64 bits, você deve fazer isso separadamente para a versão de 32 bits do PowerShell, **Windows PowerShell (x86)**.

Caso não tenha a política de execução definida corretamente, o PowerShell exibe o seguinte erro sempre que você tentar executar um script, assim como o seu 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
```

O instalador do Tools for Windows PowerShell atualiza automaticamente o valor de [PSModulePath](http://msdn.microsoft.com/en-us/library/windows/desktop/dd878326.aspx) para incluir o local do diretório que contém o módulo `AWSPowerShell`. 

Como o `PSModulePath` inclui o local do diretório do módulo da AWS, o cmdlet `Get-Module -ListAvailable` mostra o 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...
```

## Versionamento
<a name="pstools-versioning"></a>

A AWS lança novas versões do Ferramentas da AWS para PowerShell periodicamente para oferecer suporte a novos produtos e recursos da AWS. Para determinar a versão do Tools que você instalou, execute o cmdlet [Get-AWSPowerShellVersion](https://docs.aws.amazon.com/powershell/v4/reference/items/Get-AWSPowerShellVersion.html):

Por exemplo:

```
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]
```

Você também pode adicionar o parâmetro `-ListServiceVersionInfo` a um comando [Get-AWSPowerShellVersion](https://docs.aws.amazon.com/powershell/v4/reference/items/Get-AWSPowerShellVersion.html) para ver uma lista dos serviços da AWS compatíveis com a versão atual das ferramentas. Se você usar a opção modularizada `AWS.Tools.*`, somente os módulos importados atualmente serão exibidos.

Por exemplo:

```
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 a versão do PowerShell que você está executando, insira `$PSVersionTable` para visualizar o conteúdo da [variável automática](https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.core/about/about_automatic_variables?view=powershell-6) \$1PSVersionTable.

Por exemplo:

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

## Atualizar o Ferramentas da AWS para PowerShell no Windows
<a name="pstools-updating"></a>

Periodicamente, à medida que as versões atualizadas do Ferramentas da AWS para PowerShell são lançadas, é necessário atualizar a versão que está sendo executada localmente. 

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

A fim de atualizar os módulos `AWS.Tools` para a versão mais recente, execute o seguinte comando:

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

Esse comando atualiza todos os `AWS.Tools` módulos instalados no momento e, após uma atualização bem-sucedida, remove outras versões instaladas.

**nota**  
O cmdlet `Update-AWSToolsModule` faz download de todos os módulos do `PSRepository` chamado `PSGallery` ([https://www.powershellgallery.com/](https://www.powershellgallery.com/)) e o considera como uma fonte confiável. Use o comando: `Get-PSRepository -Name PSGallery` para obter mais informações sobre esse `PSRepository`.

### Atualizar o Tools for PowerShell Core
<a name="update-the-tools-for-powershell-core"></a>

Execute o cmdlet `Get-AWSPowerShellVersion` para determinar a versão que você está executando e compará-la com a versão do Tools for Windows PowerShell que está disponível no site [Galeria do PowerShell](https://www.powershellgallery.com/packages/AWSPowerShell). Sugerimos verificar a cada duas ou três semanas. O suporte para novos comandos e produtos da AWS estará disponível somente após a atualização para uma versão com esse suporte.

Antes de instalar uma versão mais recente do AWSPowerShell.NetCore, desinstale o módulo existente. Feche todas as sessões do PowerShell antes de desinstalar o pacote existente. Execute o seguinte comando para desinstalar o pacote.

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

Depois de desinstalar o pacote, instale o módulo atualizado executando o comando a seguir.

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

Após a instalação, execute o comando `Import-Module AWSPowerShell.NetCore` para carregar os cmdlets atualizados na sessão do PowerShell.

### Atualizar o Tools for Windows PowerShell
<a name="update-the-tools-for-windows-powershell"></a>

Execute o cmdlet `Get-AWSPowerShellVersion` para determinar a versão que você está executando e compará-la com a versão do Tools for Windows PowerShell que está disponível no site [Galeria do PowerShell](https://www.powershellgallery.com/packages/AWSPowerShell). Sugerimos verificar a cada duas ou três semanas. O suporte para novos comandos e produtos da AWS estará disponível somente após a atualização para uma versão com esse suporte.
+ Se você instalou usando o cmdlet `Install-Module`, execute os comandos a seguir.

  ```
  PS > Uninstall-Module -Name AWSPowerShell -AllVersions
  PS > Install-Module -Name AWSPowerShell
  ```
+ Se você instalou usando um arquivo ZIP baixado:

  1. Faça download da versão mais recente do site do [Tools for PowerShell](https://aws.amazon.com/powershell/). Compare o número da versão do pacote no nome do arquivo baixado com o número da versão obtido ao executar o cmdlet `Get-AWSPowerShellVersion`.

  1. Se a versão baixada for um número mais alto que a versão instalada, feche todos os consoles do Tools for Windows PowerShell.

  1. Instale a versão mais recente do Tools for Windows PowerShell.

Após a instalação, execute o `Import-Module AWSPowerShell` para carregar os cmdlets atualizados na sessão do PowerShell. Ou execute o console personalizado do Ferramentas da AWS para PowerShell no menu **Start (Iniciar)**.

# Instalando Ferramentas da AWS para PowerShell no Linux ou macOS
<a name="pstools-getting-set-up-linux-mac"></a>

Este tópico fornece instruções sobre como instalar o Ferramentas da AWS para PowerShell no Linux ou no macOS.

## Visão geral da configuração
<a name="pstools-installing-core-prerequisites"></a>

Para instalar Ferramentas da AWS para PowerShell em um computador Linux ou macOS, você pode escolher entre duas opções de pacote:
+ [**`AWS.Tools`**](#install-aws.tools-on-linux-macos)— A versão modularizada do. Ferramentas da AWS para PowerShell Cada AWS serviço é suportado por seu próprio módulo pequeno e individual, com módulos de suporte compartilhados`AWS.Tools.Common`.
+ [**AWSPowerConcha. NetCore**](#install-netcore-on-linux-macos) — A versão única e de módulo grande do. Ferramentas da AWS para PowerShell Todos os AWS serviços são suportados por esse módulo único e grande.
**nota**  
Esteja ciente de que o módulo único pode ser muito grande para ser usado com funções [AWS Lambda](https://aws.amazon.com/lambda/). Em vez disso, use a versão modularizada mostrada acima.

 A respectiva configuração em um computador com Linux ou macOS envolve as seguintes tarefas, descritas em detalhes posteriormente nesse tópico:

1. Instale o PowerShell Core 6.0 ou posterior em um sistema compatível.

1. Depois de instalar o PowerShell Core, comece PowerShell executando `pwsh` no shell do sistema.

1. Instale um `AWS.Tools` ou o AWSPower Shell. NetCore.

1. Execute o `Import-Module` cmdlet apropriado para importar o módulo para sua PowerShell sessão.

1. Execute o cmdlet [AWSDefaultInitialize-Configuration](https://docs.aws.amazon.com/powershell/v4/reference/items/Initialize-AWSDefaultConfiguration.html) para fornecer suas credenciais. AWS 

## Pré-requisitos
<a name="prerequisites"></a>

Para executar o AWS Tools for PowerShell Core, seu computador deve estar executando o PowerShell Core 6.0 ou posterior. 
+ Para obter uma lista das versões suportadas da plataforma Linux e obter informações sobre como instalar a versão mais recente do PowerShell em um computador baseado em Linux, consulte [Instalando PowerShell no Linux no site](https://docs.microsoft.com/en-us/powershell/scripting/install/installing-powershell-core-on-linux) da Microsoft. Alguns sistemas operacionais baseados em Linux, como Arch, Kali e Raspbian, não são oficialmente compatíveis, mas têm níveis variáveis de suporte da comunidade.
+ Para obter informações sobre as versões compatíveis do macOS e sobre como instalar a versão mais recente do no PowerShell macOS, consulte Instalação [no PowerShell macOS no site](https://docs.microsoft.com/en-us/powershell/scripting/install/installing-powershell-core-on-macos) da Microsoft.

## Instalar o `AWS.Tools` no Linux ou no macOS
<a name="install-aws.tools-on-linux-macos"></a>

Você pode instalar a versão modularizada do Ferramentas da AWS para PowerShell em computadores que estejam executando o PowerShell Core 6.0 ou posterior. Para obter informações sobre como instalar o PowerShell Core, consulte [Instalando várias versões do PowerShell](https://docs.microsoft.com/en-us/powershell/scripting/install/installing-powershell) no PowerShell site da Microsoft. 

Você pode instalar o `AWS.Tools` de três maneiras:
+ Usando os cmdlets do módulo `AWS.Tools.Installer`. Este módulo `AWS.Tools` simplifica a instalação e a atualização de outros módulos. O `AWS.Tools.Installer` exige `PowerShellGet`, e automaticamente baixa e instala uma versão atualizada dele. O `AWS.Tools.Installer` mantém automaticamente as versões do módulo sincronizadas. Quando você instala ou atualiza para uma nova versão de um módulo, os cmdlets em `AWS.Tools.Installer` atualizam automaticamente todos os outros módulos `AWS.Tools` para a mesma versão.

  Esse método está descrito no procedimento a seguir.
+ Download dos módulos de `[AWS.Tools.zip](https://sdk-for-net.amazonwebservices.com/ps/v4/latest/AWS.Tools.zip)` e extração em um dos diretórios do módulo. Você pode descobrir seus diretórios de módulo imprimindo o valor da variável `$Env:PSModulePath`.
+ Instalando cada módulo de serviço da PowerShell Galeria usando o `Install-Module` cmdlet.

**Para instalar `AWS.Tools` no Linux ou no macOS usando o módulo `AWS.Tools.Installer`**

1. Inicie uma sessão PowerShell principal executando o comando a seguir.

   ```
   $ pwsh
   ```
**nota**  
Recomendamos que você *não* execute PowerShell como administrador com permissões elevadas, exceto quando exigido pela tarefa em questão. Isso se deve ao risco potencial de segurança e é consistente com o princípio do privilégio mínimo.

1. Para instalar o pacote `AWS.Tools` modularizado usando o módulo `AWS.Tools.Installer`, execute o comando a seguir.

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

   Se você for notificado de que o repositório é "não confiável", você será solicitado a confirmar se deseja prosseguir com a instalação. Digite **y** para permitir PowerShell a instalação do módulo. Para evitar o prompt e instalar o módulo sem confiar no repositório, você pode executar o comando a seguir.

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

1. Agora você pode instalar o módulo para cada serviço que deseja usar. Por exemplo, o comando a seguir instala os módulos do Amazon EC2 e do Amazon S3. Esse comando também instala todos os módulos dependentes que são exigidos para que o módulo especificado funcione. Por exemplo, ao instalar o primeiro módulo do serviço `AWS.Tools`, ele também instala `AWS.Tools.Common`. Esse é um módulo compartilhado exigido por todos os módulos AWS de serviço. Ele também remove as versões mais antigas dos módulos e atualiza outros módulos para a mesma versão mais recente.

   ```
   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**  
O `Install-AWSToolsModule` cmdlet baixa todos os módulos solicitados do `PSRepository` nome `PSGallery` ([https://www.powershellgallery.com/](https://www.powershellgallery.com/)) e considera o repositório como uma fonte confiável. Use o comando `Get-PSRepository -Name PSGallery` para obter mais informações sobre esse `PSRepository`.

   O comando anterior instala os módulos nos diretórios-padrão do seu sistema. Os diretórios reais dependem da distribuição e da versão do sistema operacional e da PowerShell versão instalada. Por exemplo, se você instalou o PowerShell 7 em um sistema semelhante ao RHEL, os módulos padrão provavelmente estão localizados em `/opt/microsoft/powershell/7/Modules` (ou`$PSHOME/Modules`) e os módulos do usuário provavelmente estão localizados em. `~/.local/share/powershell/Modules` Para obter mais informações, consulte [Instalar PowerShell no Linux](https://learn.microsoft.com/en-us/powershell/scripting/install/installing-powershell-on-linux) no PowerShell site da Microsoft. Para ver onde os módulos estão instalados, execute o seguinte comando:

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

   Para instalar outros módulos, execute comandos semelhantes com os nomes de módulo apropriados, conforme encontrado na [PowerShell Galeria](https://www.powershellgallery.com/packages?q=aws).

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

Para atualizar para uma versão mais recente do AWSPower Shell. NetCore, siga as instruções em[Atualizando o Ferramentas da AWS para PowerShell no Linux ou macOS](#pstools-updating-linux). Desinstale as versões anteriores do AWSPower Shell. NetCore primeiro.

Você pode instalar o AWSPower Shell. NetCore de duas maneiras:
+ Download do módulo de `[AWSPowerShell.NetCore.zip](https://sdk-for-net.amazonwebservices.com/ps/v4/latest/AWSPowerShell.NetCore.zip)` e extração em um dos diretórios do módulo. Você pode descobrir seus diretórios de módulo imprimindo o valor da variável `$Env:PSModulePath`.
+ Instalando a partir da PowerShell Galeria usando o `Install-Module` cmdlet conforme descrito no procedimento a seguir.

**Para instalar o AWSPower Shell. NetCore no Linux ou macOS usando o cmdlet Install-Module**

Inicie uma sessão PowerShell principal executando o comando a seguir.

```
$ pwsh
```

**nota**  
Recomendamos que você *não* comece PowerShell correndo `sudo pwsh` para executar PowerShell com direitos de administrador elevados. Isso se deve ao risco potencial de segurança e é consistente com o princípio do privilégio mínimo.

Para instalar o AWSPower Shell. NetCore pacote de módulo único da PowerShell Galeria, execute o seguinte 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
```

Se você for notificado de que o repositório é "não confiável", você será solicitado a confirmar se deseja prosseguir com a instalação. Digite **y** para permitir PowerShell a instalação do módulo. Para evitar o prompt sem confiar no repositório, você pode executar o comando a seguir.

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

Você não precisa executar esse comando como root, a menos que queira instalá-lo Ferramentas da AWS para PowerShell para todos os usuários de um computador. Para fazer isso, execute o comando a seguir em uma PowerShell sessão com a qual você começou`sudo pwsh`.

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

## Execução do script
<a name="enable-script-execution"></a>

O comando `Set-ExecutionPolicy` não está disponível em sistemas que não sejam Windows. Você pode executar`Get-ExecutionPolicy`, o que mostra que a configuração padrão da política de execução no PowerShell Core em execução em sistemas não Windows é`Unrestricted`. Para obter mais informações, consulte [About Execution Policies](https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.core/about/about_execution_policies?view=powershell-5.1) no site da Microsoft Technet.

 Como `PSModulePath` inclui a localização do diretório do AWS módulo, o `Get-Module -ListAvailable` cmdlet mostra o módulo que você instalou.

**`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 um PowerShell console para usar o AWS Tools for PowerShell Core (AWSPowerShell). NetCore Somente)
<a name="pstools-config-ps-window"></a>

PowerShell O Core normalmente carrega módulos automaticamente sempre que você executa um cmdlet no módulo. Mas isso não funciona para a AWSPower Shell. NetCore devido ao seu grande tamanho. Para começar a executar o AWSPower Shell. NetCore cmdlets, você deve primeiro executar o `Import-Module AWSPowerShell.NetCore` comando. Isso não é necessário para cmdlets nos módulos do `AWS.Tools`.

## Inicialize sua sessão PowerShell
<a name="linux-config-init"></a>

Ao iniciar PowerShell em um sistema baseado em Linux ou macOS depois de instalar o Ferramentas da AWS para PowerShell, você deve executar [Initialize- AWSDefault Configuration](https://docs.aws.amazon.com/powershell/v4/reference/items/Initialize-AWSDefaultConfiguration.html) para especificar qual chave de acesso usar. AWS Para saber mais sobre o `Initialize-AWSDefaultConfiguration`, consulte [Usando AWS credenciais](specifying-your-aws-credentials.md).

**nota**  
Nas versões anteriores (antes da 3.3.96.0) do Ferramentas da AWS para PowerShell, esse cmdlet foi nomeado. `Initialize-AWSDefaults`

## Versionamento
<a name="pstools-versioning"></a>

AWS lança novas versões do Ferramentas da AWS para PowerShell periodicamente para oferecer suporte a novos AWS serviços e recursos. Para determinar a versão do Ferramentas da AWS para PowerShell que você instalou, execute o AWSPower ShellVersion cmdlet [Get-](https://docs.aws.amazon.com/powershell/v4/reference/items/Get-AWSPowerShellVersion.html).

Por exemplo:

```
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 uma lista dos AWS serviços suportados na versão atual das ferramentas, adicione o `-ListServiceVersionInfo` parâmetro a um AWSPower ShellVersion cmdlet [Get-](https://docs.aws.amazon.com/powershell/v4/reference/items/Get-AWSPowerShellVersion.html).

Para determinar a versão PowerShell que você está executando, insira `$PSVersionTable` para visualizar o conteúdo da [variável `$PSVersionTable` automática](https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.core/about/about_automatic_variables?view=powershell-6).

Por exemplo:

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

## Atualizando o Ferramentas da AWS para PowerShell no Linux ou macOS
<a name="pstools-updating-linux"></a>

Periodicamente, à medida que as versões atualizadas do Ferramentas da AWS para PowerShell são lançadas, você deve atualizar a versão que está executando localmente. 

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

A fim de atualizar os módulos `AWS.Tools` para a versão mais recente, execute o seguinte comando:

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

Esse comando atualiza todos os módulos `AWS.Tools` instalados atualmente e, para os módulos que foram atualizados com êxito, remove as versões anteriores.

**nota**  
O `Update-AWSToolsModule` cmdlet baixa todos os módulos do `PSRepository` nome `PSGallery` ([https://www.powershellgallery.com/](https://www.powershellgallery.com/)) e o considera uma fonte confiável. Use o comando `Get-PSRepository -Name PSGallery` para obter mais informações sobre esse `PSRepository`.

### Atualize as ferramentas do PowerShell Core
<a name="update-netcore-all-systems"></a>

Execute o `Get-AWSPowerShellVersion` cmdlet para determinar a versão que você está executando e compare-a com a versão do Tools for Windows PowerShell que está disponível no site da [PowerShell Galeria](https://www.powershellgallery.com/packages/AWSPowerShell). Sugerimos verificar a cada duas ou três semanas. Support para novos comandos e AWS serviços está disponível somente após a atualização para uma versão com esse suporte.

Antes de instalar uma versão mais recente do AWSPower Shell. NetCore, desinstale o módulo existente. Feche todas PowerShell as sessões abertas antes de desinstalar o pacote existente. Execute o seguinte comando para desinstalar o pacote.

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

Depois de desinstalar o pacote, instale o módulo atualizado executando o comando a seguir.

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

Após a instalação, execute o comando `Import-Module AWSPowerShell.NetCore` para carregar os cmdlets atualizados em sua PowerShell sessão.

## Informações relacionadas
<a name="pstools-seealso-setup"></a>
+  [Conceitos básicos da  AWS Tools for Windows PowerShell](pstools-getting-started.md) 
+  [Trabalhe com AWS serviços no Ferramentas da AWS para PowerShell](pstools-using.md) 

# Migrando da Ferramentas da AWS para PowerShell versão 3.3 para a versão 4
<a name="v4migration"></a>

Ferramentas da AWS para PowerShell a versão 4 é uma atualização compatível com versões anteriores da versão 3.3. Ferramentas da AWS para PowerShell Ele adiciona melhorias significativas enquanto mantém o comportamento existente do cmdlet. 

Os scripts existentes devem continuar a funcionar após a atualização para a nova versão, mas recomendamos que você os teste minuciosamente antes de atualizar os ambientes de produção.

Esta seção descreve as alterações e explica como elas podem impactar os scripts.

## Nova versão totalmente modularizada do `AWS.Tools`
<a name="migrate-aws-tools"></a>

A AWSPower concha. NetCore e os pacotes AWSPower Shell eram “monolíticos”. Isso significava que todos os AWS serviços eram suportados no mesmo módulo, tornando-o muito grande e crescendo à medida que cada novo AWS serviço e recurso era adicionado. O novo `AWS.Tools` pacote é dividido em módulos menores que oferecem a flexibilidade de baixar e instalar somente aqueles necessários para os AWS serviços que você usa. O pacote inclui um módulo `AWS.Tools.Common` compartilhado que é exigido por todos os outros módulos e um módulo `AWS.Tools.Installer` que simplifica a instalação, a atualização e a remoção de módulos conforme necessário.

Isso também permite importar os cmdlets automaticamente na primeira chamada, sem precisar chamar primeiro `Import-module`. No entanto, para interagir com os objetos.NET associados antes de chamar um cmdlet, você ainda deve ligar `Import-Module` para PowerShell informar sobre os tipos.NET relevantes. 

Por exemplo, o comando a seguir tem uma referência a `Amazon.EC2.Model.Filter`. Esse tipo de referência não pode acionar a importação automática, portanto, é necessário chamar `Import-Module` primeiro ou o comando falhará.

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

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

Para ajudá-lo a descobrir os nomes dos módulos de cada AWS serviço na `AWS.Tools` coleção de módulos, você pode usar o `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
  ...
```

## Novo parâmetro `-Select` para controlar o objeto retornado por um cmdlet
<a name="migrate-select"></a>

A maioria dos cmdlets na versão 4 oferecem suporte a um novo parâmetro `-Select`. Cada cmdlet chama o AWS serviço APIs para você usando o. AWS SDK para .NET Em seguida, o Ferramentas da AWS para PowerShell cliente converte a resposta em um objeto que você pode usar em seus PowerShell scripts e direcionar para outros comandos. Às vezes, o PowerShell objeto final tem mais campos ou propriedades na resposta original do que você precisa, e outras vezes você pode querer que o objeto inclua campos ou propriedades da resposta que não estão lá por padrão. O parâmetro `-Select` permite que você especifique o que está incluído no objeto .NET retornado pelo cmdlet.

Por exemplo, o [Get-S3Object](https://docs.aws.amazon.com/powershell/v4/reference/items/Get-S3Object.html)cmdlet invoca a operação do Amazon S3 SDK. [ListObjects](https://docs.aws.amazon.com/sdkfornet/v3/apidocs/index.html?page=S3/MS3ListObjectsListObjectsRequest.html) Essa operação retorna um [ListObjectsResponse](https://docs.aws.amazon.com/sdkfornet/v3/apidocs/index.html?page=S3/MS3ListObjectsListObjectsRequest.h)objeto. No entanto, por padrão, o `Get-S3Object` cmdlet retorna somente o `S3Objects` elemento da resposta do SDK para o usuário. PowerShell No exemplo a seguir, esse objeto é uma matriz com dois 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
```

Na Ferramentas da AWS para PowerShell versão 4, você pode especificar `-Select *` o retorno do objeto de resposta.NET completo retornado pela chamada da API do 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      :
```

Também é possível especificar o caminho para a propriedade aninhada específica que você deseja. O exemplo a seguir retorna somente a propriedade `Key` de cada elemento na matriz `S3Objects`.

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

Em determinadas situações, pode ser útil retornar um parâmetro de cmdlet. É possível fazer isso com `-Select ^ParameterName`. Esse recurso substitui o parâmetro `-PassThru`, que ainda está disponível, mas defasado. 

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

[O tópico de referência](https://docs.aws.amazon.com/powershell/v4/reference/) para cada cmdlet identifica se ele é compatível com o parâmetro `-Select`.

## Limitação mais consistente do número de itens na saída
<a name="migrate-iterate"></a>

As versões anteriores do Ferramentas da AWS para PowerShell permitiam que você usasse o `-MaxItems` parâmetro para especificar o número máximo de objetos retornados na saída final.

Esse comportamento foi removido do `AWS.Tools`.

Esse comportamento está obsoleto no Shell. AWSPower NetCore e AWSPower Shell, e serão removidos dessas versões em uma versão futura.

Se a API do serviço subjacente oferecer suporte a um parâmetro `MaxItems`, ele ainda estará disponível e funcionará conforme a API especifica. No entanto, ele não terá mais o comportamento adicionado de limitar o número de itens retornados na saída do cmdlet.

Para limitar o número de itens retornados na saída final, canalize a saída para o `Select-Object` cmdlet e especifique o `-First n` parâmetro, onde *n* está o número máximo de itens a serem incluídos na saída final.

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

Nem todos os AWS serviços são suportados `-MaxItems` da mesma forma, então isso remove essa inconsistência e os resultados inesperados que às vezes ocorriam. Além disso, o `-MaxItems` combinado com o novo parâmetro [`-Select`](#migrate-select) poderia, às vezes, produzir resultados confusos.

## Parâmetros de fluxo mais fáceis de usar
<a name="migrate-streamparam"></a>

Agora os parâmetros do tipo `Stream` ou `byte[]` podem aceitar os valores `string`, `string[]` ou `FileInfo`.

Por exemplo, você pode usar qualquer um dos exemplos a seguir.

```
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"', '}')
```

 Ferramentas da AWS para PowerShell converte todas as strings para `byte[]` usar a codificação UTF-8.

## Estendendo o pipe por nome da propriedade
<a name="migrate-pipes"></a>

Para tornar a experiência do usuário mais consistente, agora é possível passar a entrada do pipeline especificando o nome da propriedade para *qualquer* parâmetro. 

No exemplo a seguir, criamos um objeto personalizado com propriedades que têm nomes que correspondem aos nomes de parâmetro do cmdlet de destino. Quando o cmdlet é executado, ele consome automaticamente essas propriedades como seus parâmetros.

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

**nota**  
Algumas propriedades suportavam isso em versões anteriores do Ferramentas da AWS para PowerShell. A versão 4 torna isso mais consistente, ativando-o para *todos* os parâmetros.

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

Para melhorar a consistência na versão 4.0 do Ferramentas da AWS para PowerShell, todos os parâmetros são estáticos.

Nas versões anteriores do Ferramentas da AWS para PowerShell, alguns parâmetros comuns`AccessKey`, como,`SecretKey`, ou `ProfileName``Region`, eram [dinâmicos](https://docs.microsoft.com/dotnet/api/system.management.automation.idynamicparameters), enquanto todos os outros parâmetros eram estáticos. Isso pode criar problemas porque PowerShell vincula os parâmetros estáticos antes dos dinâmicos. Por exemplo, digamos que você tenha executado o comando a seguir.

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

Versões anteriores do PowerShell vinculavam o valor `us-west-2` ao parâmetro `-RegionName` estático em vez do parâmetro `-Region` dinâmico. Provavelmente, isso poderia confundir os usuários.

## O `AWS.Tools` declara e aplica os parâmetros obrigatórios
<a name="migrate-mandatoryparams"></a>

Agora os módulos do `AWS.Tools.*` declaram e aplicam os parâmetros de cmdlet obrigatórios. Quando um AWS serviço declara que um parâmetro de uma API é necessário, PowerShell solicita o parâmetro de cmdlet correspondente, caso você não o tenha especificado. Isso se aplica somente a o `AWS.Tools`. Para garantir a compatibilidade com versões anteriores, isso não se aplica ao AWSPower Shell. NetCore ou AWSPower Shell.

## Todos os parâmetros são anuláveis
<a name="migrate-nullableparams"></a>

Agora é possível atribuir `$null` aos parâmetros de tipo de valor (números e datas), Essa alteração não deve afetar os scripts existentes. Isso permite que você ignore o prompt para um parâmetro obrigatório. Os parâmetros obrigatórios são aplicados somente no `AWS.Tools`.

Se você executar o exemplo a seguir usando a versão 4, ele efetivamente ignorará a validação no lado do cliente porque você fornece um "valor" para cada parâmetro obrigatório. No entanto, a chamada do serviço de API do Amazon EC2 falha porque o AWS serviço ainda exige essas informações.

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

## Remover recursos defasados anteriormente
<a name="migrate-removeprevdeprecated"></a>

Os seguintes recursos foram descontinuados nas versões anteriores do Ferramentas da AWS para PowerShell e foram removidos na versão 4:
+ Removido o parâmetro `-Terminate` do cmdlet `Stop-EC2Instance`. Use `Remove-EC2Instance` em vez disso.
+ O `-ProfileName` parâmetro foi removido do AWSCredential cmdlet Clear-. Use `Remove-AWSCredentialProfile` em vez disso.
+ Removidos os cmdlets `Import-EC2Instance` e `Import-EC2Volume`.