簡體   English   中英

在 foreach 循環中執行 powershell 命令

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM