Azure文件存储-列出目录内容-读取文件名

时间:2018-10-19 14:14:17

标签: .net azure powershell cloud

这听起来像是最简单的任务,我要做的就是在Azure文件存储的“共享”下列出子目录的内容,我设法获得了“ CloudFileDirectory ”对象,但是,努力读取其内容。

我只能在PowerShell中编写此解决方案,因此请使用称为“ AzureRM”的PS模块,如下所示:

# Install AzureRM module & check if installed:
Install-Module -Name "AzureRM"
Get-Module -Name AzureRM -List | select Name,Version

# Import module in session:
Import-Module AzureRM

# Connect/sign-on to Azure account (interactive login):
Connect-AzureRmAccount

# Get reference to Storage account:
$storageAcct = Get-AzureRmStorageAccount -ResourceGroupName "myRSG" -AccountName "myCloudStorage"

#Get directory object:
$objDir = Get-AzureStorageFile -Context $storageAcct.Context -ShareName "myShare" -Path "myFolder1"

在这里,我坚持使用这个( $ objDir )对象,该对象基本上是 WindowsAzure.Storage.File.CloudFileDirectory 对象,但不像通常的目录对象那样工作,因为它似乎不包含Collection(请参见下面的输出):

$objDir.GetType().FullName           #-> "WindowsAzure.Storage.File.CloudFileDirectory" object
$objDir | % {$_.GetType().FullName}  #-> "WindowsAzure.Storage.File.CloudFileDirectory" object

基本上,我需要读取此子文件夹中的文件名。我将不胜感激。 TIA。

1 个答案:

答案 0 :(得分:1)

(根据Gaurav的评论)附加了 | Get-AzureStorageFile 解决了该问题并返回了预期的输出,即,我现在正在获取一个集合/数组( System.Object [] ),我对其进行迭代以获取单个对象文件名及其大小,这是我现在得到的代码+输出和对象类型:

#Get directory object:
$objDir = Get-AzureStorageFile -Context $storageAcct.Context -ShareName "myShare" -Path "myFolder1" | Get-AzureStorageFile
$objDir.GetType().FullName            #-> "System.Object[]" object
$objDir  | % {$_.GetType().FullName}  #-> "WindowsAzure.Storage.File.CloudFile / CloudDirectory" objects
$objDir  | % {$_} | select Name,StreamMinimumReadSizeInBytes

输出

Name      StreamMinimumReadSizeInBytes
----      ----------------------------
file.txt                       4194304
file1.txt                      4194304
foo.txt                        4194304