

AWS Tools for PowerShell V4 がメンテナンスモードになりました。

[AWS Tools for PowerShell V5](https://docs.aws.amazon.com/powershell/v5/userguide/) に移行することをお勧めします。移行方法の詳細と情報については、[メンテナンスモードのお知らせ](https://aws.amazon.com/blogs/developer/aws-tools-for-powershell-v4-maintenance-mode-announcement/)を参照してください。

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# AWS Tools for PowerShell のインストール
<a name="pstools-getting-set-up"></a>

AWS Tools for PowerShell コマンドレットを正しくインストールして使用するには、以下のトピックの手順を参照してください。

**Topics**
+ [Windows でのインストール](pstools-getting-set-up-windows.md)
+ [Linux または MacOS でのインストール](pstools-getting-set-up-linux-mac.md)
+ [AWS Tools for PowerShell バージョン 3.3 からバージョン 4 への移行](v4migration.md)

# Windows への AWS Tools for PowerShell のインストール
<a name="pstools-getting-set-up-windows"></a>

Windows ベースのコンピュータでは、AWS Tools for PowerShell パッケージオプションのいずれかを実行できます。
+ [**`AWS.Tools`**](#ps-installing-awstools) - モジュール化されたバージョンの AWS Tools for PowerShell。AWS の各サービスが、個別の小さなモジュールと、共通のサポートモジュール `AWS.Tools.Common` および `AWS.Tools.Installer` によってサポートされます。
+ [**AWSPowerShell.NetCore**](#ps-installing-awspowershellnetcore) - 大きな単独モジュールバージョンの AWS Tools for PowerShell。AWS のすべてのサービスが、この大きな単独モジュールでサポートされます。
**注記**  
単一のモジュールは大きすぎて [AWS Lambda](https://aws.amazon.com/lambda/) 関数で使用できない場合があることに注意してください。代わりに、上記のモジュール化されたバージョンを使用します。
+ [**AWSPowerShell**](#ps-installing-awswindowspowershell) - Windows 固有の大きな単独モジュールのレガシーバージョンの AWS Tools for PowerShell。AWS のすべてのサービスが、この大きな単独モジュールでサポートされます。

選択するパッケージは、実行している Windows のリリースとエディションによって異なります。

**注記**  
すべての Windows ベースの Amazon マシンイメージ (AMI) には、AWS Tools for PowerShell がデフォルトでインストールされています。インストールされているパッケージは AMI によって異なります。多くの AMI には AWSPowerShell モジュールが含まれていますが、別のパッケージが使用されている場合もあります。例えば、Windows Server 2025 用の Amazon EC2 AMI では、モジュール化された `AWS.Tools` パッケージが使用されています。

AWS Tools for PowerShell のセットアップには、このトピックで詳しく説明する次の大まかなタスクが含まれます。

1. 環境に適した AWS Tools for PowerShell パッケージオプションをインストールします。

1. `Get-ExecutionPolicy` コマンドレットを実行して、スクリプトの実行が有効になっていることを確認します。

1. PowerShell セッションに AWS Tools for PowerShell モジュールをインポートします。

## 前提条件
<a name="prerequisites"></a>

新しいバージョンの PowerShell (PowerShell Core を含む) は、Microsoft のウェブサイトの「[PowerShell のさまざまなバージョンのインストール](https://docs.microsoft.com/en-us/powershell/scripting/install/installing-powershell)」からダウンロードできます。

## Windows に `AWS.Tools` をインストールする
<a name="ps-installing-awstools"></a>

モジュール化されたバージョンの AWS Tools for PowerShell は、Windows PowerShell 5.1 または PowerShell Core 6.0 以降を搭載する Windows が実行されている コンピュータにインストールできます。PowerShell Core をインストールする方法については、Microsoft のウェブサイトへの「[PowerShell のさまざまなバージョンのインストール](https://docs.microsoft.com/en-us/powershell/scripting/install/installing-powershell)」を参照してください。

次の 3 つの方法のいずれかで `AWS.Tools` をインストールできます。
+ `AWS.Tools.Installer` モジュール内のコマンドレットを使用する。このモジュールは、他の `AWS.Tools` モジュールのインストールと更新を簡素化します。`AWS.Tools.Installer` は `PowerShellGet` を必要とし、その最新版を自動的にダウンロードしてインストールします。`AWS.Tools.Installer` は、モジュールのバージョンを自動的に同期させます。あるモジュールの新しいバージョンをインストールまたは更新すると、`AWS.Tools.Installer` 内のコマンドレットによって、他のすべての `AWS.Tools` モジュールが同じバージョンに自動的に更新されます。

  この方法については後述の手順で説明します。
+ `[AWS.Tools.zip](https://sdk-for-net.amazonwebservices.com/ps/v4/latest/AWS.Tools.zip)` からモジュールをダウンロードし、モジュールフォルダの 1 つにそのモジュールを展開する。`PSModulePath` 環境変数の値を表示することで、モジュールフォルダを検出できます。
**警告**  
ZIP ファイルをダウンロードした後、展開する前にブロック解除が必要になる場合があります。そのために通常は、ファイルのプロパティを開き、**[General]** (全般) タブで **[Unblock]** (ブロック解除) チェックボックス (存在する場合) をオンにします。  
ZIP ファイルのブロック解除が必要だったが行わなかった場合は、「Import-Module : Could not load file or assembly」 (ファイルまたはアセンブリをロードできませんでした) のようなエラーが表示されることがあります。
+ `Install-Module` コマンドレットを使用して、PowerShell Gallery から各サービスモジュールをインストールします。

**`AWS.Tools.Installer` モジュールを使用して Windows に `AWS.Tools` をインストールするには**

1. PowerShell セッションを起動します。
**注記**  
PowerShell は、実際のタスクで必要とされる場合を除き、昇格されたアクセス許可を持つ管理者として実行*しない*ことをお勧めします。これは、潜在的なセキュリティリスクを避けるためであり、最小限の特権の原則にも反します。

1. モジュール化された `AWS.Tools` パッケージをインストールするには、次のコマンドを実行します。

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

   リポジトリについて「信頼されていない」という通知を受けた場合は、これをインストールするかどうかを確認するメッセージが表示されます。PowerShell がモジュールをインストールできるようにするには、**y** を入力します。プロンプトを回避し、リポジトリを信頼せずにモジュールをインストールするには、`-Force` パラメータを指定してコマンドを実行します。

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

1. AWS コマンドレットを利用することで、使用する `Install-AWSToolsModule` のサービスごとのモジュールをインストールできるようになりました。例えば、次のコマンドは Amazon EC2 モジュールと Amazon S3 モジュールをインストールします。このコマンドは、指定したモジュールの動作に必要な依存モジュールもインストールします。たとえば、最初の `AWS.Tools` サービスモジュールをインストールすると、`AWS.Tools.Common` もインストールされます。これは、すべての AWS サービスモジュールに必要な共有モジュールです。また、古いバージョンのモジュールを削除し、他のモジュールを同じ新しいバージョンに更新します。

   ```
   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
   ```
**注記**  
`Install-AWSToolsModule` コマンドレットは、すべての要求されたモジュールを `PSGallery` という名前の `PSRepository` ([https://www.powershellgallery.com/](https://www.powershellgallery.com/)) からダウンロードし、これを信頼できるソースと見なします。この `Get-PSRepository -Name PSGallery` の詳細を参照するには、`PSRepository` コマンドを使用します。

   デフォルトでは、前のコマンドはモジュールを `%USERPROFILE%\Documents\WindowsPowerShell\Modules` フォルダにインストールします。コンピュータのすべてのユーザー用に AWS Tools for PowerShell をインストールするには、管理者として起動した PowerShell セッションで次のコマンドを実行する必要があります。例えば、次のコマンドは、すべてのユーザーがアクセスできる `%ProgramFiles%\WindowsPowerShell\Modules` フォルダに IAM モジュールをインストールします。

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

   他のモジュールをインストールするには、[PowerShell Gallery](https://www.powershellgallery.com/packages?q=aws) にある適切なモジュール名で同様のコマンドを実行します。

## Windows で AWSPowerShell.NetCore をインストールする
<a name="ps-installing-awspowershellnetcore"></a>

AWSPowerShell.NetCore は、PowerShell バージョン 3～5.1 または PowerShell Core 6.0 以降を搭載する Windows が実行されているコンピュータにインストールできます。PowerShell Core をインストールする方法については、Microsoft の PowerShell ウェブサイトの「[PowerShell のさまざまなバージョンのインストール](https://docs.microsoft.com/en-us/powershell/scripting/install/installing-powershell)」を参照してください。

AWSPowerShell.NetCore は、次の 2 つの方法のいずれかのでインストールできます。
+ [AWSPowerShell.NetCore.zip](https://sdk-for-net.amazonwebservices.com/ps/v4/latest/AWSPowerShell.NetCore.zip) からモジュールをダウンロードし、モジュールディレクトリの 1 つにそのモジュールを展開する。`PSModulePath` 環境変数の値を表示することで、モジュールディレクトリを検出できます。
**警告**  
ZIP ファイルをダウンロードした後、展開する前にブロック解除が必要になる場合があります。そのために通常は、ファイルのプロパティを開き、**[General]** (全般) タブで **[Unblock]** (ブロック解除) チェックボックス (存在する場合) をオンにします。  
ZIP ファイルのブロック解除が必要だったが行わなかった場合は、「Import-Module : Could not load file or assembly」 (ファイルまたはアセンブリをロードできませんでした) のようなエラーが表示されることがあります。
+ 次の手順で説明するように、`Install-Module` コマンドレットを使用して PowerShell ギャラリーからインストールします。

**Install-Module コマンドレットを使用して PowerShell ギャラリーから AWSPowerShell.NetCore をインストールするには**

PowerShell ギャラリーから AWSPowerShell.NetCore をインストールするには、コンピュータで PowerShell 5.0 以降が実行されているか、[PowerShellGet](https://www.powershellgallery.com/packages/PowerShellGet) が PowerShell 3 以降で実行されている必要があります。以下のコマンドを実行してください。

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

管理者として PowerShell を実行している場合、先述のコマンドはコンピュータ上のすべてのユーザーに対してAWS Tools for PowerShell をインストールします。管理者権限のない標準ユーザーとして PowerShell を実行している場合、同じコマンドは現在のユーザーのみに AWS Tools for PowerShell をインストールします。

現在のユーザーが管理者権限を持っている場合に、そのユーザーに対してのみインストールするには、次のように `-Scope CurrentUser` パラメータセットを使用してコマンドを実行します。

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

通常、PowerShell 3.0 以降のリリースでは、初めてモジュールでコマンドレットを実行したときにモジュールが PowerShell セッションにロードされますが、AWSPowerShell.NetCore モジュールは大きすぎるため、この機能をサポートしていません。代わりに、次のコマンドを実行して、AWSPowerShell.NetCore Core モジュールを PowerShell セッションに明示的にロードする必要があります。

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

AWSPowerShell.NetCore モジュールを PowerShell セッションに自動的にロードするには、そのコマンドを PowerShell プロファイルに追加します。PowerShell プロファイルの編集の詳細については、PowerShell ドキュメントの「[About Profiles](https://docs.microsoft.com/powershell/module/microsoft.powershell.core/about/about_profiles)」を参照してください。

## Windows PowerShell に AWSPowerShell をインストールする
<a name="ps-installing-awswindowspowershell"></a>

次の 2 つの方法のいずれかで AWS Tools for Windows PowerShell をインストールできます。
+ [AWSPowerShell.zip](https://sdk-for-net.amazonwebservices.com/ps/v4/latest/AWSPowerShell.zip) からモジュールをダウンロードし、モジュールディレクトリの 1 つにそのモジュールを展開します。`PSModulePath` 環境変数の値を表示することで、モジュールディレクトリを検出できます。
**警告**  
ZIP ファイルをダウンロードした後、展開する前にブロック解除が必要になる場合があります。そのために通常は、ファイルのプロパティを開き、**[General]** (全般) タブで **[Unblock]** (ブロック解除) チェックボックス (存在する場合) をオンにします。  
ZIP ファイルのブロック解除が必要だったが行わなかった場合は、「Import-Module : Could not load file or assembly」 (ファイルまたはアセンブリをロードできませんでした) のようなエラーが表示されることがあります。
+ 次の手順で説明するように、`Install-Module` コマンドレットを使用して PowerShell ギャラリーからインストールする。

**Install-Module コマンドレットを使用して PowerShell ギャラリーから AWSPowerShell をインストールするには**

PowerShell 5.0 以降を実行している場合は、PowerShell ギャラリーから AWSPowerShell をインストールできます。[PowerShellGet](https://www.powershellgallery.com/packages/PowerShellGet)PowerShell 3 以降で。次のコマンドを実行して、Microsoft の [PowerShell ギャラリー](https://www.powershellgallery.com/packages/AWSPowerShell)から AWSPowerShell をインストールおよび更新できます。

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

AWSPowerShell モジュールを PowerShell セッションに自動的にロードするには、前の `import-module` コマンドレットを PowerShell プロファイルに追加します。PowerShell プロファイルの編集の詳細については、PowerShell ドキュメントの「[About Profiles](https://docs.microsoft.com/powershell/module/microsoft.powershell.core/about/about_profiles?view=powershell-6)」を参照してください。

**注記**  
Tools for Windows PowerShell は、Windows ベースのすべての Amazon マシンイメージ (AMI) にデフォルトでインストールされています。

## スクリプト実行の有効化
<a name="enable-script-execution"></a>

AWS Tools for PowerShell モジュールをロードするには、PowerShell スクリプトの実行を有効にする必要があります。スクリプトの実行を有効にするには、`Set-ExecutionPolicy` のポリシーを設定するために `RemoteSigned` コマンドレットを実行します。詳細については、Microsoft Technet ウェブサイトの「[About Execution Policies](https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.core/about/about_execution_policies)」を参照してください。

**注記**  
この必要条件は、Windows を実行しているコンピュータのみに適用されます。`ExecutionPolicy` セキュリティ制限は、他のオペレーティングシステムには存在しません。

 **スクリプト実行を有効化するには** 

1. 実行ポリシーを設定するには管理者権限が必要です。管理者権限を持つユーザーとしてログインしていない場合は、管理者として PowerShell セッションを開きます。[**スタート**] ボタンをクリックし、[**すべてのプログラム**] を選択します。[**アクセサリ**] を選択し、[**Windows PowerShell**] を選択します。[**Windows PowerShell**] を右クリックして、コンテキストメニューから [**管理者として実行**] を選択します。

1. コマンドプロンプトで次のコマンドを入力します。

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

**注記**  
64 ビットシステムでは、32 ビットバージョンの PowerShell である **Windows PowerShell (x86)** でもこれを行う必要があります。

実行ポリシーが正しく設定されていない場合、プロファイルなどのスクリプトを実行しようとすると、次のエラーが表示されます。

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

Tools for Windows PowerShell インストーラは [PSModulePath](http://msdn.microsoft.com/en-us/library/windows/desktop/dd878326.aspx) を更新し、`AWSPowerShell` モジュールが格納されているディレクトリの場所を反映します。

`PSModulePath` には AWS モジュールのディレクトリの場所が含まれているため、`Get-Module -ListAvailable` コマンドレットによりモジュールが表示されます。

```
PS > Get-Module -ListAvailable

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

## バージョニング
<a name="pstools-versioning"></a>

新しい AWS サービスと機能をサポートするために、AWS Tools for PowerShell は AWS の新しいバージョンを定期的にリリースします。インストール済みのツールのバージョンを確認するには、[Get-AWSPowerShellVersion](https://docs.aws.amazon.com/powershell/v4/reference/items/Get-AWSPowerShellVersion.html) コマンドレットを実行します。

例:

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

また、[Get-AWSPowerShellVersion](https://docs.aws.amazon.com/powershell/v4/reference/items/Get-AWSPowerShellVersion.html) コマンドに `-ListServiceVersionInfo` パラメータを追加して、現在のツールのバージョンでサポートされる AWS のサービスのリストを表示することもできます。モジュール化 `AWS.Tools.*` オプションを使用すると、現在インポートしているモジュールのみが表示されます。

例:

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

実行中の PowerShell のバージョンを確認するには、「`$PSVersionTable`」と入力して、\$1PSVersionTable [自動変数](https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.core/about/about_automatic_variables?view=powershell-6)の内容を表示します。

例:

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

## Windows での AWS Tools for PowerShell の更新
<a name="pstools-updating"></a>

AWS Tools for PowerShell の更新バージョンがリリースされると同時に、ローカルで実行しているバージョンを定期的に更新する必要があります。

### モジュール化された `AWS.Tools` パッケージのモジュールを更新する
<a name="update-the-tools-for-powershell"></a>

`AWS.Tools` モジュールを最新バージョンに更新するには、次のコマンドを実行します。

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

このコマンドは、現在インストールされているすべての `AWS.Tools` モジュールを更新し、正常に更新されると、他のインストール済みバージョンを削除します。

**注記**  
`Update-AWSToolsModule` コマンドレットは、すべてのモジュールを `PSGallery` という名前の `PSRepository` ([https://www.powershellgallery.com/](https://www.powershellgallery.com/)) からダウンロードし、これを信頼できるソースと見なします。この `Get-PSRepository -Name PSGallery` の詳細を参照するには、`PSRepository` コマンドを使用します。

### Tools for PowerShell Core の更新
<a name="update-the-tools-for-powershell-core"></a>

`Get-AWSPowerShellVersion` コマンドレットを実行して実行中のバージョンを確認し、[PowerShell Gallery](https://www.powershellgallery.com/packages/AWSPowerShell) ウェブサイトにある Tools for Windows PowerShell のバージョンと比較します。2～3 週間ごとにチェックすることをお勧めします。新しいコマンドおよび AWS サービスのサポートは、そのサポートのあるバージョンに更新した後にのみ利用できます。

AWSPowerShell.NetCore の新しいリリースをインストールする前に、既存のモジュールをアンインストールします。既存のパッケージをアンインストールする前に、開いているすべての PowerShell セッションを閉じます。次のコマンドを実行して、パッケージをアンインストールします。

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

パッケージがアンインストールされたら、次のコマンドを実行して、更新されたモジュールをインストールします。

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

インストール後、コマンド `Import-Module AWSPowerShell.NetCore` を実行して、更新されたコマンドレットを PowerShell セッションにロードします。

### Tools for Windows PowerShell の更新
<a name="update-the-tools-for-windows-powershell"></a>

`Get-AWSPowerShellVersion` コマンドレットを実行して実行中のバージョンを確認し、[PowerShell Gallery](https://www.powershellgallery.com/packages/AWSPowerShell) ウェブサイトにある Tools for Windows PowerShell のバージョンと比較します。2～3 週間ごとにチェックすることをお勧めします。新しいコマンドおよび AWS サービスのサポートは、そのサポートのあるバージョンに更新した後にのみ利用できます。
+ `Install-Module` コマンドレットを使用してインストールした場合は、次のコマンドを実行します。

  ```
  PS > Uninstall-Module -Name AWSPowerShell -AllVersions
  PS > Install-Module -Name AWSPowerShell
  ```
+ ダウンロードした ZIP ファイルを使用してインストールした場合:

  1. [Tools for PowerShell](https://aws.amazon.com/powershell/) ウェブサイトから最新バージョンをダウンロードします。ダウンロードしたファイル名に含まれるパッケージのバージョン番号と、`Get-AWSPowerShellVersion` コマンドレットの実行時に取得したバージョン番号を比較します。

  1. ダウンロードバージョンがインストールしたバージョンよりも高い場合は、すべての Tools for Windows PowerShell コンソールを閉じます。

  1. 新しいバージョンの Tools for Windows PowerShell をインストールします。

インストール後、`Import-Module AWSPowerShell` を実行して、更新されたコマンドレットを PowerShell セッションにロードします。または、**スタート**メニューからカスタム AWS Tools for PowerShell コンソールを実行します。

# Linux または macOS AWS Tools for PowerShell への のインストール
<a name="pstools-getting-set-up-linux-mac"></a>

このトピックでは、Linux または macOS AWS Tools for PowerShell に をインストールする方法について説明します。

## セットアップの概要
<a name="pstools-installing-core-prerequisites"></a>

Linux または macOS コンピュータ AWS Tools for PowerShell に をインストールするには、次の 2 つのパッケージオプションから選択できます。
+ [**`AWS.Tools`**](#install-aws.tools-on-linux-macos) – のモジュール化されたバージョン AWS Tools for PowerShell。各 AWS サービスは、個別の小さなモジュールでサポートされ、共有サポートモジュール があります`AWS.Tools.Common`。
+ [**AWSPowerShell.NetCore**](#install-netcore-on-linux-macos) – の単一、ラージモジュールバージョン AWS Tools for PowerShell。すべての AWS サービスは、この単一の大きなモジュールでサポートされています。
**注記**  
単一のモジュールは大きすぎて [AWS Lambda](https://aws.amazon.com/lambda/) 関数で使用できない場合があることに注意してください。代わりに、上記のモジュール化されたバージョンを使用します。

 Linux または macOS を実行しているコンピュータでこれらのいずれかをセットアップする方法は、このトピックの後半で詳しく説明します。

1. サポートされているシステムに PowerShell Core 6.0 以降をインストールします。

1. Microsoft PowerShell Core のインストール後、システムシェルで `pwsh` を実行して PowerShell を起動します。

1. `AWS.Tools` または AWSPowerShell.NetCore のいずれかをインストールします。

1. 適切な `Import-Module` コマンドレットを実行して、モジュールを PowerShell セッションにインポートします。

1. [Initialize-AWSDefaultConfiguration](https://docs.aws.amazon.com/powershell/v4/reference/items/Initialize-AWSDefaultConfiguration.html) コマンドレットを実行して、 AWS 認証情報を指定します。

## 前提条件
<a name="prerequisites"></a>

を実行するには AWS Tools for PowerShell Core、コンピュータが PowerShell Core 6.0 以降を実行している必要があります。
+ サポートされている Linux プラットフォームの一覧と、Linux ベースのコンピュータに PowerShell の最新バージョンをインストールする方法については、マイクロソフトのウェブサイトで 「[Linux に PowerShell をインストールする](https://docs.microsoft.com/en-us/powershell/scripting/install/installing-powershell-core-on-linux)」を参照してください。一部の Linux ベースのオペレーティングシステム (Arch、Kali、Raspbian など) は、公式にはサポートされていませんが、さまざまなレベルのコミュニティサポートがあります。
+ サポートされている macOS バージョンと macOS に PowerShell の最新バージョンをインストールする方法については、マイクロソフトのウェブサイトで 「[macOS に PowerShell をインストールする](https://docs.microsoft.com/en-us/powershell/scripting/install/installing-powershell-core-on-macos)」を参照してください。

## Linux または MacOS での `AWS.Tools` のインストール
<a name="install-aws.tools-on-linux-macos"></a>

PowerShell Core 6.0 以降を実行しているコンピュータ AWS Tools for PowerShell には、モジュール化されたバージョンの をインストールできます。PowerShell Core をインストールする方法については、Microsoft の PowerShell ウェブサイトの「[PowerShell のさまざまなバージョンのインストール](https://docs.microsoft.com/en-us/powershell/scripting/install/installing-powershell)」を参照してください。

次の 3 つの方法のいずれかで `AWS.Tools` をインストールできます。
+ `AWS.Tools.Installer` モジュール内のコマンドレットを使用する。このモジュールは、他の `AWS.Tools` モジュールのインストールと更新を簡素化します。`AWS.Tools.Installer` は `PowerShellGet` を必要とし、その最新版を自動的にダウンロードしてインストールします。`AWS.Tools.Installer` は、モジュールのバージョンを自動的に同期させます。あるモジュールの新しいバージョンをインストールまたは更新すると、`AWS.Tools.Installer` 内のコマンドレットによって、他のすべての `AWS.Tools` モジュールが同じバージョンに自動的に更新されます。

  この方法については後述の手順で説明します。
+ `[AWS.Tools.zip](https://sdk-for-net.amazonwebservices.com/ps/v4/latest/AWS.Tools.zip)` からモジュールをダウンロードし、モジュールディレクトリの 1 つにそのモジュールを展開します。`$Env:PSModulePath` 変数の値を出力することで、モジュールディレクトリを検出できます。
+ `Install-Module` コマンドレットを使用して、PowerShell Gallery から各サービスモジュールをインストールします。

**`AWS.Tools.Installer` モジュールを使用して Linux または macOS に `AWS.Tools` をインストールするには**

1. 次のコマンドを実行して、PowerShell コアセッションを開始します。

   ```
   $ pwsh
   ```
**注記**  
PowerShell は、実際のタスクで必要とされる場合を除き、昇格されたアクセス許可を持つ管理者として実行*しない*ことをお勧めします。これは、潜在的なセキュリティリスクを避けるためであり、最小限の特権の原則にも反します。

1. `AWS.Tools.Installer` モジュールを使用してモジュール化された `AWS.Tools` パッケージをインストールするには、次のコマンドを実行します。

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

   リポジトリが「信頼されていない」という通知を受けた場合は、インストールするかどうかを尋ねられます。PowerShell がモジュールをインストールできるようにするには、**y** を入力します。プロンプトを回避し、リポジトリを信頼せずにモジュールをインストールするには、次のコマンドを実行します。

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

1. これで、使用するサービスごとにモジュールをインストールできます。例えば、次のコマンドは Amazon EC2 モジュールと Amazon S3 モジュールをインストールします。このコマンドは、指定したモジュールの動作に必要な依存モジュールもインストールします。たとえば、最初の `AWS.Tools` サービスモジュールをインストールすると、`AWS.Tools.Common` もインストールされます。これは、すべての AWS サービスモジュールに必要な共有モジュールです。また、古いバージョンのモジュールを削除し、他のモジュールを同じ新しいバージョンに更新します。

   ```
   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
   ```
**注記**  
`Install-AWSToolsModule` コマンドレットは、すべての要求されたモジュールを `PSGallery` という名前の `PSRepository` ([https://www.powershellgallery.com/](https://www.powershellgallery.com/)) からダウンロードし、このリポジトリを信頼できるソースと見なします。この `PSRepository` の詳細を参照するには、`Get-PSRepository -Name PSGallery` コマンドを使用します。

   前のコマンドは、システムのデフォルトディレクトリにモジュールをインストールします。実際のディレクトリは、オペレーティングシステムのディストリビューションとバージョン、およびインストールした PowerShell のバージョンによって異なります。例えば、PowerShell 7 を RHEL 互換システムにインストールした場合、デフォルトのモジュールは `/opt/microsoft/powershell/7/Modules` (または`$PSHOME/Modules`) に配置され、ユーザーモジュールは `~/.local/share/powershell/Modules` に配置される可能性が最も高くなります。詳細については、Microsoft PowerShell ウェブサイトの「[Linux に PowerShell をインストールする](https://learn.microsoft.com/en-us/powershell/scripting/install/installing-powershell-on-linux)」を参照してください。モジュールがインストールされている場所を確認するには、次のコマンドを実行します。

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

   他のモジュールをインストールするには、[PowerShell Gallery](https://www.powershellgallery.com/packages?q=aws) にある適切なモジュール名で同様のコマンドを実行します。

## Linux または MacOS に AWSPowerShell.NetCore をインストールする
<a name="install-netcore-on-linux-macos"></a>

AWSPowerShell.NetCore の新しいリリースにアップグレードするには、[Linux または macOS AWS Tools for PowerShell での の更新](#pstools-updating-linux) の手順に従います。最初に AWSPowerShell.NetCore の以前のバージョンをアンインストールします。

次の 2 つの方法のうちの 1 つで AWSPowerShell.NetCore をインストールできます。
+ `[AWSPowerShell.NetCore.zip](https://sdk-for-net.amazonwebservices.com/ps/v4/latest/AWSPowerShell.NetCore.zip)` からモジュールをダウンロードし、モジュールディレクトリの 1 つにそのモジュールを展開します。`$Env:PSModulePath` 変数の値を出力することで、モジュールディレクトリを検出できます。
+ 次の手順で説明するように、`Install-Module` コマンドレットを使用して PowerShell ギャラリーからインストールする。

**Install-Module コマンドレットを使用して Linux または macOS に AWSPowerShell.NetCore をインストールするには**

次のコマンドを実行して、PowerShell コアセッションを開始します。

```
$ pwsh
```

**注記**  
`sudo pwsh` を実行して、昇格された、管理者権限で PowerShellを実行することで PowerShell を起動*しない*ことをお勧めします。これは、潜在的なセキュリティリスクを避けるためであり、最小限の特権の原則にも反します。

PowerShell ギャラリーから AWSPowerShell.NetCore 単一モジュールパッケージをインストールするには、次のコマンドを実行します。

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

リポジトリが「信頼されていない」という通知を受けた場合は、インストールするかどうかを尋ねられます。PowerShell がモジュールをインストールできるようにするには、**y** を入力します。リポジトリを信頼せずにプロンプトを回避するには、次のコマンドを実行します。

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

コンピュータ AWS Tools for PowerShell のすべてのユーザーに をインストールしない限り、このコマンドを root として実行する必要はありません。これを行うには、`sudo pwsh` を使用して開始した PowerShell セッションで、次のコマンドを実行します。

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

## スクリプトの実行
<a name="enable-script-execution"></a>

`Set-ExecutionPolicy` コマンドは、Windows 以外のシステムでは使用できません。`Get-ExecutionPolicy` は実行できます。これは、Windows 以外のシステムで実行されている PowerShell Core のデフォルトの実行ポリシー設定が `Unrestricted` であることを示します。詳細については、Microsoft Technet ウェブサイトの「[About Execution Policies](https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.core/about/about_execution_policies?view=powershell-5.1)」を参照してください。

 には AWS モジュールのディレクトリの場所`PSModulePath`が含まれているため、 `Get-Module -ListAvailable` コマンドレットにはインストールしたモジュールが表示されます。

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

**AWSPowerShell.NetCore**

```
PS > Get-Module -ListAvailable

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

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

## を使用するように PowerShell コンソールを設定する AWS Tools for PowerShell Core (AWSPowerShell.NetCore のみ)
<a name="pstools-config-ps-window"></a>

PowerShell Core は、通常、モジュールでコマンドレットを実行するたびにモジュールを自動的にロードします。しかし、これはサイズが大きいため AWSPowerShell.NetCore には機能しません。AWSPowerShell.NetCore コマンドレットの実行を開始するには、まず `Import-Module AWSPowerShell.NetCore` コマンドを実行する必要があります。これは、`AWS.Tools` モジュール内のコマンドレットには必要ありません。

## PowerShell セッションの初期化
<a name="linux-config-init"></a>

のインストール後に Linux ベースまたは macOS ベースのシステムで PowerShell を起動する場合は AWS Tools for PowerShell、[Initialize-AWSDefaultConfiguration](https://docs.aws.amazon.com/powershell/v4/reference/items/Initialize-AWSDefaultConfiguration.html) を実行して、使用する AWS アクセスキーを指定する必要があります。`Initialize-AWSDefaultConfiguration` の詳細については、「[AWS 認証情報の使用](specifying-your-aws-credentials.md)」を参照してください。

**注記**  
の以前の (3.3.96.0 より前の) リリースでは AWS Tools for PowerShell、このコマンドレットの名前は でした`Initialize-AWSDefaults`。

## バージョニング
<a name="pstools-versioning"></a>

AWS は、新しい AWS サービスや機能をサポートするために、 の新しいバージョン AWS Tools for PowerShell を定期的にリリースします。インストール AWS Tools for PowerShell した のバージョンを確認するには、[Get-AWSPowerShellVersion](https://docs.aws.amazon.com/powershell/v4/reference/items/Get-AWSPowerShellVersion.html) コマンドレットを実行します。

例えば、次のようになります。

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

現在のバージョンのツールでサポートされている AWS サービスのリストを表示するには、[Get-AWSPowerShellVersion](https://docs.aws.amazon.com/powershell/v4/reference/items/Get-AWSPowerShellVersion.html) コマンドレットに `-ListServiceVersionInfo`パラメータを追加します。

実行中の PowerShell のバージョンを確認するには、「`$PSVersionTable`」と入力して、`$PSVersionTable` [自動変数](https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.core/about/about_automatic_variables?view=powershell-6)の内容を表示します。

例えば、次のようになります。

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

## Linux または macOS AWS Tools for PowerShell での の更新
<a name="pstools-updating-linux"></a>

の更新バージョン AWS Tools for PowerShell がリリースされたら、定期的にローカルで実行しているバージョンを更新する必要があります。

### モジュール化された `AWS.Tools` モジュールを更新する
<a name="update-aws.tools-all-systems"></a>

`AWS.Tools` モジュールを最新バージョンに更新するには、次のコマンドを実行します。

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

このコマンドは、現在インストールされているすべての `AWS.Tools` モジュールを更新し、正常に更新されたモジュールについては、以前のバージョンを削除します。

**注記**  
`Update-AWSToolsModule` コマンドレットは、すべてのモジュールを `PSGallery` という名前の `PSRepository` ([https://www.powershellgallery.com/](https://www.powershellgallery.com/)) からダウンロードし、これを信頼できるソースと見なします。この `PSRepository` の詳細を参照するには、`Get-PSRepository -Name PSGallery` コマンドを使用します。

### Tools for PowerShell Core の更新
<a name="update-netcore-all-systems"></a>

`Get-AWSPowerShellVersion` コマンドレットを実行して実行中のバージョンを確認し、[PowerShell Gallery](https://www.powershellgallery.com/packages/AWSPowerShell) ウェブサイトにある Tools for Windows PowerShell のバージョンと比較します。2～3 週間ごとにチェックすることをお勧めします。新しいコマンドと AWS サービスのサポートは、そのサポートでバージョンに更新した後にのみ利用できます。

AWSPowerShell.NetCore の新しいリリースをインストールする前に、既存のモジュールをアンインストールします。既存のパッケージをアンインストールする前に、開いているすべての PowerShell セッションを閉じます。次のコマンドを実行して、パッケージをアンインストールします。

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

パッケージがアンインストールされたら、次のコマンドを実行して、更新されたモジュールをインストールします。

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

インストール後、コマンド `Import-Module AWSPowerShell.NetCore` を実行して、更新されたコマンドレットを PowerShell セッションにロードします。

## 関連情報
<a name="pstools-seealso-setup"></a>
+  [AWS Tools for Windows PowerShell の開始方法](pstools-getting-started.md) 
+  [で AWS のサービスを操作する AWS Tools for PowerShell](pstools-using.md) 

# AWS Tools for PowerShell バージョン 3.3 からバージョン 4 への移行
<a name="v4migration"></a>

AWS Tools for PowerShell バージョン 4 は、 AWS Tools for PowerShell バージョン 3.3 への下位互換性の更新です。既存のコマンドレットの動作を維持しながら、大幅な機能強化を追加します。

既存のスクリプトは、新しいバージョンにアップグレードした後も引き続き動作しますが、本番環境をアップグレードする前に十分にテストすることをお勧めします。

このセクションでは、変更点を示し、これらがスクリプトに与える影響について説明します。

## 完全モジュール化された新しい `AWS.Tools` バージョン
<a name="migrate-aws-tools"></a>

AWSPowerShell.NetCore と AWSPowerShell のパッケージは「モノリシック」でした。これは、すべての AWS サービスが同じモジュールでサポートされ、非常に大きくなり、新しい AWS サービスや機能が追加されるたびに大きくなることを意味します。新しい`AWS.Tools`パッケージは、使用する AWS サービスに必要なものだけを柔軟にダウンロードしてインストールできる小さなモジュールに分割されています。パッケージには、他のすべてのモジュールと共有される必須の `AWS.Tools.Common` モジュールと、必要に応じてモジュールのインストール、更新、および削除を簡素化するための `AWS.Tools.Installer` モジュールが含まれています。

これにより、最初に `Import-module` を呼び出すことなく、最初の呼び出しでコマンドレットを自動的にインポートできます。ただし、コマンドレットを呼び出す前に、関連付けられた .NET オブジェクトを操作するには、依然として `Import-Module` を呼び出し、関連する .NET タイプを PowerShell に知らせる必要があります。

たとえば、次のコマンドには `Amazon.EC2.Model.Filter` への参照があります。このタイプの参照は自動インポートをトリガーできないため、`Import-Module` を最初に呼び出さないと、コマンドは失敗します。

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

## 新しい `Get-AWSService` コマンドレット
<a name="migrate-get-awsservice"></a>

モジュールの`AWS.Tools`コレクション内の各 AWS サービスのモジュール名を検出するには、 `Get-AWSService` コマンドレットを使用できます。

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

## コマンドレットから返されるオブジェクトを制御するための新しい `-Select` パラメータ
<a name="migrate-select"></a>

バージョン 4 のほとんどのコマンドレットは、新しい `-Select` パラメータをサポートしています。各コマンドレットは、 AWS SDK for .NETを使用してユーザーに代わって AWS のサービス API を呼び出します。次に、 AWS Tools for PowerShell クライアントはレスポンスを PowerShell スクリプトで使用できるオブジェクトに変換し、他のコマンドにパイプします。最終的な PowerShell オブジェクトには、元のレスポンスのフィールドやプロパティが必要以上に多く含まれる場合があります。また、レスポンスのフィールドやプロパティをデフォルト数よりも多くオブジェクトに含めることもできます。`-Select` パラメータを使用すると、コマンドレットから返される .NET オブジェクトに含める内容を指定できます。

例えば、[Get-S3Object](https://docs.aws.amazon.com/powershell/v4/reference/items/Get-S3Object.html) コマンドレットは、Amazon S3 SDK オペレーション [ListObjects](https://docs.aws.amazon.com/sdkfornet/v3/apidocs/index.html?page=S3/MS3ListObjectsListObjectsRequest.html) を呼び出します。このオペレーションは、[ListObjectsResponse](https://docs.aws.amazon.com/sdkfornet/v3/apidocs/index.html?page=S3/MS3ListObjectsListObjectsRequest.h) オブジェクトを返します。ただし、デフォルトでは、`Get-S3Object` コマンドレットは SDK レスポンスの `S3Objects` 要素のみを PowerShell ユーザーに返します。次の例では、そのオブジェクトは 2 つの要素を持つ配列です。

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

 AWS Tools for PowerShell バージョン 4 では、 を指定`-Select *`して、SDK API コールによって返された完全な .NET レスポンスオブジェクトを返すことができます。

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

特定のネストされたプロパティへのパスを指定することもできます。次の例では、`S3Objects` 配列内の各要素の `Key` プロパティのみを返します。

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

状況によっては、コマンドレットパラメータを返すと便利です。そのためには、`-Select ^ParameterName` を使用します。この機能は、`-PassThru` パラメータに代わるものです。このパラメータはまだ使用可能ですが、非推奨です。

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

各コマンドレットの[参照トピック](https://docs.aws.amazon.com/powershell/v4/reference/)は、`-Select` パラメータをサポートしているかどうかを示します。

## より一貫した方法による出力内の項目数の制限
<a name="migrate-iterate"></a>

以前のバージョンの AWS Tools for PowerShell では、 `-MaxItems`パラメータを使用して、最終出力で返されるオブジェクトの最大数を指定できます。

この動作は `AWS.Tools` から削除されています。

この動作は AWSPowerShell.NetCore および AWSPowerShell で非推奨であり、今後のリリースでこれらのバージョンから削除されます。

基になるサービス API が `MaxItems` パラメータをサポートしている場合は、依然として使用可能であり、API が指定するとおりに機能します。ただし、コマンドレットの出力で返される項目の数を制限する追加動作はなくなりました。

最終出力で返される項目の数を制限するには、出力を `Select-Object` コマンドレットにパイプし、`-First n` パラメータを指定します。*n* は最終出力に含める項目の最大数です。

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

すべての AWS サービス`-MaxItems`が同じ方法でサポートされているわけではないため、この不整合や、ときに発生する予期しない結果を排除できます。また、`-MaxItems` と新しい [`-Select`](#migrate-select) パラメータと組み合わせて使用すると、混乱する結果が生じることがあります。

## ストリームパラメータの使用の容易化
<a name="migrate-streamparam"></a>

`Stream` タイプまたは `string` タイプのパラメータが、`string[]`、`FileInfo`、`byte[]` の各値を受け入れるようになりました。

次のいずれかの例を使用できます。

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

 AWS Tools for PowerShell は、UTF-8 エンコーディング`byte[]`を使用してすべての文字列を に変換します。

## プロパティ名によるパイプの拡張
<a name="migrate-pipes"></a>

ユーザーエクスペリエンスをより一貫させるために、*任意*のパラメータにプロパティ名を指定して、パイプライン入力を渡すことができるようになりました。

次の例では、ターゲットコマンドレットのパラメータ名と一致する名前を持つプロパティを持つカスタムオブジェクトを作成します。コマンドレットを実行すると、これらのプロパティが自動的にパラメータとして使用されます。

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

**注記**  
一部のプロパティは、 の以前のバージョンでこれをサポートしていました AWS Tools for PowerShell。バージョン 4 では、これを*すべて*のパラメータで有効にすることで、より一貫させています。

## 静的な共通パラメータ
<a name="migrate-staticcommonparams"></a>

バージョン 4.0 の一貫性を向上させるために AWS Tools for PowerShell、すべてのパラメータは静的です。

以前のバージョンの では AWS Tools for PowerShell、、`AccessKey`、`SecretKey`、 `ProfileName`などの一般的なパラメータは[動的](https://docs.microsoft.com/dotnet/api/system.management.automation.idynamicparameters)`Region`でしたが、他のすべてのパラメータは静的でした。この場合、PowerShell は動的パラメータの前に静的パラメータをバインドするため、問題が発生する可能性があります。たとえば、次のコマンドを実行したとします。

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

以前のバージョンの PowerShell では、値 `us-west-2` が `-Region` 動的パラメータではなく `-RegionName` 静的パラメータにバインドされていました。これも、ユーザーの混乱につながる可能性があります。

## `AWS.Tools` による必須パラメータの宣言と適用
<a name="migrate-mandatoryparams"></a>

`AWS.Tools.*` モジュールは、必須のコマンドレットパラメータを宣言して適用するようになりました。 AWS のサービスで API のパラメータが必須であると宣言されると、対応するコマンドレットパラメータを指定していない場合、PowerShell からパラメータを指定するよう求められます。これは `AWS.Tools` にのみ適用されます。下位互換性を確保するため、これは AWSPowerShell.NetCore や AWSPowerShell には適用されません。

## すべてのパラメータが NULL を使用可能
<a name="migrate-nullableparams"></a>

値タイプパラメータ (数値と日付) に `$null` に割り当てることができるようになりました。この変更は、既存のスクリプトには影響しません。これにより、必須パラメータを要求するプロンプトをバイパスできます。必須パラメータは、`AWS.Tools` でのみ要求されます。

バージョン 4 を使用して次の例を実行すると、各必須パラメータに「値」を指定するため、クライアント側の検証は効果的にバイパスされます。ただし、サービスが引き続きその情報を必要とするため、Amazon EC2 API AWS サービスコールは失敗します。

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

## 以前の非推奨機能の削除
<a name="migrate-removeprevdeprecated"></a>

の以前のリリースでは以下の機能は廃止 AWS Tools for PowerShell され、バージョン 4 では削除されました。
+ `Stop-EC2Instance` コマンドレットから `-Terminate` パラメータを削除しました。代わりに `Remove-EC2Instance` を使用します。
+ Clear-AWSCredential コマンドレットから `-ProfileName` パラメータを削除しました。代わりに `Remove-AWSCredentialProfile` を使用します。
+ `Import-EC2Instance` コマンドレットと `Import-EC2Volume` コマンドレットを削除しました。