Truncate azure storage file directory/delete azure storage file using wildcard 后缀

Truncate azure storage file directory/delete azure storage file using wildcard suffix

我正在编写一个 Powershell 脚本来启用每月清理 azure 文件共享中的文件。

理想情况下,我希望一个脚本只截断 directory/file 位置。 但是会解决单独删除每个文件的问题。

每月加载大约 20 个文件,每个文件都有一个唯一的名称和一个日期时间戳作为文件名中包含的后缀。例如filename_20190121123515

我已经设法使用全名删除了一个文件,但需要为日期时间后缀使用通配符值。

我想要实现的目标的正确语法是什么?或者我将如何截断整个文件夹?

$context = New-AzStorageContext -StorageAccountName "AccountName" -SasToken 
"?sv=2015-12-11&si=bss-15D97F9B09D&sr=s&sig=xxxxxxxxxxxxxxxxxxxxx" 
Remove-AzStorageFile -ShareName "bss" -Path 
"root/Temp_Clean_up_test_Folder/FileName_%%%%%%%%%%%%%%.csv" -Context 
$context

$context = New-AzStorageContext -StorageAccountName "AccountName" -SasToken 
"?sv=2015-12-11&si=bss-15D97F9B09D&sr=s&sig=xxxxxxxxxxxxxxxxxxxxx" 
Remove-AzStorageFile -ShareName "bss" -Path 
"root/Temp_Clean_up_test_Folder/FileName_*" -Context $context

Remove-AzStorageFile cmdlet 不支持通配符,需要使用循环方式逐一删除文件。

示例代码如下:

$context = New-AzStorageContext -StorageAccountName "AccountName" -SasToken "xxx"

# Since the file name has date, you can specify which date to be deleted.
# In this sample, we try to delete the files' name contains 201901

$pattern ="201901"

# iterate all the files, and delete    
Get-AzStorageFile -ShareName "testfolder" -Path "t1/t1sub" -Context $context | Get-AzStorageFile | where {($_.GetType().Name
 -eq "CloudFile") -and ($_.Name -like "*$pattern*")} | Remove-AzStorageFile

删除前:

删除后(名称中含有"201901"的文件全部删除):