如何在PowerShell中对多个文件执行操作?

时间:2016-04-09 04:52:29

标签: powershell

这就是我现在所拥有的:

Write-S3Object `
   -BucketName "user-staging" `
   -Key  "app/access/partials/webapi.html" `
   -File "app/access/partials/webapi.html" `
   -HeaderCollection @{"Cache-Control" = "public,max-age=600"} 
Write-S3Object `
   -BucketName "user-staging" `
   -Key  "app/auth/partials/agreement_policy.html" `
   -File "app/auth/partials/agreement_policy.html" `
   -HeaderCollection @{"Cache-Control" = "public,max-age=600"}

我想在partials目录中发布一些但不是全部的文件。为此,我现在逐个列出每个文件。

我知道我可以使用这段代码:

   Get-ChildItem . -Recurse | Foreach-Object{

但是会列出目录中的所有文件。

是否有某种方法可以将文件名放在数组中并为数组的每个元素执行Write-S3Object?

1 个答案:

答案 0 :(得分:0)

Foreach-Object是针对此类问题而制作的。

$array = @()
$array += "path/file1"
$array += "path/file2"
$array += "path/file3"

$array | foreach {
  Write-S3Object `
     -BucketName "user-staging" `
     -Key  $_ `
     -File $_ `
     -HeaderCollection @{"Cache-Control" = "public,max-age=600"} 
}

创建数组的更紧凑的形式只是$array = @("path/file1", "path/file2", etc)

您还可以通过为数组分配已过滤的Get-ChildItem

的输出来填充数组
$array = gci '*.txt' -exclude 'not-this-one.*'