当尝试从Azure共享文件目录中获取文件时,我使用的是类似下面的PowerShell代码(类似于docs中的示例)
$file = Get-AzureStorageFile -Share $fileShare -Path "tolearn\doc" | Get-AzureStorageFile | Where-Object {$_.GetType().Name -eq "CloudFile"}
例如,假设我们在'doc'文件夹下有一个子文件夹和两个文件。 上面的代码将返回这两个文件,这是预期的。
然而 LastModified 属性仍为'null',就像图片上显示的那样(以及其他属性)
我需要 LastModified 属性,以便过滤早于特定日期的文件,以便删除它们。但是,由于此值为null,因此无法实现。 关于如何做到这一点的任何想法非常感谢。 执行此操作的代码应如下所示:
$file = Get-AzureStorageFile -Share $fileShare -Path "tolearn\doc" | Get-AzureStorageFile | Where-Object { $_.GetType().Name -eq "CloudFile" -and $currentTime -gt $_.Properties.LastModified.AddMinutes($offset)}
请注意,如果我查询这样的文件,例如
$file = Get-AzureStorageFile -Share $fileShare -Path "tolearn\doc\Word2003.doc"
LastModified 属性将被正确设置。 因此,看起来对 Get-AzureStorageFile 方法的管道调用不会将这些属性设置为返回的文件或目录。
我的方法是不是很糟糕,有没有更好的方法来过滤文件,以便从Azure文件共享中删除它们?
答案 0 :(得分:2)
因此,它看起来像是对Get-AzureStorageFile方法的管道调用 不会将这些属性设置为返回的文件或目录。
我得到与你相同的结果,无法获得LastModified
vaule。
作为解决方法,我们可以使用foreach
获取每个文件的Properties.LastModified
,如下所示:
PS C:\Users\jason> $file = Get-AzureStorageFile -Share $share -Path "jason"
PS C:\Users\jason> $c = $file | Get-AzureStorageFile
PS C:\Users\jason> $list = $c.name
PS C:\Users\jason> $list
04.PNG
08.PNG
test3
test4
PS C:\Users\jason> foreach($a in $list){$path = 'jason/'+$a ; $b = Get-AzureStorageFile -ShareName jasonshare1 -Path $path -Context $ctx; $b.Properties.LastModified }
DateTime : 11/22/2017 2:31:13 AM
UtcDateTime : 11/22/2017 2:31:13 AM
LocalDateTime : 11/22/2017 10:31:13 AM
Date : 11/22/2017 12:00:00 AM
Day : 22
DayOfWeek : Wednesday
DayOfYear : 326
Hour : 2
Millisecond : 0
Minute : 31
Month : 11
Offset : 00:00:00
Second : 13
Ticks : 636469146730000000
UtcTicks : 636469146730000000
TimeOfDay : 02:31:13
Year : 2017
DateTime : 11/22/2017 2:31:14 AM
答案 1 :(得分:0)
设置您需要调用的文件的属性:
val arrayList = new ArrayList(javaList)
这是一个简短的例子:
$file.FetchAttributes()