從 AWS Tools for PowerShell 第 4 版遷移到第 5 版 - AWS Tools for PowerShell (第 5 版)

第 5 版 (V5) AWS Tools for PowerShell 已發行!

如需有關中斷變更和遷移應用程式的資訊,請參閱遷移主題

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

從 AWS Tools for PowerShell 第 4 版遷移到第 5 版

AWS Tools for PowerShell 第 5 版 (V5) 有重大變更,這可能會導致您現有的指令碼停止運作。本主題說明 V5 中的重大變更,以及從 V4 遷移環境或程式碼時可能需要執行的可能工作。

如需 中值得注意變更的其他資訊, AWS Tools for PowerShell 另請參閱下列資源:

注意

由於 AWS Tools for PowerShell 依賴 適用於 .NET 的 AWS SDK,與開發套件 V4 相關的部分變更也可能影響適用於 PowerShell 的工具 V5。若要查看 的 V4 變更 適用於 .NET 的 AWS SDK,請參閱《 適用於 .NET 的 AWS SDK 開發人員指南》中的遷移資訊

最低 PowerShell 版本

對於 AWS Tools for PowerShell名為 AWSPowerShell 的舊版、Windows 特定、單一、大型模組版本,模組的最低支援 PowerShell 版本已更新為 5.1。這是為了符合 .NET Framework 4.7.2 適用於 .NET 的 AWS SDK 的新最低版本。

如需舊版 AWSPowerShell 模組的詳細資訊,請參閱 在 Windows 上安裝

安裝或更新 AWS.Tools V4

安裝或更新 AWS Tools for PowerShell稱為 的模組化版本時AWS.ToolsAWS.Tools Install-AWSToolsModuleUpdate-AWSToolsModule cmdlet 預設會自然使用 第 5 版。如果您因為某些原因需要安裝或更新 第 4 版AWS.Tools,您可以分別使用下列命令來執行此操作:

Install-AWSToolsModule -MaximumVersion '4.9.999' Update-AWSToolsModule -MaximumVersion '4.9.999'

如需安裝和更新 Tools for PowerShell 的詳細資訊,請參閱 開始使用

使用 CTRL+C 和 CMD+C 取消 cmdlet 執行

第 5 版 AWS Tools for PowerShell 可讓您使用鍵盤快速鍵,例如 CTRL+C 或 CMD+C 來取消 cmdlet 執行。

Nullable 值類型

採用自 的類型 適用於 .NET 的 AWS SDK 已更新為使用 SDK 新的 nullable 變更。例如, 類型的屬性int已變更為 Nullable[int]。此變更不會影響為 AWS cmdlet 指定輸入參數值的方式,因為這些值類型參數已建模為 nullable。不過,Cmdlet 輸出的 nullable 類型是一項重大變更,因為 Cmdlet 輸出內的屬性將包含 $null,而非 類型的各種預設值。

下列範例示範 Tools for PowerShell V4 中的行為。在此範例中, MissingMeta 屬性設定為 0,因為這是 類型的預設值int

# In V4 PS > Get-S3ObjectMetadata -BucketName amzn-s3-demo-bucket -Key 'test' | >> Select LastModified, MissingMeta, ObjectLockRetainUntilDate, BucketKeyEnabled LastModified MissingMeta ObjectLockRetainUntilDate BucketKeyEnabled ------------ ----------- ------------------------- ---------------- 8/29/2023 10:20:44 PM 0 1/1/0001 12:00:00 AM

下列範例示範 Tools for PowerShell 的 V5 中的行為。在此範例中, MissingMeta 屬性設定為 $null

# In V5 PS > Get-S3ObjectMetadata -BucketName amzn-s3-demo-bucket -Key 'test' | >> Select LastModified, MissingMeta, ObjectLockRetainUntilDate, BucketKeyEnabled LastModified MissingMeta ObjectLockRetainUntilDate BucketKeyEnabled ------------ ----------- ------------------------- ---------------- 8/29/2023 10:20:44 PM

