#azure #powershell #azure-storage #azure-powershell #azure-files
Вопрос:
Я пытаюсь удалить файлы из хранилища файлов Azure, которым 30 1 в первый день месяца или старше. У меня есть базовый список и скрипт удаления, который работает. Мой главный вопрос заключается в том, как я могу выполнить расчет для оператора if старше, чем?
$resourceGroupName=""
$storageAccName=""
$fileShareName=""
$directoryPath=""
## Function to Lists directories and files
Function GetFiles
{
Write-Host -ForegroundColor Green "Lists directories and files.."
## Get the storage account context
$ctx=(Get-AzStorageAccount -ResourceGroupName $resourceGroupName -Name $storageAccName).Context
## List directories
$directories=Get-AZStorageFile -Context $ctx -ShareName $fileShareName
## Loop through directories
foreach($directory in $directories)
{
write-host -ForegroundColor Magenta " Directory Name: " $directory.Name
$files=Get-AZStorageFile -Context $ctx -ShareName $fileShareName -Path $directory.Name | Get-AZStorageFile
## Loop through all files and display
foreach ($file in $files)
{
write-host -ForegroundColor Yellow $file.Name
}
}
}
GetFiles
$context = ""
Remove-AzStorageFile -ShareName "name" -Path "path" -Context $context
Get-ChildItem -Path $path -Recurse -Force | Where-Object { !$_.PSIsContainer -and $_.CreationTime -lt $limit } | Remove-Item -Force
Комментарии:
1. Вы всегда можете получить первое число месяца с
[datetime]::Today.AddDays(([datetime]::Today.Day - 1)*-1)
помощью . Я не знаком с термином «30 1». Вы просто ищете файлы, которым больше месяца? Может$file.properties.changetime -lt [datetime]::Today.AddDays(([datetime]::Today.Day - 1)*-1).addmonths(-1)
быть, или что-то в этом роде?
Ответ №1:
У нас есть команда командной строки AZ для удаления файлов старше XX дней.
// Блок удаления старых файлов
$filelist = az storage file list -s $myshare --account-name $accountName --account-key $accountKey
$fileArray = $filelist | ConvertFrom-Json
foreach ($file in $fileArray | Where-Object {$_.properties.lastModified.DateTime -lt ((Get-Date).AddDays(-31))})
{
$removefile = $file.name
if ($removefile -ne $null)
{
Write-Host "Removing file $removefile"
az storage file delete -s $myshare -p $removefile
}
}
Ссылка на поток So: Используйте интерфейс командной строки Azure для удаления старых файлов в общем хранилище Azure — Переполнение стека