[英]Execute powershell command in foreach loop
我正在嘗試在 Powershell 中執行 aws s3 cp 命令。 我有一個文件列表,我在下面的類似數組中定義了這些文件。
$filearray = ("file1.txt", "file2.txt", "file3.txt", "file4.txt", "file5.txt")
現在,當我嘗試使用 aws s3 cp 命令從 s3 復制這些文件時,沒有任何效果。
$filearray | foreach { "aws s3 cp s3://<bucket_name/path_to_file/$_ . --sse aws:kms --sse-kms-key-id 12345-abcxzd" }
我也在下面嘗試過。 但它沒有用。 有人可以指出我正在做的錯誤嗎?
foreach ($element in $filearray) { "aws s3 cp s3://<bucket_name/path_to_file/$element . --sse aws:kms --sse-kms-key-id 12345-abcxzd" }
現在我已經將變量添加到我的 aws 命令中,當循環執行時,它也將如下所示。
$kms_key_option="--sse aws:kms --sse-kms-key-id 12345-abcxzd"
$s3_location="s3://<bucket_name/path_to_file/"
foreach ($element in $filearray) { & aws s3 cp $s3_location/$element $current_location $kms_key_option }
但這有一個問題。 只有命令塊中的前 2 個變量作為變量工作,其余 2 不作為變量工作。 即$current_location $kms_key_option
所以問題陳述在這里有一點變化。
注意:我在我的 Windows 機器上安裝了 aws cli,它可以使用普通命令,但在 foreach 循環中不起作用。
您正在尋找 & 運算符。
foreach ($element in $filearray) { & "aws s3 cp s3://<bucket_name/path_to_file/$($element) . --sse aws:kms --sse-kms-key-id 12345-abcxzd" }
我會說在 foreach 循環中沒有引號的情況下嘗試一下?
foreach ($element in $filearray) {
aws s3 cp s3://<bucket_name/path_to_file/$element . --sse aws:kms --sse-kms-key-id 12345-abcxzd
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.