在大多數情況下,不需要變更程式碼,因為 PowerShell 具有從 Null 值類型隱含轉換為非 Null 值類型。不過,這是比較邏輯程式碼的重大變更,會明確檢查 nullable 值類型的預設值。必須修改檢查非 Null 類型的預設值的比較邏輯,以檢查 $null

對於其中一些類型,以下範例示範如何更新為 V4 編寫的程式碼,以檢查是否未傳回任何內容:

#Type int: # In V4, if you were checking whether an int is 0... if($s3Metadata.MissingMeta -eq 0){} # In V5, check if the int is null instead: if($s3Metadata.MissingMeta -eq $null) {} # Type datetime: # In V4, if you were checking whether a datetime is '0001-01-01'... if($s3Metadata.ObjectLockRetainUntilDate -eq '0001-01-01'){} # In V5, check if the datetime is null instead: if($s3Metadata.ObjectLockRetainUntilDate -eq $null){} # Type boolean: # In V4, if you were checking whether a boolean is $false... if($s3Metadata.BucketKeyEnabled -eq $false){} # In V5, check if the boolean is null instead: if($s3Metadata.BucketKeyEnabled -eq $null)

由於 AWS Tools for PowerShell 依賴 適用於 .NET 的 AWS SDK,因此檢查類似的變更對 SDK 第 4 版的影響可能很有用。若要尋找此資訊,請參閱《 適用於 .NET 的 AWS SDK 開發人員指南》中的值類型遷移內容。

集合

某些 cmdlet 輸出已變更為傳回,$null而不是類型 List或 的空白集合Dictionary。如需詳細資訊,包括如何還原至舊版行為,請參閱《 適用於 .NET 的 AWS SDK 開發人員指南》中的集合的遷移內容。

DateTime 與 UTC DateTime

有些 V4 cmdlet 會定義已淘汰的 DateTime 參數,以及替代的 UTC DateTime 參數。這些過時的 DateTime 參數已從 V5 cmdlet 中移除,UTC DateTime 參數的名稱已變更為非 UTC DateTime 參數的原始名稱。

以下是已實作此變更之 cmdlet 的一些範例。

  • Get-ASScheduledAction (V4 cmdletV5 cmdlet):

    • StartTime 參數已移除,且UtcStartTime參數的名稱已變更為「StartTime」。

    • EndTime 參數已移除,且UtcEndTime參數的名稱已變更為「EndTime」。

  • Copy-S3Object (V4 cmdletV5 cmdlet):

    • ModifiedSinceDate 參數已移除,且UtcModifiedSinceDate參數的名稱已變更為 "ModifiedSinceDate"。

    • UnmodifiedSinceDate 參數已移除,且UtcUnmodifiedSinceDate參數的名稱已變更為「UnmodifiedSinceDate」。

以下是受此變更影響的 cmdlet 完整清單。

管道和 $AWSHistory

在 V4 AWS Tools for PowerShell 之前的 版本中,$AWSHistory引進了一個名為 的工作階段變數,可維護 AWS cmdlet 叫用的記錄,以及每次叫用時收到的服務回應。

在 Tools for PowerShell 的 V4 中,此工作階段變數已棄用,有利於 -Select * 參數和引數,可用於傳回整個服務回應。-Select * 參數說明於 管道、輸出和反覆運算

在 Tools for PowerShell 的 V5 中,$AWSHistory工作階段變數已完全移除。因此, Clear-AWSHistorySet-AWSHistoryConfiguration cmdlet 也已移除。

-PassThru 參數

-PassThru 參數已移除。當 cmdlet 預設不會傳回任何輸出時,使用者可以使用 請求傳回的參數值-Select ^ParameterName。如需其他詳細資訊和範例,請參閱 V5 的 AWS Tools for PowerShell 部落格文章預覽 1

有些 DynamoDB cmdlet 已移動並重新命名

Get-DDBStreamGet-DDBStreamList cmdlet 已從 DynamoDBV2 模組移至名為 DynamoDBStreams 的新模組。它們也分別重新命名為 Get-DDBSStreamGet-DDBSStreamList

記錄敏感資訊

記錄行為已變更,因此潛在敏感資訊不太可能包含在 cmdlet 輸出中,尤其是在 CI/CD 情況下。如需如何還原至 V4 行為的詳細資訊和指示,請參閱 記錄敏感資訊

