繁体   English   中英

需要使用 PowerShell 编辑命令以删除 S3 存储桶中超过 90 天的文件(90 天而不是指定日期)

[英]Need to Edit command to Delete files in S3 bucket older than 90 days using PowerShell(90days instead of specifying date)

$bucketname = "bucketname" $key = aws s3api list-object-versions --bucket $bucketname --output json --query 'Versions[?LastModified<= 2022-08-26 ].{VID:VersionId, Obj:Key }' | ConvertFrom-Json Write-host "Removing desired Objects From: $bucketname" -foregroundcolor red Foreach ($output in $key) { $delete = aws s3api delete-object --bucket $bucketname --key ($output).Obj - -version-id ($output).VID --输出文本 $output.Obj }

我没有 S3 来测试代码,但它应该满足您的需求。

$bucketname = "aws-a0189-use1-00-d-s3b-ia-test"
$date = (Get-Date).adddays(-90).ToString("yyyy-MM-dd") # 90 days ago
$query = 'Versions[?LastModified<=`' + $date + '`].{VID:VersionId, Obj:Key}'
$key = aws s3api list-object-versions --bucket $bucketname --output json --query $query  | ConvertFrom-Json
Write-host "Removing desired Objects From: $bucketname" -foregroundcolor red
Foreach ($output in $key)
    {
       $delete =  aws s3api delete-object --bucket $bucketname --key ($output).Obj --version-id  ($output).VID --output text
       $output.Obj 
    }

在我的代码中,我添加了第二行和第三行。 第二行 ("$date...") 获取几天前所需格式的日期 - 在本例中为 90 天。 第三行定义查询并在查询中插入日期。

第 4 行稍作更改,以包含 $query 变量

$bucketname = "bucket name" $date = (Get-Date).adddays(-2).ToString("yyyy-MM-dd") # 2 天前 $query = 'Versions[?LastModified<= ' + $date + ' ].{VID:VersionId, Obj:Key}' $key = aws s3api list-object-versions --bucket $bucketname --output json --query $query | ConvertFrom-Json Write-host "Removing desired Objects From: $bucketname" -foregroundcolor red Foreach ($output in $key) { $delete = aws s3api delete-object --bucket $bucketname --key ($output).Obj - -输出文本 $output.Obj }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM