Get-AzureStorageFile未设置LastModified属性

时间:2017-11-21 15:52:21

标签: powershell azure azure-storage-files

当尝试从Azure共享文件目录中获取文件时,我使用的是类似下面的PowerShell代码(类似于docs中的示例)

$file = Get-AzureStorageFile -Share $fileShare -Path "tolearn\doc" | Get-AzureStorageFile | Where-Object {$_.GetType().Name -eq "CloudFile"} 

例如,假设我们在'doc'文件夹下有一个子文件夹和两个文件。 上面的代码将返回这两个文件,这是预期的。

然而 LastModified 属性仍为'null',就像图片上显示的那样(以及其他属性)

enter image description here

我需要 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文件共享中删除它们?

2 个答案:

答案 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()

根据以下提供的信息: Azure CloubdBlob's Properties.Length returns 0