我有以下基本 AWS powershell 腳本下載 S3 存盤桶檔案夾的所有內容。
Get-S3Object -BucketName $s3BucketName -keyPrefix $keyPrefix | Read-S3Object -Folder "C:\temp\Events\"
不幸的是,它運行太慢,因為該檔案夾包含數百個小檔案,我需要構建并行下載。
我嘗試使用以下腳本使用 foreach-object -parallel
$S3object = Get-S3Object -BucketName $s3BucketName -keyPrefix $keyPrefix
$S3object | foreach-object -parallel { Read-S3Object -Key $_ -Folder "C:\temp\Events\" }
但是得到以下錯誤
[錯誤] 錯誤:無法使用指定的命名引數決議引數集。發出的一個或多個引數不能一起使用或提供的引數數量不足。例外:型別:System.Management.Automation.ParameterBindingExceptionMessage:無法使用指定的命名引數決議引數集。發出的一個或多個引數不能一起使用或提供的引數數量不足。ErrorId:AmbiguousParameterSetLine:1Offset:2CommandInvocation:MyCommand:Read-S3ObjectBoundParameters:Comparer:System.OrdinalIgnoreCaseComparerCount:2Keys:Length:3Length:6Values:Length:24Length: 25SyncRoot :Comparer : System.OrdinalIgnoreCaseComparerCount : 2Keys :Length : 3Length :
當我寫托管 $S3object 的內容時,我得到了這個:
資訊:Amazon.S3.Model.S3Object Amazon.S3.Model.S3Object Amazon.S3.Model.S3Object Amazon.S3.Model.S3Object
我究竟做錯了什么?我是否應該使用另一種方法,例如作業,如果是,如何?
謝謝
uj5u.com熱心網友回復:
在您的-Parallel腳本塊中,通過 pipeline$_提供輸入,類似于您的第一個命令在沒有并行性的情況下執行的操作:
$S3object |
ForEach-Object -Parallel { $_ | Read-S3Object -Folder "C:\temp\Events\" }
或者,根據檔案判斷,您可以使用-S3Object而不是-Key.
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/482356.html
標籤:亚马逊网络服务 电源外壳 亚马逊-s3 powershell-7.0
