第 5 版 (V5) AWS Tools for PowerShell 已發行!
如需有關中斷變更和遷移應用程式的資訊,請參閱遷移主題。
本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
從 AWS Tools for PowerShell 第 4 版遷移到第 5 版
AWS Tools for PowerShell 第 5 版 (V5) 有重大變更,這可能會導致您現有的指令碼停止運作。本主題說明 V5 中的重大變更,以及您可能需要從 V4 遷移環境或程式碼的可能工作。
如需 中值得注意變更的其他資訊, AWS Tools for PowerShell 另請參閱下列資源:
-
GitHub 中的 V5 開發追蹤器問題
。除了重大變更清單之外,請務必查看每個預覽的詳細資訊。
注意
由於 AWS Tools for PowerShell 依賴 AWS SDK for .NET,與開發套件 V4 相關的部分變更也可能影響適用於 PowerShell 的工具 V5。若要查看 的 V4 變更 AWS SDK for .NET,請參閱《 AWS SDK for .NET 開發人員指南》中的遷移資訊。
最低 PowerShell 版本
對於 AWS Tools for PowerShell名為 AWSPowerShell 的舊版、Windows 特定、單一、大型模組版本,模組的最低支援 PowerShell 版本已更新為 5.1。這是為了符合 .NET Framework 4.7.2 AWS SDK for .NET 的新最低版本。
如需舊版 AWSPowerShell 模組的詳細資訊,請參閱 在 Windows 上安裝。
安裝或更新 AWS.Tools V4
安裝或更新 AWS Tools for PowerShell稱為 的模組化版本時AWS.Tools, AWS.Tools Install-AWSToolsModule和 Update-AWSToolsModule cmdlet 預設會自然使用 第 5 版。如果您因為某些原因而需要安裝或更新 第 4 版AWS.Tools,您可以分別使用下列命令來執行此操作:
Install-AWSToolsModule -MaximumVersion '4.9.999' Update-AWSToolsModule -MaximumVersion '4.9.999'
如需安裝和更新 Tools for PowerShell 的詳細資訊,請參閱 開始使用
使用 CTRL+C 取消 cmdlet 執行
第 5 版 AWS Tools for PowerShell 可讓您使用鍵盤快速鍵,例如 CTRL+C 來取消 cmdlet 執行。
Nullable 值類型
採用自 的類型 AWS SDK for .NET 已更新為使用 SDK 新的 nullable 變更。例如, 類型的屬性int已變更為 Nullable[int]。此變更不會影響為 AWS cmdlet 指定輸入參數值的方式,因為這些值類型參數已建模為 nullable。不過,Cmdlet 輸出的 nullable 類型是一項重大變更,因為 Cmdlet 輸出中的屬性將包含 $null,而不是 類型的各種預設值。
下列範例示範 Tools for PowerShell V4 中的行為。在此範例中, MissingMeta 屬性設定為 0,因為這是類型 的預設值int。
# In V4PS >Get-S3ObjectMetadata -BucketNameamzn-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 V5PS >Get-S3ObjectMetadata -BucketNameamzn-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 依賴 AWS SDK for .NET,因此檢查類似的變更對 SDK 第 4 版的影響可能很有用。若要尋找此資訊,請參閱《 AWS SDK for .NET 開發人員指南》中的值類型遷移內容。
集合
某些 cmdlet 輸出已變更為傳回,$null而不是類型 List或 的空白集合Dictionary。如需詳細資訊,包括如何還原至舊版行為,請參閱《 AWS SDK for .NET 開發人員指南》中的集合的遷移內容。
DateTime 與 UTC DateTime
有些 V4 cmdlet 會定義已淘汰的 DateTime 參數,以及替代的 UTC DateTime 參數。這些過時的 DateTime 參數已從 V5 cmdlet 中移除,而且 UTC DateTime 參數的名稱已變更為非 UTC DateTime 參數的原始名稱。
以下是已實作此變更的 cmdlet 範例。
-
Get-ASScheduledAction(V4 cmdlet 和 V5 cmdlet):-
StartTime參數已移除,且UtcStartTime參數的名稱已變更為「StartTime」。 -
EndTime參數已移除,且UtcEndTime參數的名稱已變更為「EndTime」。
-
-
Copy-S3Object(V4 cmdlet 和 V5 cmdlet):-
ModifiedSinceDate參數已移除,且UtcModifiedSinceDate參數的名稱已變更為 "ModifiedSinceDate"。 -
UnmodifiedSinceDate參數已移除,且UtcUnmodifiedSinceDate參數的名稱已變更為「UnmodifiedSinceDate」。
-
以下是受此變更影響的 cmdlet 完整清單。
-
Get-CWMetricStatistic (別名 Get-CWMetricStatistics)
-
Get-RSClusterSnapshot (別名 Get-RSClusterSnapshots)
-
Get-RSEvent (別名 Get-RSEvents)
管道和 $AWSHistory
在 V4 AWS Tools for PowerShell 之前的 版本中,引進$AWSHistory了一個名為 的工作階段變數,可維護 AWS cmdlet 調用的記錄,以及每次調用時收到的服務回應。
在 Tools for PowerShell 的 V4 中,此工作階段變數已棄用,有利於 -Select * 參數和引數,可用於傳回整個服務回應。-Select * 參數說明於 管道、輸出和反覆運算。
在 Tools for PowerShell 的 V5 中,$AWSHistory工作階段變數已完全移除。因此, Clear-AWSHistory和 Set-AWSHistoryConfiguration cmdlet 也已移除。
-PassThru 參數
-PassThru 參數已移除。當 cmdlet 預設不會傳回任何輸出時,使用者可以使用 請求傳回的參數值-Select ^ParameterName。如需其他詳細資訊和範例,請參閱 V5 的 AWS Tools for PowerShell 部落格文章預覽 1
有些 DynamoDB cmdlet 已移動並重新命名
Get-DDBStream 和 Get-DDBStreamList cmdlet 已從 DynamoDBV2 模組移至名為 DynamoDBStreams 的新模組。它們也分別重新命名為 Get-DDBSStream 和 Get-DDBSStreamList。
記錄敏感資訊
記錄行為已變更,因此潛在敏感資訊不太可能包含在 cmdlet 輸出中,尤其是在 CI/CD 情況下。如需如何還原至 V4 行為的詳細資訊和指示,請參閱 記錄敏感資訊。
憑證和設定檔解析
AWS Tools for PowerShell 已更新為在解析 cmdlet 的登入資料時使用特定環境變數:AWS_PROFILE、AWS_SECRET_ACCESS_KEY、 AWS_ACCESS_KEY_ID和 AWS_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 cmdlet 和 V5 cmdlet)。
如需自動反覆運算的詳細資訊,請參閱 透過分頁資料反覆運算。
S3 cmdlet 已棄用並取代
對於 Amazon S3,Get-S3ACL 和 Set-S3ACL cmdlet 已棄用。請改用下列新的 cmdlet:Get-S3BucketACL、Set-S3BucketACL、Get-S3ObjectACL、Set-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-SSMCommandInvocationDetail和 Invoke-LMFunction)。
如果您需要複寫LoggedAt輸出屬性提供的資訊,您可以在指令碼中包含類似以下內容的內容:
$loggedAt = (Get-Date).ToUniversalTime().ToString('s')
已移除的程式設計元素
已從 Tools for PowerShell 的 V5 中移除許多程式設計元素。如果先前尚未涵蓋這些項目,以及您可以採取以適應其移除的潛在步驟,則會列出如下。
-
Invoke-LMFunctionAsyncCmdlet。 -
Get-EC2ImageByNameCmdlet。請改用 Get-SSMLatestEC2Image cmdlet。 -
來自 Write-S3Object cmdlet 的
CalculateContentMD5Header參數。