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



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

$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 text
$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天。第三行定义查询并在查询中插入日期。

第四行更改了一点,包括$query变量

$bucketname="桶名称";$date=(获取日期(.adddays(-2(.ToString("yyyy-MM-dd"(#2天前$query='Versions[?LastModified<=' + $date + ']。{VID:VersionId,Obj:Key}'$key=aws s3api列出对象版本--bucket$bucketname--输出json--query$query | ConvertFrom json写入主机";从$bucketname中删除所需对象-前景颜色红色Foreach($key中的$output({$delete=aws s3api delete object--bucket$bucketname--key($output(.Obj--输出文本$output.Obj}

最新更新