憑證和設定檔解析

AWS Tools for PowerShell 已更新為在解析 cmdlet 的登入資料時使用特定環境變數:AWS_PROFILEAWS_SECRET_ACCESS_KEYAWS_ACCESS_KEY_IDAWS_SESSION_TOKEN。此外,登入資料和設定檔的解析順序有一些變更。如需詳細資訊,請參閱憑證和設定檔解析

登入資料錯誤訊息

如果無法取得適當的登入資料, AWS Tools for PowerShell 會傳回的錯誤訊息已變更。

在工具的 v4 中,訊息類似如下:

Get-SFNExecutionList -Region us-west-2 Get-SFNExecutionList: No credentials specified or obtained from persisted/shell defaults.

在工具的 V5 中,訊息與以下內容類似:

Get-SFNExecutionList -Region us-west-2 Get-SFNExecutionList: Failed to resolve AWS credentials. The credential providers used to search for credentials returned the following errors: ... <list of specific exceptions>

一致的自動反覆運算

根據預設,所有分頁 cmdlet 都已更新為自動重複所有資料。您可以使用 Set-AWSAutoIterationMode cmdlet 還原此行為。如果您執行 Set-AWSAutoIterationMode -IterationMode v4,在 v4 中自動反覆運算的操作仍會自動反覆運算,但其餘操作則會還原為手動反覆運算。若要判斷設定為何種模式自動反覆運算,請使用 Get-AWSAutoIterationMode cmdlet。

若要查看以這種方式更新的 cmdlet 範例,請參閱 Get-CWLLogEvent cmdlet (V4 cmdletV5 cmdlet)。

如需自動反覆運算的詳細資訊,請參閱 透過分頁資料反覆運算

S3 cmdlet 已棄用並取代

對於 Amazon S3,Get-S3ACLSet-S3ACL cmdlet 已棄用。請改用下列新的 cmdlet:Get-S3BucketACLSet-S3BucketACLGet-S3ObjectACLSet-S3ObjectACL

清理和修剪 S3 金鑰參數

某些 Amazon S3 cmdlet 接受名為 Key和 的參數KeyPrefix。的 V4 AWS Tools for PowerShell 會以下列方式清理和修剪這些參數:移除前導空格、斜線 ("/") 和反斜線 ("\")、將所有其他斜線轉換為前導斜線,以及移除後導空格。在 Tools for PowerShell 的 V5 中,這不再是預設行為。您可以透過指定 -EnableLegacyKeyCleaning 參數來還原至此行為。

此資訊適用於下列 cmdlet:

互動式工作階段功能

互動式工作階段功能已新增至 Start-SSMSession Cmdlet,這符合 AWS CLI 行為。例如:

Start-SSMSession -Target 'i-1234567890abcdef0'

如果您需要舊版行為,請在 Start-SSMSession命令中包含 -DisablePluginInvocation 參數。

CloudWatch 警示

Get-CWAlarm cmdlet 已更新,預設會傳回指標和複合 Amazon CloudWatch 警示。若要將輸出限制為指標或複合警示,您必須Get-CWAlarm -AlarmType 'CompositeAlarms'分別指定 -AlarmType 參數: Get-CWAlarm -AlarmType 'MetricAlarms'或 。

LitJson

AWS Tools for PowerShell 已更新為使用 System.Text.Json而非LitJson序列化。 LitJson 已從工具的 V5 中移除。

LoggedAt 輸出屬性

LoggedAt 輸出屬性已移除。在工具的 V4 中,此屬性預設為在某些 cmdlet 上傳回 (例如 Get-SSMCommandInvocationDetailInvoke-LMFunction)。

如果您需要複寫LoggedAt輸出屬性提供的資訊,您可以在指令碼中包含類似以下內容的內容:

$loggedAt = (Get-Date).ToUniversalTime().ToString('s')

已移除的程式設計元素

已從 Tools for PowerShell 的 V5 中移除許多程式設計元素。如果先前尚未涵蓋這些項目,以及您可以採取以適應其移除的潛在步驟,則列出如下。